DE60118945T2 - Verfahren und vorrichtung für flexible datentypen - Google Patents

Verfahren und vorrichtung für flexible datentypen Download PDF

Info

Publication number
DE60118945T2
DE60118945T2 DE60118945T DE60118945T DE60118945T2 DE 60118945 T2 DE60118945 T2 DE 60118945T2 DE 60118945 T DE60118945 T DE 60118945T DE 60118945 T DE60118945 T DE 60118945T DE 60118945 T2 DE60118945 T2 DE 60118945T2
Authority
DE
Germany
Prior art keywords
operand
data type
data
bit
signal processing
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
DE60118945T
Other languages
English (en)
Other versions
DE60118945D1 (de
Inventor
Kumar Palo Alto GANAPATHY
Ruban Dublin KANAPATHIPILLAI
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of DE60118945D1 publication Critical patent/DE60118945D1/de
Publication of DE60118945T2 publication Critical patent/DE60118945T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/4806Computations with complex numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/30101Special purpose registers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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
    • 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/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5318Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with column wise addition of partial products, e.g. using Wallace tree, Dadda 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5332Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by skipping over strings of zeroes or ones, e.g. using the Booth Algorithm

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft allgemein Prozessoren mit Instruction Set Architectures (ISA). Im Besonderen betrifft die vorliegende Erfindung Operanden-Datentypen für digitale Signalprozessoren.
  • STAND DER TECHNIK
  • Zur Verarbeitung von Daten in einer Rechenvorrichtung wird ein Befehlssatz bzw. ein Befehlsvorrat definiert. Ein Befehlssatz mit einem oder mehreren Befehlen ist für Rechenvorrichtungen wie Mikroprozessoren, Computer oder Ein-Chip-DSP-Vorrichtungen erforderlich. Bei der Festlegung eines Befehlssatzes für eine Rechenvorrichtung wird für gewöhnlich vorab der Datentyp der berechneten Operanden auf der Basis der zu verwendenden numerischen Darstellung definiert sowie dem Typ der bereitgestellten Hardware. Der Datentyp der Instruction Set Architektur (ISA) wird im Wesentlichen dadurch definiert, wie und welchen Typ numerischer Daten die Rechenvorrichtung verarbeitet.
  • Die für Datentypen verwendete numerische Darstellung weist die Basis einer Zahl auf, ob sie codiert wird oder nicht (binär codiert, wie zum Beispiel binär codierte Dezimalziffern) sowie das numerische Format Die normalerweise in Computern eingesetzten Basen sind binär oder Basis zwei. Als andere Basen können in Computern eine oktale Basis (Basis acht), eine dezimale Basis (Basis zehn) und eine hexadezimale Basis (Basis sechzehn) eingesetzt werden. Wenn eine andere Basis als Basis zwei ausgewählt wird, muss sie normalerweise binär codiert sein, damit sie von einer digitalen Logik erkannt werden kann. Wenn zum Beispiel eine Basis von 10 eingesetzt wird, so werden die Zahlen unter Verwendung einer binären Zahl von vier Bit binär codiert, wobei dies als binär codierte Binärziffer (BCD als englische Abkürzung von Binary Coded Decimal) bezeichnet wird.
  • Das numerische Format ist der Tatsache zugeordnet, ob die Zahl eine Festpunkt- oder Gleitpunkt- bzw. Gleitkommadarstellung, ein ganzzahliges oder ein gebrochenes Format und deren zugeordnete Darstellungen, ein normalisiertes oder ein nicht normalisiertes Format aufweist und ob die Bits, welche die Zahl darstellen, gepackt oder nicht gepackt sind. Bei einer Gleitpunktdarstellung ist normalerweise eine Exponentenzahl enthalten. Bei einer Festpunktdarstellung befindet sich der Radix- bzw. Basispunkt (Dezimalpunkt für eine Basis von zehn) an einer festen Position in Bezug auf die Bits oder Zahlen bzw. Ziffern der Daten. Wenn sich der Radixpunkt auf der rechten Seite aller Zahlen befindet, so handelt es sich um ein ganzzahliges Format. Wenn sich der Radixpunkt links neben allen Zahlen bzw. Ziffern befindet, so handelt es sich um ein Bruchzahlenformat. Ein Beispiel für die Gleitpunkt-Datentypen sind Gleitpunkt-Datentypen mit einfacher Genauigkeit und mit doppelter Genauigkeit gemäß der Definition in der Norm IEEE 754.
  • Die normalisierten und nicht normalisierten Formate sind spezifisch für Gleitkommadarstellungen und ein Bruchzahlenformat. Wenn eine Zahl normalisiert werden soll, wird die Zahl in einem Bruchzahlenformat dargestellt, und das Bit unmittelbar rechts neben dem Radixpunkt ist eine Eins. Wenn es sich um ein nicht normalisiertes Format handelt, soll die Zahl in Bruchzahlenformat dargestellt werden, und das Bit unmittelbar rechts neben dem Radixpunkt kann eine Eins oder eine Null sein.
  • Wenn die zu verarbeitenden Zahlen positiv oder negativ sein können, so muss die numerische Darstellung ein Codierungsmuster aufweisen, um die Darstellung sowohl von positiven als auch von negativen Werten vorzusehen. Kennzeichnende Codierverfahren für ganzzahlige Formate sind Sign/Magnitude, B-Minus-Eins-Komplement (Einserkomplement für binär oder eine Basis von zwei) und B-Komplement (Zweierkomplement für binär oder eine Basis von zwei). Wenn ein Gleitkommaformat eingesetzt wird, können sowohl die Mantisse als auch der Exponent ähnlich wie bei den ganzzahligen Codierungsverfahren codiert werden. Abhängig von dem gewünschten Wertebereich und/oder der gewünschten Genauigkeit muss ferner auch die Anzahl an Bits (d.h. Stellen), Bytes und Wörtern berücksichtigt werden. Zum Beispiel kann die Anzahl der Bits, die eine Zahl darstellen, fest auf einen Wert von zweiunddreißig Bit oder vier Bytes mit acht Bit festgelegt werden. Als ein weiteres Beispiel kann es sich bei der eine Zahl darstellenden Anzahl von Bits um zweiunddreißig Bits für das Bruchzahlenformat bzw. Mantissenformat und um drei Bits für den Exponent handeln.
  • Neben einer numerischen Darstellung kann der Datentyp einer Befehlsvorratarchitektur auch Zeichenfolgen oder den Datentyp Text aufweisen. Die Zeichen werden in diesem Fall binär codiert, wie etwa der American Standard Code for Information Interchange (ASCII). Eine weitere Form der Codierung ist Extended Binary Coded Decimal Interchange Code (EBCDIC). Diese codierten Formate können auch aus ihren binären Formen in eine gepackte dezimale Form gepackt werden, um die Anzahl der erforderlichen Bits für deren Darstellung zu reduzieren.
  • Der Datentyp für eine Instruction Set Architecture eines digitalen Signalprozessors (DSP) ist bedeutend. DSPs unterscheiden sich allgemein von universellen Mikroprozessoren dadurch, dass DSPs für gewöhnlich beschleunigte Rechenoperationen unterstützen, indem ein dedizierter Multiplizierer und Akkumulator (MAC) zur Ausführung einer Multiplikation digitaler Zahlen vorgesehen wird. Der Befehlssatz für eine kennzeichnende DSP-Vorrichtung weist für gewöhnlich nur einen DSP-Befehl auf, einen MAC-Befehl, zur Ausführung einer Multiplikation neuer Operanden und zur Addition mit einem vorher akkumulierten Wert, der in einem Akkumulatorregister gespeichert ist. Der Datentyp für die Operanden des MAC-Befehls bei dem Stand der Technik entsprechenden DSP-Vorrichtungen ist für gewöhnlich unabhängig von der Multiplizierer-Hardware, die ihren Teil der MAC-Operation ausführt. Für gewöhnlich ist der Datentyp für DSP feststehend. Wenn es wünschenswert ist, eine MAC-Operation an Operanden von Daten mit einem Format auszuführen, das nicht dem Datentyp entspricht, müssen weitere Befehle ausgeführt werden, um die Daten zu formatieren, so dass diese durch den gegebenen MAC-Befehl mit dem gegebenen Datentyp verarbeitet werden können. Diese weiteren Befehle können das Lesen aus einem Speicher und das Schreiben von Daten in einen Speicher aufweisen, um die entsprechenden Bits der Daten des Operanden auszuwählen, an denen der MAC-Befehl ausgeführt werden soll.
  • Telekommunikationssysteme stellen einen Bereich dar, in dem DSPs eingesetzt werden können. Ein Einsatz von DSPs in Telekommunikationssystemen ist das digitale Filtern. In diesem Fall wird ein DSP für gewöhnlich mit Befehlen programmiert, um bestimmte Filterfunktionen in dem digitalen Bereich oder dem Zeitbereich zu implementieren. Der mathematische Algorithmus für einen kennzeichnenden Filter mit begrenztem Ansprechverhalten auf einen Impuls (FIR) kann das Bild er Gleichung Yn = h0X0 + h1X1 + h2X2 + ... + hNXN aufweisen, wobei hN feste Filterkoeffizienten darstellt, die von 1 bis N nummeriert sind, und wobei XN die Datenabtastwerte darstellt. Die Gleichung Yn kann unter Verwendung eines Softwareprogramms evaluiert werden. Bei bestimmten Anwendungen ist es jedoch erforderlich, dass die Gleichung so schnell wie möglich evaluiert wird. Eine Möglichkeit dafür ist das Ausführen von Berechnungen unter Verwendung von Hardwarekomponenten, wie etwa einer DSP-Vorrichtung, die so programmiert ist, dass sie die Gleichung Yn berechnet. Zur Beschleunigung des Verfahrens ist es wünschenswert, die Gleichung zu vektorisieren und die Berechnung auf mehrere DSPs aufzuteilen, so dass das Endergebnis schneller erhalten wird. Die Mehrzahl von DSPs arbeitet parallel, um den Berechnungsvorgang zu beschleunigen. In diesem Fall ist die Multiplikation der Terme auf die Multiplizierer der DSPs gleichermaßen verteilt, um die Terme gleichzeitig zu berechnen. Das Addieren von Termen wird ebenfalls gleichermaßen auf die Addierer der DSPs verteilt, um gleichzeitig Berechnungen auszuführen. Bei der vektorisierten Verarbeitung ist die Reihenfolge der Verarbeitung der Terme nicht von Bedeutung, da die Kombination assoziativ ist. Wenn die Reihenfolge der Verarbeitung der Terme verändert wird, so hat dies keine Auswirkung auf das erwartete Endergebnis der vektorisierten Verarbeitung einer Funktion. In einer DSP-Vorrichtung, die an die Ausführung der vektorisierten Verarbeitung gewöhnt ist, ist es wünschenswert, die Art bzw. den Typ der vektorisierten Verarbeitung innerhalb des Datentyps der Befehlsgruppenarchitektur zu berücksichtigen, um die Datenverarbeitungseffizienz zu verbessern.
  • Häufig variiert die Art des in Kommunikationssystemen eingesetzten Filterns. Die verschiedenartigen Filtersysteme können verschiedenartige Operanden und Filterkoeffizienten verwenden. In US5023826 wird ein bekannter Prozessor zur Ausführung arithmetischer Berechnungen an Operanden mit variabler Länge offenbart. In diesen Fällen ist es wünschenswert die Flexibilität in Bezug auf die Art der Verarbeitung unterschiedlicher Operanden durch DSP-Befehle zu besitzen. Ferner ist es wünschenswert, die Effizienz des Einsatzes von Rechenressourcen zu verbessern, um die Ausführung von DSP-Befehlen zu beschleunigen.
  • KURZE ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung ist in den Ansprüchen kurz zusammengefasst und weist ein Verfahren und eine Vorrichtung gemäß der Beschreibung hierin auf.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Es zeigen:
  • 1A ein Blockdiagramm eines Systems, das die vorliegende Erfindung verwendet;
  • 1B ein Blockdiagramm einer gedruckten Leiterplatte unter Verwendung der vorliegenden Erfindung innerhalb der Gateways des Systems aus 1A;
  • 2 ein Blockdiagramm eines anwendungsspezifischen Signalprozessors (ASSP als englische Abkürzung von Application Specific Signal Processor) gemäß der vorliegenden Erfindung;
  • 3 ein Blockdiagramm einer Instanz der Kernprozessoren innerhalb des RSSP gemäß der vorliegenden Erfindung;
  • 4 ein Blockdiagramm einer RISC-Verarbeitungseinheit innerhalb der Kernprozessoren aus 3;
  • 5A ein Blockdiagramm einer Instanz der Signalverarbeitungseinheiten innerhalb der Kernprozessoren aus 3;
  • 5B ein detaillierteres Blockdiagramm aus 5A der Busstruktur der Signalverarbeitungseinheit;
  • 6 ein allgemeines Datentypformat für einen Operanden der Befehlsgruppenarchitektur gemäß der vorliegenden Erfindung;
  • 7 eine beispielhafte Bitmap für ein Steuerregister, das die Datentypisierung und Permutation von Operanden veranschaulicht;
  • 8 ein beispielhaftes Diagramm der möglichen Datentypen von Operanden, die ausgewählt werden können;
  • 9 ein beispielhaftes Diagramm möglicher Permutationen von Operanden und deren entsprechende Ausrichtung zu den Signalverarbeitungseinheiten;
  • 10 ein Blockdiagramm eines Blockdiagramms einer Datentypisierungs- und Ausrichtungseinheit jeder Signalverarbeitungseinheit aus 3;
  • 11 ein Blockdiagramm der Bus-Multiplexer in der Datentypisierungs- und Ausrichtungseinheit jeder Signalverarbeitungseinheit aus 10;
  • 12A ein Diagramm der realen Datentypen und deren Ausrichtung für die Addierer der Signalverarbeitungseinheiten;
  • 12B ein Diagramm realer Datentypen und deren Ausrichtung für die Multiplizierer der Signalverarbeitungseinheiten;
  • 12C ein erstes Diagramm komplexer Datentypen und deren Ausrichtung für die Addierer der Signalverarbeitungseinheiten;
  • 12D ein zweites Diagramm komplexer Datentypen und deren Ausrichtung für die Addierer der Signalverarbeitungseinheiten;
  • 12E ein Diagramm komplexer Datentypen und deren Ausrichtung für die Multiplizierer der Signalverarbeitungseinheiten;
  • 12F ein zweites Diagramm komplexer Datentypen und deren Ausrichtung für die Multiplizierer der Signalverarbeitungseinheiten;
  • 13A ein Diagramm des Datentypabgleichs für ein reales Paar von Operanden;
  • 13B ein Diagramm des Datentypabgleichs für ein komplexes Paar von Operanden;
  • 13C ein Diagramm des Datentypabgleichs für einen realen Operanden und einen komplexen Operanden;
  • 14 ein beispielhaftes Diagramm des Datentypabgleichs für die Multiplizierer der Signalverarbeitungseinheiten;
  • 15A ein beispielhaftes Diagramm des Datentypabgleichs für die Addierer der Signalverarbeitungseinheiten für die skalare Addition;
  • 15B ein beispielhaftes Diagramm des Datentypabgleichs für die Addierer der Signalverarbeitungseinheiten für die Vektoraddition; und
  • 16 ein Blockdiagramm der Steuerung der in der Datentypisierungseinrichtung und der Ausrichtungseinrichtung jeder Signalverarbeitungseinheit enthaltenen Bus-Multiplexer.
  • Übereinstimmende Referenznummern und Bezeichnungen in den Zeichnungen bezeichnen übereinstimmende Elemente mit übereinstimmender Funktionalität. Ein Buchstabe nach deiner Referenzbezeichnernummer steht für eine Instanz eines Elements mit der Referenzbezeichnernummer.
  • GENAUE BESCHREIBUNG DES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS
  • In der folgenden genauen Beschreibung der vorliegenden Erfindung sind zahlreiche besondere Einzelheiten ausgeführt, um ein umfassendes Verständnis der vorliegenden Erfindung zu vermitteln. Für den Fachmann auf dem Gebiet ist es jedoch offensichtlich, dass die vorliegende Erfindung auch ohne diese besonderen Einzelheiten ausgeführt werden kann. In anderen Fällen wurde auf die genaue Beschreibung allgemein bekannter Verfahren, Prozeduren, Komponenten und Schaltungen verzichtet, um die Aspekte der vorliegenden Erfindung nicht unnötig zu verschleiern. Die vorliegende Erfindung wird in bestimmten Ausführungsbeispielen beschrieben, wobei sie jedoch auch in Hardware, Software, Firmware oder Kombinationen dieser implementiert werden kann.
  • Eine Mehrzahl von anwendungsspezifischen Signalprozessoren (ASSPs) mit der Befehlsgruppenarchitektur gemäß der vorliegenden Erfindung weisen flexible Datentypisierung, Permutation und Typenabgleich der Operanden auf. Die flexible Datentypisierung, Permutation und Typenabgleichung der Operanden sorgt für eine Programmierungsflexibilität zur Unterstützung verschiedener Filter- und DSP-Algorithmen mit unterschiedenen Typen von Filterkoeffizienten oder Datenabtastwerten. Die Flexibilität zur Unterstützung verschiedener DSP-Algorithmen innerhalb der Gateways von Kommunikationssystemen kann eine verbesserte Sprach- und Datenübertragung über ein paketisiertes Netzwerk bereitstellen. Jeder ASSP weist eine serielle Schnittstelle, einen Pufferspeicher und vier Kernprozessoren auf, um gleichzeitig mehrere Kanäle von Sprache oder Daten zu verarbeiten. Jeder Kernprozessor weist vorzugsweise einen RISC-Prozessor (RISC als englische Abkürzung von Reduced Instruction Set Computer, auf Deutsch, Rechner mit reduziertem Befehlsvorrat) und vier Signalverarbeitungseinheiten (SPs) auf. Jede SP weist mehrere Rechenblöcke auf, um gleichzeitig mehrere Sprach- und Datenkommunikationssignalabtastwerte zur Übertragung bzw. Kommunikation über IP, ATM, Frame Relay oder ein anderes paketisiertes Netzwerk zu verarbeiten. Die vier Signalverarbeitungseinheiten können digitale Signalverarbeitungsalgorithmen parallel ausführen. Jeder ASSP ist flexibel und kann so programmiert werden, dass er eine Mehrzahl von Netzwerkfunktionen oder Daten-/Sprachverarbeitungsfunktionen ausführt, einschließlich Sprach- und Datenkomprimierung/-Dekomprimierung in Telekommunikationsnetzen (wie z.B. CODECs), einfach durch Veränderung der Softwareprogrammsteuerung der durch den ASSP ausgeführten Befehle.
  • Eine Befehlsvorratarchitektur für den ASSP ist auf Anwendungen der digitalen Signalverarbeitung zugeschnitten, einschließlich der Audio- und Sprachverarbeitung wie etwa zur Komprimierung/Dekomprimierung und der Echokompensation. Die in Verbindung mit dem ASSP implementierte Befehlsvorratarchitektur eignet sich für algorithmische DSP-Strukturen. Diese Adaption der erfindungsgemäßen ISA auf algorithmische DSP-Strukturen gleicht die einfache Implementierung, die Verarbeitungseffizienz und die Programmierbarkeit von DSP-Algorithmen aus. Die Befehlsvorratarchitektur kann als zwei Komponenten betrachtet werden, wobei eine (RIS ISA) der RISC-Steuereinheit entspricht und die andere (DSP ISA) den DSP-Datenpfaden der Signalverarbeitungseinheiten 300. Die RISC ISA ist eine Architektur auf Registerbasis mit 16 Registern innerhalb der Registerdatei 413, während es sich bei der DSP ISA um eine Architektur auf Speicherbasis handelt, mit effizienten digitalen Signalverarbeitungsbefehlen. Das Befehlswort für den ASSP entspricht für gewöhnlich 20 Bits, wobei es jedoch auch auf 40 Bits erweitert werden kann, um zwei nacheinander oder parallel auszuführende Befehle zu steuern, wie zum Beispiel zwei RISC-Steuerbefehle und erweiterte DSP-Befehle. Die Befehlsvorratarchitektur des ASSP weist vier unterschiedliche Befehlsarten auf, um das operative Mix des DSP zu optimieren. Dabei handelt es sich um (1) einen 20-Bit-DSP-Befehl, der Modusbits in Steuerregistern (d.h. Modusregistern) verwendet; (2) einen 40-Bit-DSP-Befehl mit Steuerungserweiterungen, welche die Modusregister übergehen können; (3) einen 20-Bit-Dyaden-DSP-Befehl; und (4) einen 40-Bit-Dyaden-DSP-Befehl. Diese Befehle dienen der Beschleunigung von Berechnungen in dem Kernprozessor vom Typ mit D = [(A op1 B) op2 C], und wobei „op1" und „op2" jeweils eine Multiplikations-, Additions- oder Extremwert-Operationsklasse (min/max) an den drei Operanden A, B und C darstellen. Die ISA des ASSP, welche diese Berechnungen beschleunigt, ermöglicht eine effiziente Verkettung verschiedener Kombinationen von Operationen.
  • Alle DSP-Befehle der Befehlsvorratarchitektur des ASSP stellen dyadische DSP-Befehle zur Ausführung von zwei Operationen in einem Befehl mit einem Zyklusdurchlauf dar. Ein dyadischer DSP-Befehl ist eine Kombination aus zwei DSP-Befehlen oder Operationen in einem Befehl und umfasst eine Haupt-DSP-Operation (HAUPT OP) und eine Sub-DSP-Operation (SUB OP). Allgemein kann die Befehlsvorratarchitektur gemäß der vorliegenden Erfindung auf die Verknüpfung jedes Paars von Basis-DSP-Operationen zur Bereitstellung sehr leistungsfähiger dyadischer Befehlskombinationen generalisiert werden. Die DSP-Rechenoperationen in dem bevorzugten Ausführungsbeispiel weisen einen Multiplikationsbefehl (MULT), einen Additionsbefehl (ADD), einen Minimierungs-/Maximierungsbefehl (MIN/MAX), auch als Extremwertbefehl bezeichnet, und einen Befehl keine Operation (NOP) auf, die jeweils einen zugeordneten Operationscode („Opcode") aufweisen.
  • Die vorliegende Erfindung führt diese dyadischen DSP-Befehle effizient durch die Befehlsvorratarchitektur und die Hardwarearchitektur des anwendungsspezifischen Signalprozessors aus.
  • In nachstehendem Bezug auf die Abbildung aus 1A ist ein Sprach- und Datenkommunikationssystem 100 dargestellt. Das System 100 weist ein Netzwerk 101 auf, das ein paketisiertes oder Paketvermittlungsnetzwerk bzw. -netz darstellt, wie etwa IP, ATM oder Frame Relay. Das Netzwerk bzw. Netz 101 ermöglicht die Kommunikation von Sprache und Daten zwischen Endpunkten in dem System 100 unter Verwendung von Paketen. Bei den Daten kann es sich um jede Art von Daten handeln, einschließlich Audio, Video, E-Mail und anderen generischen Datenformen. An jedem Ende des System 100 erfordern die Sprache oder die Daten eine Paketisierung beim Senden bzw. Empfangen über das Netzwerk 101. Das System 100 weist Gateways 104A, 104B und 104C zur Paketisierung der zur Übertragung über das Netzwerk 101 empfangenen Informationen auf. Ein Gateway ist eine Vorrichtung zur Verbindung mehrerer Netze bzw. Netzwerke und Vorrichtungen, die verschiedene Protokolle verwenden. Sprache- und Dateninformationen können über eine Reihe verschiedener Quellen in einer Vielzahl digitaler Formate einem Gateway 104 bereitgestellt werden. In dem System 100 werden analoge Sprachsignale von einem Telefon 108 gesendet und empfangen. In dem System 100 werden digitale Sprachsignale an Public Branch Exchanges (PBX) 112A und 112B gesendet und empfangen, wobei die PBX mit mehreren Telefonen, Faxgeräten oder Datenmodems verbunden sind. Digitale Sprachsignale werden zwischen dem PBX 112A und dem PBX 112B mit den entsprechenden Gateways 104A und 104C gesendet und empfangen. Digitale Datensignale können auch direkt zwischen einem digitalen Modem 114 und einem Gateway 104A gesendet und empfangen werden. Bei dem digitalen Modem 114 kann es sich um ein Modem für einen digitalen Teilnehmeranschluss bzw. eine Digital Subscriber Line (DSL) oder um ein Kabelmodem handeln. Datensignale können auch über ein kabelloses Kommunikationssystem in das System 100 gekoppelt werden, unter Verwendung einer mobilen Einheit 118, die digitale Signale oder analoge Signale kabellos zu und von einer Basisstation 116 sendet und empfängt. Die Basistation 116 wandelt analoge Signale in digitale Signale um oder leitet die digitalen Signale direkt zu einem Gateway 104B. Die Daten können über Modemsignale über einfachen alten Fernsprechdienst bzw. Plain Old Telephone System (POTS) 107B unter Verwendung eines Modems 110 gesendet und empfangen werden. Die über POTS 107B übertragenen Modemsignale sind traditionell analoge Signale und werden in einen Switch 106B des öffentlichen Fernsprechwählnetzes bzw. Public Switched Telephone Network (PSTN) gekoppelt. An dem Switch 106B werden analoge Signale von dem POTS 107B digitalisiert und zu dem Gateway 104B gesendet und empfangen, und zwar durch Zeitmultiplexing bzw. Time Divison Multiplexing (TDM), wobei jeder Zeitschlitz einen Kanal darstellt und einen DS0-Eingang in den Gateway 104B. An jedem der Gateways 104A, 104B und 104C werden eingehende Signale zur Übertragung über das Netz 101 paketisiert. Die von den Gateways 104A, 104B und 104C empfangenen Signale von dem Netz 101 werden entpackt und zur Verteilung an den entsprechenden Bestimmungsort codeumgesetzt.
  • In folgendem Bezug auf die Abbildung aus 1B ist eine Netzwerkschnittstellenkarte (NIC) 130 eines Gateway 104 dargestellt. Die NIC 130 weist einen oder mehrere anwendungsspezifische Signalprozessoren (ASSPs) 150A150N auf. Die Anzahl der ASSPs in einem Gateway sind so erweiterbar, dass sie zusätzliche Kanäle bearbeiten bzw. behandeln. Leitungsschnittstellenvorrichtungen 131 der NIC 130 sehen Schnittstellen zu verschiedenen Vorrichtungen vor, die mit dem Gateway verbunden sind, einschließlich dem Netz 101.
  • Bei der Schnittstellenverbindung mit dem Netz 101 paketisieren die Leitungsschnittstellenvorrichtungen Daten für die Übertragung aus dem Netz 101, und sie Entpacken Daten, die von den ASSP-Vorrichtungen empfangen werden sollen. Die Leitungsschnittstellenvorrichtungen 131 verarbeiten von dem Gateway an dem Empfangsbus 134 empfangene Daten und stellen diese an die ASSP-Vorrichtungen bereit. Informationen von den ASSP-Vorrichungen 150 werden über den Sendebus 132 zur Übertragung aus dem Gateway übertragen. Eine traditionelle Leitungsschnittstellenvorrichtung ist eine serielle Mehrkanalschnittstelle oder eine UTOPIA-Vorrichtung. Die NIC 130 ist mit einem Gateway-Backplane/Netzwerkschnittstellenbus 136 in dem Gateway 104 gekoppelt. Die Brückenlogik 138 sendet und empfängt Informationen zwischen dem Bus 136 und der NIC 130. Die Brückenlogik 138 sendet und empfängt Signale zwischen der NIC 130 und dem Backplane/Netzwerkschnittstellenbus 136 auf den Host-Bus 139 zur Übertragung entweder zu einer oder mehreren der ASSP-Vorrichtungen 150A bis 150N, einem Host-Prozessor 140 oder einem Host-Speicher 142. Optional ist bzw. sind mit jeder einen oder der Mehrzahl von ASSP-Vorrichtungen 150A bis 150N (allgemein als ASSP 150 bezeichnet) optionale lokale Speicher 145A bis 145N (allgemein bezeichnet als optionaler lokaler Speicher 145) entsprechend gekoppelt. Digitale Daten an dem Empfangsbus bzw. dem Empfängerbus 134 und dem Sendebus 132 werden vorzugsweise Bit für Bit übertragen. Während der interne Speicher in jedem ASSP ausreichend groß sein kann für eine Verwendung als Notizblockspeicher, kann der optionale lokale Speicher 145 von jedem der ASSPs 150 verwendet werden, wenn zusätzlicher Speicherraum benötigt wird.
  • Jeder der ASSPs 150 sieht eine Signalverarbeitungsfunktion für den Gateway vor. Die Art der bereitgestellten Signalverarbeitung ist flexibel, da jeder ASSP unterschiedliche Signalverarbeitungsprogramme ausführen kann.
  • Zu den kennzeichnenden Signalverarbeitungs- und verwandten Sprachpaketisierungsfunktionen für einen ASSP zählen (a) Echokompensation; (b) Video-, Audio- und Sprach-Komprimierung/Dekomprimierung (Sprachcodierung- und -decodierung); (c) Verzögerungsbearbeitung (Pakete, Frames); (d) Verlustbehandlung; (e) Konnektivität (LAN und WAN); (f) Sicherheit (Verschlüsselung/Entschlüsselung); (g) Telefonkonnektivität; (h) Protokollverarbeitung (Reservierung und Transport von Protokollen, RSVP, TCP/IP, RTP, UDP für IP und AAL2, AAL1, AAL5 für ATM); (i) Filtern; (j) Silence-Unterdrückung; (k) Längenbehandlung (Frames, Pakete); und andere digitale Signalverarbeitungsfunktionen, die der Übertragung von Sprache und Daten über ein Kommunikationssystem zugeordnet sind. Jeder ASSP 150 kann andere Funktionen ausführen, um Sprache und Daten zu den verschiedenen End- bzw. Abschlusspunkten des Systems 100 innerhalb eines Paketdatenstroms über ein paketisiertes Netz bzw. Netzwerk zu übertragen.
  • In folgendem Bezug auf 2 ist ein Blockdiagramm des ASSP 150 veranschaulicht: Im Herzen des ASSP 150 befinden sich vier Kernprozessoren 200A bis 200D. Jeder der Kernprozessoren 200A bis 200D ist entsprechend über Busse 203A bis 203D mit einem Datenspeicher 202A bis 202D gekoppelt. Jeder der Kernprozessoren 200A bis 200D ist ferner entsprechend über Busse 205A bis 205D mit einem Programmspeicher 204A bis 204D gekoppelt. Jeder der Kernprozessoren 200A bis 200D kommuniziert mit externen Kanälen über die serielle Mehrkanalschnittstelle 206, das Mehrkanal-Speicherbewegungssystem 208, den Pufferspeicher 210 und den Datenspeicher 202A bis 202D. Der ASSP 150 weist ferner eine externe Speicherschnittstelle 212 zur Kopplung mit dem optionalen externen lokalen Speicher 145 auf. Der ASSP 150 weist eine externe Host-Schnittstelle 214 zur Erfüllung der Schnittstellenfunktion mit dem externen Host-Prozessor 140 aus 1B auf. Ferner weist der ASSP 150 Timer 216, Taktgeneratoren und einen Phasenregelkreis 21, eine sonstige Steuerlogik 220 und einen Joint Test Action Group (JTAG) Testzugriffsport 222 für Grenzabtasttests auf. Die serielle Mehrkanalschnittstelle 206 kann für bestimmte Anwendungen wie etwa ATM durch eine parallele UTOPIA-Schnittstelle ersetzt werden. Der ASSP 150 weist ferner einen Mikrocontroller 223 auf, um das Verfahrens-Scheduling für die Kernprozessoren 200A bis 200D und die Koordination der Datenbewegung innerhalb des ASSP auszuführen, sowie eine Unterbrechungssteuereinheit 224 zur Unterstützung der Unterbrechungsbehandlung und der Steuerung des ASSP 150.
  • In folgendem Bezug auf die Abbildung aus 3 ist ein Blockdiagramm des Kernprozessors 200 dargestellt, der über die Busse 203 und den Programmspeicher 204 über die Busse 205 mit dem entsprechenden Datenspeicher 202 gekoppelt ist. Der Kernprozessor 200 stellt das Blockdiagramm für jeden der Kernprozessoren 200A bis 200D dar. Der Datenspeicher 202 und der Programmspeicher 204 betreffen eine entsprechende Instanz des Datenspeichers 202A bis 202D und einen entsprechenden Programmspeicher 204A bis 204D. Die Busse 203 und 205 bezeichnen eine entsprechende Instanz bzw. ein entsprechendes Vorkommen der Busse 203A bis 203D und 205A bis 205D. Der Kernzprozessor 200 weist vier Signalverarbeitungseinheiten SP0 300A, SP1 300B, SP2 300C und SP3 300D auf. Der Kernprozessor 200 weist ferner eine RISC-Steuereinheit (RISC als englische Abkürzung von Reduced Instruction Set Computer bzw. Computer mit begrenztem Befehlsvorrat) 302 und eine Pipeline-Steuereinheit 304 auf. Die Signalverarbeitungseinheiten 300A bis 300D führen die Signalverarbeitungsaufgaben an Daten aus, während die RISC-Steuereinheit 302 und die Pipeline-Steuereinheit 304 Steueraufgaben ausführen, welche sich auf die Signalverarbeitungsfunktion beziehen, die durch die SPs 300A bis 300D ausgeführt werden. Die durch die RISC- Steuereinheit 302 bereitgestellte Steuerung ist mit den SPs 300A bis 300D auf Pipeline-Ebene gekoppelt, um einen eng integrierten Kernprozessor 200 zu ergeben, der die Nutzung der Signalverarbeitungseinheiten 300 auf einer sehr hohen Ebene hält.
  • Der Programmspeicher 204 ist mit der Pipe-Steuerung 304 gekoppelt, die einen Befehlspuffer aufweist, der als ein lokaler Schleifen-Cache fungiert. Der Befehlspuffer weist in dem bevorzugten Ausführungsbeispiel die Fähigkeit auf, vier Befehle zu speichern. Der Befehlspuffer der Pipe-Steuerung 304 reduziert den Energieverbrauch beim Zugriff auf die Hauptspeicher zum Abrufen von Befehlen während der Ausführung von Programmschleifen.
  • Die Signalverarbeitungsaufgaben werden in den Datenpfaden in den Signalverarbeitungseinheiten 300A bis 300D ausgeführt. Die DSP-Algorithmen sind so beschaffen, dass sie inhärente Vektoroperationen an Datenströmen ausführen, wobei sie ein minimales zeitliches Vorkommen (Datenwiederverwendung) aufweisen. Somit wird kein Daten-Cache mit Seitenabruf verwendet, da dieser nicht gut funktionieren und die Betriebsleistung herabsetzen würde. Die Signalverarbeitungseinheiten 300A bis 300D können somit direkt aus dem Datenspeicher 202 auf Vektorelemente (die Operanden) zugreifen, ohne den Overhead der Ausgabe einer Reihe von Lade- und Speicherbefehlen in den Speicher, was zu einer besonders effizienten Datenverarbeitung führt. Die Befehlsvorratarchitektur gemäß der vorliegenden Erfindung mit einem Befehlswort von 20 Bits, wobei eine Erweiterung auf ein Befehlswort von 40 Bits möglich ist, erreicht bessere Effizienzen als VLIW-Architekturen unter Verwendung von 256 Bits oder höhere Befehlsbreiten, indem die ISA zu DSP algorithmischen Strukturen eingesetzt werden Die adaptierte ISA führt zu einer sehr kompakten Hardware mit geringer Leistungsaufnahme, die für höhere Rechenanforderungen skalierbar ist. Die Operanden, die der ASSP behandeln kann, variieren in Bezug auf Datentyp und Datengröße. Der Datentyp kann real oder komplex sein, ein ganzzahliger Wert oder ein Bruchzahlenwert, wobei die Vektoren mehrere Elemente verschiedener Größen aufweisen. Die Datengröße entspricht in dem bevorzugten Ausführungsbeispiel 64 Bits, wobei bei entsprechender Befehlscodierung auch größere Datengrößen möglich sind.
  • In folgendem Bezug auf die Abbildung aus 4 ist ein genaues Blockdiagramm der RISC-Steuereinheit 302 dargestellt. Die RISC-Steuereinheit 302 weist eine Datenausrichtungs- und Formatierungseinrichtung 402, einen Speicheradressgenerator 404, drei Addierer 406A bis 406C, eine arithmetische Logikeinheit (ALU) 408, einen Multiplizierer 410, einen Barrel-Shifter (Schiebelogikschaltung) 412 und eine Registerdatei 413 auf. Die Registerdatei 413 zeigt auf einen Ausgangsspeicherplatz, von welchem der Speicheradressgenerator 404 Adressen in dem Datenspeicher 202 erzeugen kann. Die RISC-Steuereinheit 302 ist zuständig für die Zustellung von Adressen an den Datenspeicher, so dass der entsprechende Datenstrom den Signalverarbeitungseinheiten 300A bis 300D zugeführt wird. Die RISC-Steuereinheit 302 ist ein Register für die Registerorganisation mit Lade- und Speicherbefehlen, um Daten in den Datenspeicher 202 und aus dem Datenspeicher zu bewegen. Die Datenspeicheradressierung wird durch die RISC-Steuereinheit unter Verwendung eines 32-Bit-Registers als Zeiger ausgeführt, der die Adresse, den Versatz nach der Modifikation und die Typ- und Permutationsfelder spezifiziert. Das Typenfeld ermöglicht die Unterstützung einer Vielzahl natürlicher DSP-Daten als „Bürger erster Klasse" bzw. „First Class Citizen" in der Architektur. Der komplexe Typ ermöglicht zum Beispiel direkte Operationen an komplexen Daten, die in dem Speicher gespeichert sind, wobei eine Reihe von Buchhaltungsbefehlen entfernt bzw. auf diese verzichtet wird. Dies ist nützlich für die sehr effiziente Unterstützung von QAM-Demodulatoren in Datenmodems.
  • In folgendem Bezug auf die Abbildung aus 5A zeigt diese ein Blockdiagramm einer Signalverarbeitungseinheit 300, die eine Instanz der SPs 300A bis 300D darstellt. Jede der Signalverarbeitungseinheiten 300 weist eine Datentypisierungs- und Ausrichtungseinrichtung 502, einen ersten Multiplizierer M1 504A, einen Kompressor 506, einen ersten Addierer A1 510A, einen zweiten Addierer A2 510B, ein Akkumulatorregister 512, einen dritten Addierer A3 510C und einen zweiten Multiplizierer M2 504B auf. Die Struktur bzw. der Aufbau der Addierer 510A bis 510C ist identisch, und sie werden allgemein als Addierer 510 bezeichnet. Die Multiplizierer 504A und 504B weisen die gleiche Struktur auf und werden allgemein als Multiplizierer 504 bezeichnet. Jeder der Multiplizierer 504A und 504B weist einen entsprechenden Multiplexer 514A und 514B an dessen Eingangsstufe auf, um verschiedene Eingaben von verschiedenen Bussen in die Multiplizierer zu multiplexieren. Jeder der Addierer 510A, 510B, 510C weist auch einen entsprechenden Multiplexer 520A, 520B und 520C an dessen Eingangsstufe auf, um verschiedene Eingaben von verschiedenen Bussen in die Addierer zu multiplexieren. Diese Multiplexierer und die sonstige Steuerlogik ermöglichen durch die entsprechende Auswahl von Multiplexierern die flexible Verbindung der Addierer, Multiplizierer und sonstigen Komponenten in den Signalverarbeitungseinheiten 300A bis 300C untereinander. In dem bevorzugten Ausführungsbeispiel können der Multiplizierer M1 504, der Kompressor 506, der Addierer A1 510A, der Addierer A2 510B und der Akkumulator 512 Eingaben direkt von externen Datenbussen empfangen, und zwar über die Datentypisierungs- und Ausrichtungseinrichtung 502. In dem bevorzugten Ausführungsbeispiel empfangen der Addierer 510C und der Multiplizierer M2 504B Eingaben von dem Akkumulator 512 oder die Ausgaben von den Ausführungseinheiten Multiplizierer M1 504A, Kompressor 506, Addierer A1 510A und Addierer A2 510B.
  • In folgendem Bezug auf die Abbildung aus 5B zeigt diese ein genaueres Blockdiagramm der funktionalen Blöcke und der Busstruktur der Signalverarbeitungseinheit 300. Eine flexible Datentypisierung ist möglich aufgrund der Struktur und der Funktionalität in jeder Signalverarbeitungseinheit. Die Busse 203 zu dem Datenspeicher 202 weisen einen Z-Ausgangsbus 532 und einen X-Eingangsbus 531 sowie einen Y-Eingangsbus 533 auf. Die Ausgangssignale werden auf dem Z-Ausgangsbus 532 aus dem Signalprozessor 300 durch die Datentypisierungs- und Ausrichtungseinrichtung 502 gekoppelt. Die Eingangssignale werden auf dem X-Eingangsbus 531 und dem Y-Eingangsbus 533 durch die Datentypisierungs- und Ausrichtungseinrichtung 502 in den Signalprozessor 300 gekoppelt. Zwei Operanden können parallel gemeinsam aus dem Datenspeicher 202 in den Signalprozessor 300 geladen werden, jeweils einzeln über den X-Bus 531 und den Y-Bus 533.
  • In dem Signalprozessor 300 sind der SXM-Bus 552 und der SYM-Bus 556 zwischen die Datentypisierungs- und Ausrichtungseinrichtung 502 und den Multiplizierer M1 504A für zwei Operandenquellen von entsprechend dem X-Bus 531 und dem Y-Bus 533 gekoppelt. Der SXA-Bus 550 und der SYA-Bus 554 sind zwischen die Datentypisierungs- und Ausrichtungseinrichtung 502 und den Addierer A1 510A gekoppelt und zwischen die Datentypisierungs- und Ausrichtungseinrichtung 502 und den Addierer A2 510B für zwei Operandenquellen entsprechend von dem X-Bus 531 und dem Y-Bus 533. In dem bevorzugten Ausführungsbeispiel sind der X-Bus 531 und der Y-Bus 533 vierundsechzig Bits breit, während der SXA-Bus 550 und der SYA-Bus 554 vierzig Bits breit sind, und wobei der SXM-Bus 552 und der SYM-Bus 556 sechzehn Bits breit sind. Ein weiteres Paar interner Busse ist zwischen die Datentypisierungs- und Ausrichtungseinrichtung 502 und den Kompressor 506 sowie zwischen die Datentypisierungs- und Ausrichtungseinrichtung 502 und das Akkumulatorregister AR 512 gekoppelt. Während die Datentypisierungs- und Ausrichtungseinrichtung 502 mit dem Addierer A3 510C und dem Multiplizierer M2 504B gekoppelte Datenbusse aufweisen kann, ist dies in dem bevorzugten Ausführungsbeispiel nicht der Fall, um zusätzliche Datenleitungen überflüssig zu machen und um die Flächennutzung einer integrierten Schaltung zu erhalten. Ausgabedaten werden von dem Akkumulatorregister AR 512 über einen weitern Bus in die Datentypisierungs- und Ausrichtungseinrichtung 502 gekoppelt. Der Multiplizierer M1 504A weist Busse auf, um dessen Ausgang in die Eingänge des Kompressors 506, des Addierers A1 510A, des Addierers A2 510B und der Akkumulatorregister AR 512 zu koppeln. Der Kompressor 506 weist Busse auf, um dessen Ausgang in die Eingänge des Addierers A1 510A und des Addierers A2 510B zu koppeln. Der Addierer A1 510A weist einen Bus auf, um dessen Ausgang in die Akkumulatorregister 512 zu koppeln. Der Addierer A2 510B weist Busse auf, um dessen Ausgabe in die Akkumulatorregister 512 zu koppeln. Die Akkumulatorregister 512 weisen Busse auf, um ihren Ausgang in den Multiplizierer M2 504B, den Addierer A3 510C und die Datentypisierungs- und Ausrichtungseinrichtung 502 zu koppeln. Der Addierer A3 510C weist Busse auf, um dessen Ausgang in den Multiplizierer M2 504B und die Akkumulatorregister 512 zu koppeln. Der Multiplizierer M2 504B weist Busse auf, um dessen Ausgang in die Eingänge des Addierers A3 510C und die Akkumulatorregister AR 512 zu koppeln.
  • BEFEHLSVORRATARCHITEKTUR
  • Die Befehlsvorratarchitektur des ASSP 150 ist auf Anwendungen der digitalen Signalverarbeitung zugeschnitten, einschließlich der Audio- und Sprachverarbeitung wie etwa der Komprimierung/Dekomprimierung und der Echokompensation. Im Wesentlichen eignet sich die in Verbindung mit dem ASSP 150 implementierte Befehlsvorratarchitektur für algorithmische DSP-Strukturen. Die Adaption der ISA gemäß der vorliegenden Erfindung an algorithmische DSP-Strukturen ist ein Gleichgewicht zwischen einer einfachen Implementierung, Verarbeitungseffizienz und Programmierbarkeit von DSP-Algorithmen. Die ISA gemäß der vorliegenden Erfindung stellt Datenbewegungsoperationen, DSP/arithmetische/logische Operationen, Programmsteueroperationen (wie etwa Funktionsaufrufe/Rücksprünge, bedingte/unbedingte Sprünge und Verzweigungen) und Systemoperationen (Berechtigung, Behandlung von Unterbrechungen/Trapping/Gefahren und Speicherverwaltungssteuerung) bereit.
  • Die Befehlsvorratarchitektur des ASSP 150 kann als zwei Bauteile bzw. Komponenten betrachtet werden, wobei eine (RISC ISA) der RISC-Steuereinheit und die andere (DSP ISA) den DSP-Datenpfaden der Signalverarbeitungseinheiten 300 entspricht. Die RISC ISA ist eine Architektur auf Registerbasis mit sechzehn Registern innerhalb der Registerdatei 413, während die DSP ISA eine Architektur auf Speicherbasis darstellt, mit effizienten digitalen Signalverarbeitungsbefehlen. Das Befehlswort für den ASSP entspricht für gewöhnlich 20 Bits, kann jedoch auf 40 Bits erweitert werden, um zwei in Reihe oder parallel auszuführende RISC- oder DSP-Befehle zu steuern, wie zum Beispiel einen RISC-Steuerbefehl, der parallel zu einem DSP-Befehl ausgeführt wird, oder ein erweiterter 40-Bit-RISC- oder DSP-Befehl.
  • Die Befehlsvorratarchitektur des ASSP 150 weist vier unterschiedliche Befehlsarten auf, um das operative DSP-Mix zu optimieren. Dabei handelt es sich um (1) einen 20-Bit-DSP-Befehl, der Modusbits in Steuerregistern (d.h. Modusregistern) verwendet; (2) einen 40-Bit-DSP-Befehl mit Steuererweiterungen, die Modusregister übergehen können; (3) einen 20-Bit-Dyaden-DSP-Befehl; und (4) einen 40-Bit-Dyaden-DSP-Befehl. Diese Befehle dienen der Beschleunigung von Berechnungen innerhalb des Kernprozessors 200 vom Typ mit D = [(A op1 B) op2 C], und wobei es sich bei jedem „op1" und „op2" um eine Operationsklasse Multiplizieren, Addieren oder Extremwert (min/max) der drei Operanden A, B und C handeln kann. Die ISA des ASSP 150, welche diese Berechnungen beschleunigt, ermöglicht die effiziente Verkettung verschiedener Kombinationen von Operationen. Diese Arten von Operationen erfordern drei Operanden, die dem Prozessor verfügbar gemacht werden müssen, der die Operation ausführt. Die Größe der integrierten Schaltung begrenzt die Busstruktur, welche die Bandbreite auf zwei Vektor-Lesevorgänge und einen Vektor-Schreibvorgang bei jedem Zyklus in den und aus dem Datenspeicher 202 beschränkt. Somit muss einer der drei Operanden, wie etwa B oder C, von einer anderen Quelle innerhalb des Kernprozessors 200 stammen. Der dritte Operand kann in einem der Register des Akkumulators 512 oder der RISC-Registerdatei 413 platziert werden. Zum dies in dem Kernprozessor 200 zu erreichen, sind zwei Unterklassen der 20-Bit-DSP-Befehle gegeben, die wie folgt lauten: (1) A und B spezifiziert durch einen 4-Bit-Spezifizierer, und C und D durch einen 1-Bit-Spezifizierer; und (2) A und C spezifiziert durch einen 4-Bit-Spezifizierer, und B und D durch einen 1-Bit-Spezifizierer.
  • Die Befehle für den ASSP werden immer mit 40 Bits gleichzeitig aus einem Programmspeicher erfasst, wobei die Bits 39 und 19 die Befehlsart anzeigen. Nach dem Abruf bzw. der Erfassung werden die Befehle in zwei Abschnitte mit 20 Bits gruppiert, jeweils zur Ausführung von Operationen. Im Falle von 20-Bit-Steuerbefehlen mit paralleler Ausführung (Bit 39 = 0, Bit 19 = 0), handelt es sich bei den 20-Bit-Abschnitten um Steuerbefehle, die gleichzeitig ausgeführt werden. Bei 20-Bit-Steuerbefehlen zur seriellen Ausführung (Bit 39 = 0, Bit 19 = 1) handelt es sich bei den beiden 20-Bit-Abschnitten um Steuerbefehle, die seriell ausgeführt werden. Bei den 20-Bit-DSP-Befehlen zur seriellen Ausführung (Bit 39 = 1, Bit 19 = 1) handelt es sich bei den beiden 20-Bit-Befehlen um DSP-Befehle, die seriell ausgeführt werden. Bei den 40-Bit-DSP-Befehlen (Bit 39 = 1, Bit 19 = 0) bilden die beiden 20-Bit-Abschnitte einen erweiterten DSP-Befehl, wobei sie gleichzeitig ausgeführt werden.
  • Die ISA des ASSP 150 ist vollständig vordefiniert, so dass eine Ausführungsvorhersage vorgesehen wird. Innerhalb des 20-Bit-RISC-Steuerbefehlwortes und des erweiterten 40-Bit-DSP-Befehlswortes gibt es zwei Bits jedes Befehls, die eines von vier Prädikatregistern innerhalb der RISC-Steuereinheit 302 spezifizieren. Abhängig von der Bedingung des Prädikatregisters kann sich die Befehlsausführung bedingt auf der Basis ihres Inhalts verändern.
  • Für den Zugriff auf Operanden in dem Datenspeicher 202 oder in Registern in dem Akkumulator 512 oder der Registerdatei 413 wird ein 6-Bit-Spezifizierer in den erweiterten DSP-Befehlen verwendet, um auf die Operanden in dem Speicher und in Registern zuzugreifen. Von dem 6-Bit-Spezifizierer, der in den erweiterten DSP-Befehlen zum Einsatz kommt, zeigt das MSB (Bit 5) an, ob es sich bei dem Zugriff um einen Speicherzugriff oder um einen Registerzugriff handelt. Wenn in dem bevorzugten Ausführungsbeispiel Bit 5 auf eine logische Eins gesetzt wird, so bezeichnet dies einen Speicherzugriff für einen Operanden. Wenn Bit 5 auf eine logische Null gesetzt wird, bezeichnet dies einen Registerzugriff für einen Operanden. Wenn Bit 5 auf eine 1 gesetzt wird, wird der Inhalt eines spezifizierten Registers (rX mit X: 0–7) zur Ermittlung der effektiven Speicheradresse und zum späteren Modifizieren des Zeigerfelds um einen von zwei möglichen Versätzen verwendet, gemäß der Spezifikation in einem der spezifizierten rX-Register. Wenn das Bit 5 auf 0 gesetzt ist, bestimmt Bit 4, welche Registergruppe den Inhalt des gewünschten Operanden aufweist. Wenn Bit 4 auf 0 gesetzt ist, so steuern die verbleibenden spezifizierten Register 3:0 den Zugriff auf die Register innerhalb der Registerdatei 413 oder auf die Register in den Signalverarbeitungseinheiten 300.
  • DSP-BEFEHLE
  • Es gibt vier Klassen von DSP-Befehlen für den ASSP 150. Diese sind:
    • 1) Multiplizieren (MULT): Steuert die Ausführung des Hauptmultiplizierers, der von dem Speicher mit Datenbussen verbunden ist. Steuert: Rundung, Vorzeichenmultiplikation Bearbeitet Vektordaten, spezifiziert durch das Typenfeld in dem Adressregister Zweite Operation: Add, Sub, Min, Max in Vektor- oder skalarem Modus
    • 2) Addieren (ADD): Steuert die Ausführung des Hauptaddierers Steuert: Absolutwertsteuerung der Eingaben, Ergebnisbeschränkung Zweite Operation: Add, Add-Sub, Mult, Mac, Min, Max
    • 3) Extremwert (MIN/MAX): Steuert die Ausführung des Hauptaddierers Steuert: Absolutwertsteuerung der Eingaben, globale oder laufende max/min mit T-Register, TR-Register Aufzeichnungssteuerung Zweite Operation: Add, Sub, Mult, Mac, Min, Max
    • 4) Sonstiges: Typenabgleich und Permutationsoperationen.
  • Der ASSP 150 führt diese arithmetischen DSP-Operationen in Vektor- oder in skalarer Form aus. Bei der skalaren Ausführung wird eine Reduzierungs- oder Verknüpfungsoperation an den Vektorergebnissen ausgeführt, so dass sich ein skalares Ergebnis ergibt. Bei DSP-Anwendungen ist es üblich, skalare Operationen auszuführen, die effizient durch den ASSP 150 ausgeführt werden.
  • Die 20-Bit-DSP-Befehlswörter weisen 4-Bit-Operandenspezifizierer auf, die unter Verwendung von 8 Adressregistern (r0–r7) in der Registerdatei 413 der RISC-Steuereinheit 302 direkt auf den Datenspeicher zugreifen können. Das Verfahren der Adressierung durch das 20-Bit-DSP-Befehlswort ist regelmäßig indirekt, wobei das Adressregister den Zeiger in den Speicher spezifiziert, den Wert nach der Modifikation, den Datentyp, auf den zugegriffen wird, und die Permutation der Daten, die zur effizienten Ausführung des Algorithmus erforderlich ist. Alle DSP-Befehle steuern die Multiplizierer 504A504B, die Addierer 510A bis 510C, den Kompressor 506 und den Akkumulator 512, die funktionalen Einheiten jeder Signalverarbeitungseinheit 300A bis 300D.
  • In dem 40-Bit-Befehlswert fällt der Typ der Erweiterung von dem 20-Bit-Befehlswort in fünf Kategorien:
    • 1) Steuerungs- und Spezifizierererweiterungen, welche die Steuerbits in Modusregistern übergehen
    • 2) Typenerweiterungen, die den Typenspezifizierer in den Adressregistern übergehen
    • 3) Permutationserweiterungen, welche den Permutationsspezifizierer für Vektordaten in den Adressregistern übergehen
    • 4) Versatzerweiterungen, die Versätze ersetzen oder erweitern, die in den Adressregistern spezifiziert sind
    • 5) DSP-Erweiterungen, welche die unteren Reihen funktionaler Einheiten innerhalb einer Signalverarbeitungseinheit 300 steuern, um die Blockverarbeitung zu beschleunigen.
  • Die 40-Bit-Steuerbefehle mit 20-Bit-Erweiterungen ermöglichen ferner das Spezifizieren eines großen intermediären Werts (16 bis 20 Bits) in dem Befehl sowie leistungsfähige Bitmanipulationsbefehle.
  • Eine effiziente DSP-Ausführung wird über 2 × 20-Bit-DSP-Befehle bereitgestellt, wobei die ersten 20 Bits die oberen Funktionen Einheiten (Addierer 501A und 510B, den Multiplizierer 504A, Kompressor 506) steuern, welche Schnittstellen mit Datenbussen von dem Speicher aufweisen, und wobei die zweiten 20 Bits die unteren funktionalen Einheiten (Addierer 510C und Multiplizierer 504B) steuern, welche innere oder lokale Daten als Operanden verwenden.
  • Die effiziente DSP-Ausführung wird auch durch die Hardware-Architektur gemäß der vorliegenden Erfindung verbessert. In diesem Fall wird die Effizienz dahingehend verbessert, dass Daten aus dem Datenspeicher 202 und in diesen zugeführt werden, um die vier Signalverarbeitungseinheiten 300 und die DSP-Funktionseinheiten darin zu speisen. Die Datenautobahn umfasst die Busse 203, welche den X-Bus 531 und den Y-Bus 533 für entsprechende X- und Y-Quellenoperanden aufweisen sowie den Z-Bus 532 zum Schreiben des Ergebnisses. Alle Busse, einschließlich dem X-Bus 531, dem Y-Bus 533 und dem Z-Bus 532 sind vorzugsweise 64 Bit breit. Die Busse sind unidirektional, um das physikalische Design zu vereinfachen und um Übergangszeiten der Daten zu reduzieren. Wenn in dem bevorzugten Ausführungsbeispiel in einem 20-Bit-DSP-Modus die X- und Y-Busse beide Operanden führen, die aus dem Speicher gelesen werden, um in einer Signalverarbeitungseinheit 300 parallel ausgeführt zu werden, wobei das parallele Ladefeld nur auf Zugriffsregister innerhalb der Registerdatei 413 der RISC-Steuereinheit 302 zugreifen kann. Darüber hinaus stellen die vier parallelen Signalverarbeitungseinheiten 300A bis 300D vier parallele MAC-Einheiten (Multiplizierer 504A, Addierer 510A und Akkumulator 512) bereit, die gleichzeitig Berechnungen ausführen können. Dies reduziert den Zykluszählwert von den normalerweise vier erforderlichen Zyklen zur Ausführung von vier MACs auf nur einen Zyklus.
  • DATENTYPISIERUNG, AUSRICHTUNG UND PERMUTATION
  • Damit sich die vorliegende Erfindung an die verschiedenen algorithmischen DSP-Strukturen anpassen kann, sieht sie eine flexible Datentypisierung und Ausrichtung, Datentypangleichung und Permutation der Operanden vor. Verschiedene DSP-Algorithmen können Datenabtastwerte mit variierenden Bitbreiten verwenden, wie etwa vier Bits, acht Bits, sechzehn Bits, vierundzwanzig Bits, zweiunddreißig Bits oder vierzig Bits. Darüber hinaus können die Datenabtastwerte real oder komplex sein. In dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung sind die Multiplizierer in den Signalverarbeitungseinheiten sechzehn Bits breit, und die Addierer in den Signalverarbeitungseinheiten sind vierzig Bits breit. Die Operanden werden aus dem Datenspeicher über den X- oder Y-Datenbus in die Signalverarbeitungseinheiten ausgelesen, wobei jeder der Busse in dem bevorzugten Ausführungsbeispiel eine Breite von vierundsechzig Bits aufweist. Die Auswahl dieser Bitbreiten berücksichtigt die Art der verarbeiteten DSP-Algorithmen, die Operanden/Datenabtastwerte, die physikalischen Busbreiten innerhalb einer integrierten Schaltung und die erforderliche Schaltungsfläche für die Implementierung der Addierer und Multiplizierer. Zur flexiblen Behandlung der verschiedenen Datentypen werden die Operanden automatisch durch die vorliegende Erfindung entsprechend an den Addierer oder Multiplizierer angepasst (d.h. ausgerichtet). Wenn sich der Datentyp der Operanden unterscheidet, so ist eine Typenangleichung erforderlich. Vorgesehen ist gemäß der vorliegenden Erfindung eine automatische Typenanpassung zur Verarbeitung unterschiedlicher Operanden. Ferner können verschiedene Permutationen der Operanden wünschenswert sein, wie etwa zur Skalierung eines Vektors durch eine Konstante. In diesem Fall sieht die vorliegende Erfindung flexible Permutationen von Operanden vor.
  • In folgendem Bezug auf die Abbildung aus 6 ist das allgemein Format für den Datentyp eines Operanden gemäß der vorliegenden Erfindung dargestellt. Gemäß der vorliegenden Erfindung kann der Datentyp für einen Operanden in dem Format N × SR für einen realen Datentyp oder in dem Format N × SC für einen komplexen oder imaginären Datentyp dargestellt werden. N bezieht sich auf die Anzahl der Signalverarbeitungseinheiten 300, zu diesen dieser bestimmte Operand geleitet werden sollte. S steht für die Größe des Operanden in Bits. R bezieht sich auf einen realen Datentyp. C bezieht sich auf einen komplexen oder imaginären Datentyp mit einer realen und imaginären numerischen Komponente. In einem Ausführungsbeispiel der vorliegenden Erfindung entspricht die Größe der Multiplikationseinheiten einer Breite von sechzehn Bits, und wobei die Größe der Addierer einer Breite von vierzig Bits entspricht. In einem Ausführungsbeispiel der vorliegenden Erfindung ist der Speicherbus vierundsechzig Bits breit, so dass ein aus dem Speicher übertragener Operand eine Breite im Bereich von null bis vierundsechzig Bits aufweisen kann.
  • Für Multiplikanden weisen die Operanden vorzugsweise eine Multiplikationsbitbreite von 4, 8, 16 und 32 auf. Für Minuenden, Subtrahenden und Addenden weisen die 40-Bit-Addierer vorzugsweise Operanden mit einer Multiplikationsbitbreite von 4, 8, 16, 32 und 40 auf. Für den Fall, dass es sich bei dem Datentyp um einen komplexen Operanden handelt, weist der Operand einen realen Operanden und einen imaginären Operanden auf. Zur Bezeichnung des Typs des ausgewählten Operanden weisen die Steuerregister und Befehle der Befehlsvorratarchitektur ein Datentypfeld zur Bezeichnung des Typs des durch einen Benutzer ausgewählten Operanden auf.
  • In folgendem Bezug auf die Abbildung aus 7 ist ein beispielhaftes Steuerregister der Befehlsvorratarchitektur gemäß der vorliegenden Erfindung dargestellt. In der Abbildung aus 7 ist ein Speicheradressregister 700 zur Steuerung der Auswahl der Operanden aus dem Datenspeicher 202 an die Signalverarbeitungseinheiten 300 dargestellt. Das Speicheradressregister 700 veranschaulicht eine Mehrzahl verschiedener Speicheradressregister, die in einem Befehl durch einen Zeiger rX bezeichnet sind. Jedes der Speicheradressregister 700 weist ein Typenfeld 701, ein CB-Bit 702 für eine Zirkular- und Bitumkehr-Adressierungsunterstützung auf, ein Permutationsfeld 703, einen ersten Adressenversatz 704, einen zweiten Nulladressenversatz 705 und einen Zeiger 706 auf. Das Typenfeld 701 bezeichnet den Datentyp des ausgewählten Operanden. Das Permutationsfeld 703 des Speicheradressregisters 700 ist nachstehend näher beschrieben.
  • In folgendem Bezug auf die Abbildung aus 8 ist eine beispielhafte Anordnung bzw. Gruppe der für die Operanden auszuwählenden Datentypen dargestellt. Der Datentyp ist als ein vier Bitfeld codiert, und zwar in einem Steuerregister, wie etwa dem Speicheradressregister 700, oder ein DSP-Befehl, der direkt einen Operanden aus einem Register oder einem Speicherplatz auswählt. Zum Beispiel weist der Operand für das Datentypfeld 701 mit einem Wert von 0000 einen Datentyp von 1 × 16 real auf. Bei einem weiteren Beispiel für das Datentypfeld 701 mit einem Wert von 0111 weist der Operand einen 2 × 16 komplexen Datentyp auf.
  • Als weiteres Beispiel für das Datentypfeld 701 mit einem Wert von 1001 handelt es sich bei dem Datentyp des Operanden um einen 2 × 32 komplexen Operanden. Das Datentypfeld 701 wird von einem Benutzer ausgewählt, wobei die Anzahl der Operationen bekannt ist, die gemeinsam parallel durch die Signalverarbeitungseinheiten 300 verarbeitet werden (d.h. N des Datentyps), sowie die Bitbreite der Operanden (d.h. S des Datentyps).
  • Das Permutationsfeld in den Steuerregistern wie etwa dem Speicheradressregister 700 und Befehle ermöglichen das Übertragen und den Austausch von Operanden zwischen den Signalverarbeitungseinheiten 300. In direktem neuerlichen Bezug auf die Abbildung aus 3 weisen der X-Datenbus 531, der Y-Datenbus 533 und der Z-Datenbus 532 zwischen dem Datenspeicher 202 und den Signalverarbeitungseinheiten 300 eine Breite von vierundsechzig Bits auf. Da vier Signalverarbeitungseinheiten 300A bis 300D vorgesehen sind, ist es häufig wünschenswert, dass jede der Einheiten einen Operanden über einen Speicherzugriff auf den Datenspeicher 202 empfängt. In anderen Fällen kann es wünschenswert sein, dass jede der Signalverarbeitungseinheiten 300A bis 300D Zugriff auf den gleichen Operanden aufweist, so dass dieser zu jeder Einheit übertragen wird.
  • In folgendem Bezug auf die Abbildung aus 9 ist eine beispielhafte Anordnung von Permutationen zur Auswahl von Operanden für die Signalverarbeitungseinheiten dargestellt. Die Permutation ist in dem bevorzugten Ausführungsbeispiel als ein Feld von fünf Bits codiert, und zwar entweder in einem Steuerregister, wie etwa dem Permutationsfeld 702 in dem Speicheradressregister 700, oder in einem DSP-Befehl Das Permutationsfeld sieht die Fähigkeit zur Bezeichnung vor, wie 16-Bit-Erhöhungen des 64-Bit-Datenbusses in jede der Signalverarbeitungseinheiten 300A bis 300D gekoppelt sind. In Bezug auf die Abbildung aus 9 können die vierundsechzig Bits des X-Datenbusses 531/Y-Datenbusses 533 (in den 2 bis 3 als Datenbusse 203 bezeichnet) oben von rechts nach links wie folgt bezeichnet sein: 0–15, 16–31, 32–47 und 48–63. Die Permutation der Operanden an dem Datenbus für das gegebene Permutationsfeld befindet sich in der Mitte, während der Permutationstyp auf der rechten Seite aufgeführt ist. Die Datenbuspermutationen in der Mitte sind als die Permutationen 203A bis 203L bezeichnet.
  • Während die Daten auf dem entsprechenden Datenbus ihre Position nicht verändern, ordnet das 5-Bit-Permutationsfeld, das links neben dem 64-Bit-Datenbus angeordnet ist, den Empfang eines 16-Bit-Datenfelds (bezeichnet als A, B, C und D) an dem entsprechenden Datenbus durch jede der Signalverarbeitungseinheiten 300A bis 300D neu an. Auf diese Weise wird der gewünschte Permutationstyp ausgewählt. Das heißt, die am weitesten rechts angeordnete Spalte mit sechzehn Bits gilt als über die Permutationen in den SP3 300D gekoppelt. Die von rechts betrachtet zweite Spalte gilt als über die Permutationen in die Signalverarbeitungseinheit SP2 300C gekoppelt. Die dritte Spalte von rechts gilt als über die Permutationen in die Signalverarbeitungseinheit SP1 300B gekoppelt. Die am weitesten links angeordnete Spalte, die vierte Spalte von rechts, gilt als über die Permutationen in die Signalverarbeitungseinheit SP0 300A gekoppelt.
  • Bei einem regulären Zugriff ohne eine Permutation, die einer Datenbuspermutation 203A entspricht, sind die Bits 0 bis 15 des Datenbusses mit D bezeichnet, wobei die Bits 16 bis 31 mit C bezeichnet sind, während die Bits 32 bis 47 mit B bezeichnet sind, und wobei die Bits 48 bis 63 mit A bezeichnet sind. Dies entspricht einem Permutationsfeld von 00000 in der ersten Reihe, Permutation 203A, des Diagramms aus 9. Bei ausgewähltem regulärem Zugriff für jede der Signalverarbeitungseinheiten 300A bis 300D auf den Datenbus mit 64 Bits, sind zum Beispiel die mit A gekennzeichneten sechzehn Bits in den SP3 300D gekoppelt. Die sechzehn mit D gekennzeichneten Bits sind in die Signalverarbeitungseinheit SP2 300C gekoppelt. Die sechzehn mit C gekennzeichneten Bits sind in die Signalverarbeitungseinheit SP1 300B gekoppelt. Die sechzehn mit D gekennzeichneten Bits sind in die Signalverarbeitungseinheit SP0 300A gekoppelt.
  • In dem Permutationsfeld steuert das werthöchste Bit (Bit 26 aus 9), ob die Bits des oberen Halbwortes und die Bits des unteren Halbwortes des Datenbusses austauschbar in die Signalverarbeitungseinheiten 300 eingegeben werden. Zum Beispiel aus dem Blickwinkel der Signalverarbeitungseinheiten 300A bis 300D erscheint der Datenbus als Datenbuspermutation 203B im Vergleich zu der Permutation 203A. In diesem Fall werden die kombinierten Datenfelder A und B mit den kombinierten Datenfeldern C und D als die Permutationen über die Signalverarbeitungseinheiten ausgetauscht. Die nächsten beiden Bits des Permutationsfelds (Bits 25 und 24 des Permutationsfelds 702) bestimmen, wie die Datenfelder A und B des oberen Halbwortes über die Signalverarbeitungseinheiten permutiert werden. Die untersten beiden Bits des Permutationsfelds (Bits 23 und 22 des Permutationsfelds 702) bestimmen, wie die Datenfelder C und D des unteren Halbwortes über die Signalverarbeitungseinheiten permutiert werden.
  • Betrachtet wird zum Beispiel der Fall, wenn es sich bei dem Permutationsfeld 703 um 00100 handelt, das der Permutation 203C entspricht. In diesem Fall handelt es sich bei dem Permutationstyp um eine Permutation an Halbwörtern der oberen Bits der Datenfelder A und B. Im Vergleich zu der Permutation 203A empfängt die Signalverarbeitungseinheit SP1 300B das Datenfeld A, und die Signalverarbeitungseinheit SP0 300A empfängt das Datenfeld B in der Permutation 203C.
  • Betrachtet wird ein anderes Beispiel, bei dem es sich bei dem Permutationsfeld 703 um das Bitmuster 00001 handelt, das der Permutation 203D entspricht. In diesem Fall handelt es sich bei dem Permutationstyp um eine Permutation von Halbwörtern der unteren Bits der Datenfelder C und D, wobei die Datenbusfelder von C und D ausgetauscht werden, um Halbwörter der unteren Bits des Datenbusses zu permutieren. Im Vergleich zu der Permutation 203A empfängt die Signalverarbeitungseinheit SP3 300D das Datenfeld C, und die Signalverarbeitungseinheit SP2 300C empfängt das Datenfeld D in der Permutation 203D.
  • Gemäß der vorliegenden Erfindung können beide Gruppen der oberen Bis und der unteren Bits gemeinsam einer Permutation unterzogen werden. In dem Fall, in dem das Permutationsfeld 703 einem Bitmuster 00101 entspricht, entspricht dies der Permutation 203E. In diesem Fall permutiert der Permutationstyp Halbwörter für die oberen und die unteren Bits, so dass A und B die Positionen tauschen, und wobei C und D die Positionen tauschen. Im Vergleich zu der Permutation 203A empfängt die Signalverarbeitungseinheit SP3 300D das Datenfeld C, wobei die Signalverarbeitungseinheit SP2 300C das Datenfeld D empfängt, wobei die Signalverarbeitungseinheit SP1 300B das Datenfeld A empfängt, und wobei die Signalverarbeitungseinheit SP0 300A das Datenfeld B in der Permutation 203E empfängt.
  • Die Permutationen der Halbwörter können gemäß der vorliegenden Erfindung auch mit dem Austausch der oberen und unteren Bits kombiniert werden. In folgendem Bezug auf die Permutation 203F handelt es sich bei dem Permutationsfeld 703 um ein Bitmuster 10100. In diesem Fall werden die oberen und unteren Bits ausgetauscht und eine Permutation des Halbwortes der oberen Bits wird ausgeführt, so dass A und B und C und D getauscht werden, und wobei danach C und D an dem Halbwort einer Permutation unterzogen werden. Im Vergleich zu der Permutation 203A empfängt die Signalverarbeitungseinheit SP3 300D das Datenfeld B, wobei die Signalverarbeitungseinheit SP2 300C das Datenfeld A empfängt, wobei die Signalverarbeitungseinheit SP1 300B das Datenfeld C empfängt, und wobei die Signalverarbeitungseinheit SP1 300A das Datenfeld D in der Permutation 203F empfängt. In folgendem Bezug auf die Permutation 203G handelt es sich bei dem Permutationsfeld 703 um ein Bitmuster 10001. In diesem Fall werden die Datenbusfelder ausgetauscht, und eine Permutation an dem Halbwort der unteren Bits wird ausgeführt, was zu einer Neuausrichtung der Datenbusfelder führt, wie dies in der Permutation 203G dargestellt ist. In folgendem Bezug auf die Permutation 203H entspricht das Permutationsfeld 703 einem Bitmuster 10101. In diesem Fall werden die Datenbusfelder ausgetauscht, und eine Permutation der Halbwörter an den oberen Bits und den unteren Bits ist aufgetreten, die zu einer Neuausrichtung der Datenbusfelder geführt hat, wie dies in der Permutation 203H dargestellt ist.
  • Durch das Permutationsfeld wird auch eine Übertragung vorgesehen, wie dies durch die Permutationen 203I, 203J, 203K und 203L dargestellt ist. Zum Beispiel wird in Bezug auf die Permutation 203I angenommen, dass diese einem Permutationsfeld 703 eines Bitmusters 01001 entspricht. In diesem Fall wird das Datenfeld A zu jeder der Signalverarbeitungseinheiten 300A bis 300D übertragen. Das heißt, jede der Signalverarbeitungseinheiten 300A bis 300D liest das Datenfeld A von dem Datenbus als Operand. Für die Permutation 203J mit dem Permutationsfeld mit dem Bitmuster 01100 wird das Datenfeld B zu jeder der Signalverarbeitungseinheiten übertragen. Für die Permutation 203K mit dem Permutationsfeld mit einem Bitmuster 00010 wird das Datenfeld C zu jeder der Signalverarbeitungseinheiten 300A bis 300D übertragen. Für die Permutation 203L entspricht das Permutationsfeld einer Kombination 00011, und das Datenfeld D wird zu jeder der Signalverarbeitungseinheiten 300A bis 300D übertragen. Auf diese Weise können verschiedene Kombinationen von Permutationen und des Austauschs von Datenbusfeldern an dem Datenbus für eine Neuausrichtung in die entsprechenden Signalverarbeitungseinheiten 300A bis 300D ausgewählt werden.
  • Der Z-Ausgangsbus 532 führt die Ergebnisse der Ausführungseinheiten zurück zu dem Speicher. Die Daten an dem Z-Ausgangsbus 532 werden nicht permutiert oder typisiert, während sie zurück zu dem Speicher verlaufen. Die entsprechenden Signalverarbeitungseinheiten 300A bis 300D steuern die entsprechende Anzahl von Datenbits (16, 32 oder 64) auf den Z-Ausgangsbus 532, und zwar abhängig von der Art der Operationen. Der Speicher schreibt die von dem Z-Ausgangsbus 532 empfangenen Daten unter Verwendung von Halbwort-Strobes, die mit den Daten transportiert werden, um die Gültigkeit anzuzeigen.
  • In folgendem Bezug auf die Abbildung aus 10 veranschaulicht ein Querschnitts-Blockdiagramm die Datentypisierungs- und Ausrichtungseinrichtungen 502A, 502B, 502C und 502D der entsprechenden Signalverarbeitungsblöcke 300A, 300B, 300C und 300D. Jede der Datentypisierungs- und Ausrichtungseinrichtungen 502A, 502B, 502C und 502D weist eine Instanz eines Bus-Multiplexers 1001 für den X-Bus 531 und einen Bus-Multiplexer 1002 für den Y-Bus 513 auf. Zum Beispiel weist die Datentypisierungs- und Ausrichtungseinrichtung 502A der Signalverarbeitungseinheit SP0 300A den Bus-Multiplexer 1001A und den Bus-Multiplexer 1002A auf. Ein Eingang des Multiplexers 1001A ist mit dem X-Bus 531 gekoppelt, und ein Ausgang ist mit dem SX0-Bus 1005A gekoppelt. Ein Eingang des Bus-Multiplexers 1002A ist mit dem Y-Bus 533 gekoppelt, und ein Ausgang ist mit dem SY0-Bus 1006A gekoppelt. Ein Steuerbus 1011 ist mit jeder Instanz der Bus-Multiplexer 1001 gekoppelt, was jeweils eine unabhängige Steuerung vorsieht, um die Datentypisierungsausrichtung und jede für den X-Bus 531 in die Signalverarbeitungseinheiten ausgewählte Permutation auszuführen. Ein Steuersignalbus 1011 ist in jeden der Bus-Multiplexer 1001A bis 1001D gekoppelt. Ein Steuersignalbus 1012 ist in jeden der Bus-Multiplexer 1002A bis 1002D gekoppelt. Die Steuersignalbusse 1011 und 1012 sehen eine unabhängige Steuerung jedes Bus-Multiplexers vor, um die Datentypisierungsausrichtung und jede für den X-Bus 531 und entsprechend den Y-Bus 533 ausgewählte Permutation in die Signalverarbeitungseinheiten 300 auszuführen. Die Ausgaben SX0 Bus 1005 uns SY0 Bus 1006 von jedem der Bus-Multiplexer 1001 und 1002 sind in die Multiplexer der Addierer und Multiplizierer in den entsprechenden Signalprozessoren 300 gekoppelt, und zwar zur Auswahl als entsprechende X- und Y-Operanden.
  • In folgendem Bezug auf die Abbildung aus 11 ist eine Instanz jedes Bus-Multiplexers 1001 und 1002 entsprechend mit 1001 und 1002 bezeichnet dargestellt. Jede Instanz des Bus-Multiplexers 1001 weist die Multiplexer 1101 und 1102 auf, um Daten von dem X-Bus 531 innerhalb jeder Signalverarbeitungseinheit 300 entsprechend auf jeden SXA-Bus 550 und SXM-Bus 552 zu multiplexieren. Jede Instanz des Bus-Multiplexers 1002 weist die Multiplexer 1104 und 1106 auf, um Daten von dem Y-Bus 533 auf jeden SYA-Bus 554 und entsprechend jeden SYM-Bus 556 innerhalb der Signalverarbeitungseinheit 300 zu multiplexieren. In dem bevorzugten Ausführungsbeispiel ist der X-Bus 531 vierundsechzig Bits breit, wobei diese alle zur Auswahl in die Multiplexer 1101 und 1102 gekoppelt sind. In dem bevorzugten Ausführungsbeispiel ist der Y-Bus 533 vierundsechzig Bits breit, die alle zur Auswahl in die Multiplexer 1104 und 1106 gekoppelt sind. Der Ausgang SXA 550 des Multiplexers 1101 und der Ausgang SYA 554 des Multiplexers 1104 in dem bevorzugten Ausführungsbeispiel sind jeweils vierzig Bits breit, zur Kopplung in den Addierer A1 510A und den Addierer A2 510B. Der Ausgang SXM 552 des Multiplexers 1102 und der Ausgang SYM 556 des Multiplexers 1106 in dem bevorzugten Ausführungsbeispiel sind jeweils sechzehn Bits breit, zur jeweiligen Kopplung in den Multiplizierer M1 504A. Die Ausgangsbusse SXA 550 und SXM 552 bilden die in der Abbildung aus 10 veranschaulichten SX-Busse 1005 für jede Signalverarbeitungseinheit 300. Die Ausgangsbusse SYA 554 und SYM 556 bilden die SY-Busse 1006 gemäß der Abbildung aus 10 für jede Signalverarbeitungseinheit 300.
  • Der Steuersignalbus 1011 weist einen Steuersignalbus 1011A auf, der in jeden Multiplexer 1101 gekoppelt ist, und einen Steuersignalbus 1011B, der in jeden Multiplexer 1102 gekoppelt ist, zur jeweils unabhängigen Steuerung dieser. Der Steuersignalbus 1012 weist einen Steuersignalbus 1012A auf, der in jeden Multiplexer 1104 gekoppelt ist, und einen Steuersignalbus 1012B, der in jeden Multiplexer 1106 gekoppelt ist, zur jeweils unabhängigen Steuerung dieser.
  • Die Multiplexer 1101 und 1102 in jeder der Datentypisierungs- und Ausrichtungseinrichtungen 502 jeder Signalverarbeitungseinheit empfangen die gesamte Datenbusbreite des X-Busses 531. Die Multiplexer 1104 und 1106 in jeder der Datentypisierungs- und Ausrichtungseinrichtungen 502 jeder Signalverarbeitungseinrichtung empfangen die gesamte Datenbusbreite des Y-Busses 533. Wenn alle Bits jedes Datenbusses zur Verfügung stehen, können die Multiplexer 1101, 1102, 1104 und 1106 die flexible Datentypisierung, Datenausrichtung und Permutation der Operanden ausführen. Als Reaktion auf die Steuersignale der Steuersignalbusse 1011 und 1012 wählt jeder der Multiplexer 1101, 1102, 1104 und 1106 unabhängig aus, welche Bits des X-Busses 531 oder des Y-Busses 533 für den entsprechenden Operanden für den entsprechenden Signalprozessor 300 verwendet werden sollen, wobei die Bits in entsprechende Bitpositionen an den Ausgangsbussen SXA 550, SXM 552, SYA 554 und SYM 556 entsprechend ausgerichtet werden, zur Verwendung durch 16-Bit-Multiplizierer (M1 504A) und 40-Bits-Addierer (A1 510A und A2 510B).
  • Während dem Ausrichtungsvorgang fügen die Multiplexer 1101, 1102, 1104 und 1106 ferner logische Nullen und/oder Einsen in entsprechende Bitpositionen ein, um eine entsprechende Ausrichtung umzusetzen und um Vorzeichen- und Schutz-Biterweiterungen vorzusehen. Zum Beispiel kann der Multiplexer 1101A der Signalverarbeitungseinheit 300A die Bits 0 bis 15 der vierundsechzig Bits des X-Busses 531 als den Operanden für den Addierer auswählen und diese Bits in die Bitpositionen 31 bis 16 multiplexieren und Nullen in den Bitpositionen 0 bis 15 einfügen und das Bit 31 per Vorzeichen in die Bitpositionen 32 bis 39 erweitern, so dass ein 40-Bit-Operand an dem SXA-Bus 550 erzeugt wird. Zur Ausführung von Permutationen wählen die Multiplexer aus, welche sechzehn Bits (A, B, C oder D) der vierundsechzig Bits des X-Busses und des Y-Busses von der entsprechenden Signalverarbeitungseinheit 300 empfangen werden. Zum Beispiel würde in Bezug auf eine Übertragung von A auf dem Y-Bus 533 für eine Multiplikationsoperation jeder der Multiplexer 1106 für jede Signalverarbeitungseinheit 300 die Bits 0 bis 15 (die A entsprechen) von dem Y-Bus 533 auswählen, und zwar für einen Empfang durch alle Signalverarbeitungseinheiten 300 auf ihren entsprechenden SYM-Bussen 556.
  • Die Multiplexer 1101, 1102, 1104 und 1105 wandeln als Reaktion auf die entsprechenden Steuersignale automatisch die Anzahl der Datenbits von dem Datenbus in die entsprechende Anzahl von Datenbits eines Operanden um, den der Addierer verwenden kann. Als Reaktion auf die entsprechenden Steuersignale wählen ferner die Multiplexer 1101, 1102, 1104 und 1105 die entsprechenden Daten von dem X-Bus und dem Y-Bus aus. Zu diesem Zweck arbeiten die Multiplexer 1101, 1102, 1104 und 1105 in jeder Signalverarbeitungseinheit mehr wie Koppelpunktschalter bzw. Koppelpunkt-Switches, wobei jedes Bit auf dem X- oder Y-Bus in jedes Bit der SXA-, SXM-, SYA- oder SYM-Busse ausgegeben werden kann, und wobei logische Nullen/Einsen in jedes Bit der SXA-, SXM-, SYA- oder SYM-Busse ausgegeben werden kann. Auf diese Weise können die Multiplexer 1101, 1102, 1104, 1106 eine Permutationsfunktion ausführen und die Bits entsprechend zur Verwendung durch einen 40-Bit-Addierer oder einen 16-Bit-Multiplizierer ausrichten.
  • In folgendem Bezug auf die Abbildungen der 12A bis 12G sind Diagramme der Ausrichtung realer und imaginärer flexibler Datentypen für die 16-Bit-Multiplizierer und die 40-Bit-Addierer des bevorzugten Ausführungsbeispiels der vorliegenden Erfindung dargestellt. In jeder Reihe bzw. Zeile jedes Diagramms ist der Datentyp in der ganz linken Spalte dargestellt, wobei die Ausgabe auf einen oder mehrere der SXA-, SYA-, SXM- oder SYM-Datenbusse in der zentralen Spalte dargestellt ist, und wobei in der am weitesten rechts angeordneten Spalte die äquivalente Signalverarbeitungskonfiguration der Signalprozessoren 300A bis 300D eines Kernprozessors 200 zur Ausführung einer Operation dargestellt ist. Der Datentyp ist in einem vektorisierten Format dargestellt, unter Verwendung der Variable N zur Bezeichnung der Anzahl der Vektoren oder der Häufigkeit, mit welcher der Operand eingesetzt wird. Wenn die Variable N Eins ist, so wird erwartet, dass eine Operation mit der Gruppe von X- und Y-Operanden ausgeführt wird. Wenn die Variable N gleich Zwei ist, wird erwartet, dass zwei Operationen gemeinsam in einem Zyklus an zwei Gruppen von X- und Y-Operanden ausgeführt werden. In jedem Fall müssen Datentypen mit zwei Operanden spezifiziert werden, und wenn keine Übereinstimmung gegeben ist, muss eine Datentypangleichung bzw. ein Datentypabgleich ausgeführt werden, wie dies nachstehend im Text in Bezug auf die Abbildungen der 13A bis 13C, 14 und 15 beschrieben wird.
  • Zum Beispiel können die Datentypen 1 × 4R, 1 × 8R, 1 × 16R, 1 × 32R, 2 × 4R, 2 × 8R, 2 × 16R, 1 × 4C, 1 × 8C, 1 × 16C, 1 × 32C, 2 × 4C, 2 × 8C und 2 × 16C alle parallel über die 64 Bit X- und/oder Y-Busse parallel in die Signalverarbeitungseinheiten geladen werden, indem sie in vier oder acht 16-Bit-Felder gepackt werden. Die vollständige Bitbreite der Datentypen 2 × 32R, 1 × 40R und 1 × 40C kann gemeinsam in einem Zyklus in die Signalverarbeitungseinheiten geladen werden, wenn beide 64 Bits der X- und Y-Busse verwendet werden, um zwei Operanden während dem gleichen Zyklus zu laden. Die Datentypen von 2 × 32C oder höherer Ordnung können mehrere Zyklen zum Laden der Operanden über die 64 Bit X- und/oder Y-Busse erfordern. Zudem kann ein oberes Halbwort (d.h. sechzehn Bits) eines 32-Bit- oder 40-Bit-Operanden verwendet werden, um zum Beispiel einen Angleich an einen 16-Bit-Multiplizierer vorzusehen. In diesem Fall können die niedrigeren Bits entsorgt werden, da sie für den Betrieb bzw. die Funktionsweise bedeutungslos sind. Andere Bitbreiten eines Halbwortes sind möglich für die Angleichung anderer Hardwarekomponenten einer bestimmten Bitbreite. Der Einsatz von Halbwörtern ermöglicht das Laden der Datentypen 2 × 32R, 1 × 40R und 1 × 40C und der Operanden in weniger Signalverarbeitungseinheiten und vermeidet Transportpfade, die ansonsten erforderlich sein würden.
  • In folgendem Bezug auf die Abbildung aus 12A zeigt diese ein beispielhaftes Diagramm für die Ausrichtung der Datentypen 1 × 4R, 1 × 8R, 1 × 16R, 1 × 32R und 1 × 40R in einen 40-Bit-Addierer. Mit Ausnahme des 40-Bit-Datentyps von 1 × 40R befindet sich das Vorzeichenbit in jedem Fall in dem Bit 31 des 40-Bit-Datentwortes und ist in die 40-Bit-Addierer gekoppelt. Das Datenfeld stammt in jedem Fall aus dem Speicher an dem X- oder Y-Bus oder von einem Register von einem andern Bus.
  • Das 4-Bit-Datenfeld eines 1 × 4R-Datentyps von dem X- oder Y-Bus wird an den Bitpositionen 28 bis 31 mit dem Vorzeichenbit in dem Bit 31 des SXA- oder SYA-Busses ausgerichtet. Das Vorzeichenbit ist als das werthöchste Bit (MSB) in einem 4-, 8-, 16- oder 32-Bit-Wort eines Operanden enthalten. Nullen sind gepackt oder eingefügt in die wertniedrigsten Bits (LSBs) der Bits 0 bis 27 des SXA-Busses oder des SYA-Busses, so dass sie eine Ausfüllfunktion erfüllen. Schutzbits, welche das erweiterte Vorzeichenbit 31 aufweisen, werden den Bits 32 bis 39 von SXA oder SYA zugeordnet. Auf diese Weise wird der 1 × 4R Datentyp in ein 40-Bit-Wort umgewandelt, das von einem der 40-Bit-Addierer in einer Signalverarbeitungseinheit 300 für eine Additions-, Subtraktions- oder eine Min/Max-Operation verwendet wird.
  • Das 8-Bit-Datenfeld des 1 × 8R-Datentyps von dem X- oder Y-Bus wir in die Bits 24 bis 31 von SXA oder SYA mit einem Vorzeichenbit in dem Bit 31 zugeordnet. Nullen werden in die LSBs der Bits 0 bis 23 gepackt oder eingefügt. Schutzbits, welche das erweiterte Vorzeichenbit 31 aufweisen, werden den Bits 32 bis 39 zugeordnet. Auf diese Weise wird der 1 × 8R Datentyp in ein 40-Bit-Datenwort umgewandelt, das von einem der 40-Bit-Addierer in einer Signalverarbeitungseinheit 300 für eine Additions-, Subtraktions- und/oder Min/Max-Operation verwendet wird.
  • Für einen 1 × 16R Datentyp wird das 16 Bit Datenfeld von dem X- oder Y-Bus in den Bits 16 bis 31 ausgerichtet, wobei das Vorzeichenbit in Bit 31 auf dem SXA- oder dem SYA-Bus enthalten ist. Nullen werden in die LSBs der Bits 0 bis 15 gepackt oder eingefügt, während Schutzbits den Bits 32 bis 39 zugeordnet werden. Auf diese Weise wird der 1 × 16R Datentyp in ein 40-Bit-Wort umgewandelt, das von einem der 40-Bit-Addierer in einer Signalverarbeitungseinheit 300 für eine Additions-, Subtraktions- und/oder Min/Max-Operation verwendet wird.
  • Für einen 1 × 32R Datentyp wird das 32-Bit-Datenfeld von dem X- oder Y-Bus in die Bits 0 bis 31 ausgerichtet, wobei das Vorzeichenbit als das Bit 31 enthalten ist. Die Schutzbits, die das erweiterte Vorzeichenbit 31 aufweisen, werden gemeinsam in die Bits 32 bis 39 gepackt, um das 40-Bit-Wort fertig zu stellen. Auf diese Weise wird der 1 × 32R Datentyp in ein 40-Bit-Wort umgewandelt, das von einem der 40-Bit-Addierer in einer Signalverarbeitungseinheit 300 für eine Additions-, Subtraktions- und/oder Min/Max-Operation verwendet wird.
  • Für einen 1 × 40R Datentyp werden alle vierzig Bits des Datenfelds von dem X- oder Y-Bus in die Bits 0 bis 39 des SXA- oder SYA-Busses zugeordnet, so dass ein Addierer einer Signalverarbeitungseinheit eine Additions-, Subtraktions- und/oder Min/Max-Operation unter gleichzeitiger Verwendung aller vierzig Bits des Datenfelds ausführen kann.
  • Wie dies bereits vorstehend im Text beschrieben worden ist, erleichtern die Multiplexer 1101 und 1104 die Umwandlung realer Datentypen in 40-Bit-Felder zur Verwendung durch einen 40-Bit-Addierer in einer Signalverarbeitungseinheit. Jeder dieser Multiplexer wechselt die Datenfelder in die entsprechenden Bitpositionen, einschließlich des Vorzeichenbits und füllender Nullen in die nicht verwendeten LSBs, und wobei die Schutzbits nach Bedarf dem SXA-Bus 550 und dem SYA-Bus 554 zugeordnet werden.
  • In folgendem Bezug auf die Abbildung aus 12B ist ein beispielhaftes Diagramm der Ausrichtung der realen Datentypen 1 × 4R, 1 × 8R, 1 × 16R, 1 × 32R und 1 × 40R in 16-Bit-Wörter für 16-Bit-Multiplizierer dargestellt. Für einen 1 × 4R Datentyp werden die Bits 0 bis 3 des 4-Bit-Datenfelds von dem X- oder Y-Bus in die Bitpositionen 12 bis 15 des entsprechenden SXM- oder SYM-Busses zugeordnet. Nullen werden in die wertniedrigsten Bits (LSBs) der Bits 0 bis 11 des SXA- oder SYA-Busses gepackt oder eingefügt, um auszufüllen. Auf diese Weise wird ein Datenabtastwert des Datentyps 1 × 4R in ein 16-Bit-Wort umgewandelt, das von einem der 16-Bit-Multiplizierer in einer Signalverarbeitungseinheit 300 für eine Multiplikation oder eine MAC-Operation verwendet wird.
  • Für einen Datentyp 1 × 8R befinden sich die Bits 0 bis 7 des 8-Bit-Datenfelds von dem X- oder Y-Bus in den entsprechenden Bits 8 bis 15 des SXM- oder SYM-Busses, wobei die Nullen in die Bits 0 bis 7 gepackt sind. Auf diese Weise wird der Datentyp 1 × 8R in ein 16-Bit-Wort zur Verwendung durch einen 16-Bit-Multiplizierer einer Signalverarbeitungseinheit 300 umgewandelt.
  • Für einen 1 × 16R Datentyp werden die Bits 0 bis 15 des 16-Bit-Datenfelds des X- oder Y-Busses in den Bits 0 bis 15 des SXM- oder SYM-Busses ausgerichtet, so dass eine Signalverarbeitungseinheit alle 16 Bits gleichzeitig multiplizieren kann.
  • Für einen Datentyp von 1 × 32R werden die Bits 0 bis 32 des Datenfelds von dem X- oder Y-Bus in zwei 16-Bit-Halbwörter aufgeteilt. Die Bits 16 bis 31 werden in ein oberes Halbwort in die Bits 0 bis 15 des SXM- oder SYM-Busses einer Signalverarbeitungseinheit 300 ausgerichtet. In einem Ausführungsbeispiel wird auf die Bits 0 bis 15 des unteren Halbwortes des Operanden verzichtet, da sie nicht von Bedeutung sind. In diesem Fall wird eine Signalverarbeitungseinheit verwendet, um die sechzehn Informationsbits des oberen Halbwortes für jeden Operanden zu verarbeiten. In einem alternativen Ausführungsbeispiel kann das untere Halbwort der Bits 0 bis 15 in die Bits 0 bis 15 des SXM- oder SYM-Busses einer anderen Signalverarbeitungseinheit ausgerichtet werden. In diesem Fall werden zwei Signalverarbeitungseinheiten verwendet, um die sechzehn Informationsbits für jedes Halbwort zu multiplizieren, und wobei die Signalverarbeitungseinheit niedriger Ordnung einen Übertragssignalpfad zu der Signalverarbeitungseinheit höherer Ordnung aufweist, um das 32-Bit-Datenfeld zu verarbeiten. Unter Verwendung eines Ausführungsbeispiels ohne einen Übertragssignalpfad zwischen den Signalverarbeitungseinheiten reduziert sich jedoch die Verarbeitungszeit.
  • Für einen Datentyp von 1 × 40R werden die Bits 0 bis 39 des 40-Bit-Datenfelds von dem X- oder Y-Bus in einem Ausführungsbeispiel auf ein 16-Bit-Halbwort reduziert, in dem die acht werthöchsten Bits (MSBs) und die sechzehn wertniedrigsten Bits (LSBs) entsorgt werden. In diesem Fall werden die Bits 16 bis 31 der vierzig Bits für den ursprünglichen Operanden als Multiplikationsoperand für eine Signalverarbeitungseinheit ausgewählt.
  • Wie dies bereits vorstehend im Text beschrieben worden ist, erleichtern die Multiplexer 1102 und 1106 die Umwandlung realer Datentypen in 16-Bit-Felder zur Verwendung durch einen 16-Bit-Addierer in einer Signalverarbeitungseinheit. Jeder dieser Multiplexer wechselt die Datenfelder an die entsprechenden Bitpositionen mit füllenden Nullen in die nicht verwendeten LSBs, wie dies für die SXM-Busse 552A/552B und die SYM-Busse 556A/556B erforderlich ist. Jeder der Multiplexer 1102 und 1106 führt die Permutationsoperation, die Ausrichtungsoperation und die Nulleinfügung für die entsprechenden Multiplizierer in jeder der Signalverarbeitungseinheiten 300A bis 300D aus.
  • In folgendem Bezug auf die Abbildung aus 12C zeigt diese ein beispielhaftes Diagramm der Ausrichtung komplexer Datentypen 1 × 4C, 1 × 8C, 1 × 16C, 1 × 32C, 1 × 32C und 1 × 40C in eines oder mehrere 40-Bit-Wörter für einen oder mehrere 40-Bit-Addierer.
  • Für komplexe Datentypen werden mindestens zwei Signalverarbeitungseinheiten verwendet, um die komplexen Berechnungen der realen und imaginären Terme auszuführen. Für die 40-Bit-Addierer empfängt für gewöhnlich eine Signalverarbeitungseinheit des realen Datenabschnitts, während eine andere Signalverarbeitungseinheit den imaginären Datenabschnitt komplexer Datentypoperanden empfängt.
  • Für einen Datentyp 1 × 4C werden die Bits 0 bis 4 des realen Datenfelds entsprechend in die Bits 28 bis 31 ausgerichtet, mit einem Vorzeichenbit an der Bitposition 31 eines ersten 40-Bit-Wortes. Schutzbits werden den Bitfeldern 32 bis 39 hinzugefügt, während Nullen in die Bits 0 bis 27 des ersten 40-Bit-Wortes eingefügt werden. In ähnlicher Weise werden die Bits 0 bis 4 des imaginären Datenfelds entsprechend in den Bits 28 bis 31 ausgerichtet, mit einem Vorzeichenbit an der Bitposition 31 eines zweiten 40-Bit-Wortes. Schutzbits werden den Bits 32 bis 39 zugeordnet, während Nullen in die Bits 0 bis 27 de zweiten 40-Bit-Wortes gepackt werden. Auf diese Weise werden 1 × 4C komplexe Datentypen in zwei 40-Bit-Wörter als Operanden für zwei 40-Bit-Addierer in zwei Signalverarbeitungseinheiten umgewandelt.
  • Für einen Datentyp 1 × 8C befinden sich die Bits 0 bis 7 des realen Datenfelds von dem X- oder Y-Bus an den Bitpositionen 24 bis 31, mit einem Vorzeichenbit an der Bitposition 31 eines 40-Bit-Operanden auf einem der SXA- oder SYA-Busse. Schutzbits werden den Bitpositionen 32 bis 39 zugeordnet, während Nullen in die Bits 0 bis 23 des ersten 40-Bit-Operanden gepackt werden. Die Bits 0 bis 7 des komplexen Datenfelds von dem X- oder Y-Bus wird in die Bits 24 bis 31 ausgerichtet, wobei sich ein Vorzeichenbit an der Bitposition 31 eines zweiten 40-Bit-Operanden befindet, auf einem anderen SXA- oder SYA-Busse. Schutzbits, die zu Beginn auch alle Nullen sind, werden den Bitpositionen 32 bis 39 zugeordnet, während Nullen in die Bits 0 bis 23 des zweiten 40-Bit-Operanden gepackt werden. Auf diese Weise werden 1 × 8C komplexe Datentypen in zwei 40-Bit-Wörter als Operanden für zwei 40-Bit-Addierer in zwei Signalverarbeitungseinheiten umgewandelt.
  • Für einen 1 × 16C Datentyp werden die Bits 0 bis 16 des realen Datenfelds von dem X- oder Y-Bus in die Bits 16 bis 31 zugeordnet, mit einem Vorzeichenbit an der Bitposition 31 für einen ersten 40-Bit-Operanden an einem der SXA- oder SYA-Busse. Schutzbits werden den Bitpositionen 32 bis 39 zugeordnet, wobei Nullen in die Bitpositionen 0 bis 15 des ersten 40-Bit-Operanden gepackt werden. In ähnlicher Weise werden die Bits 0 bis 16 des imaginären Datenfelds von dem X- oder Y-Bus in die Bits 16 bis 31 ausgerichtet, mit einem Vorzeichenbit in dem Bit 31 für einen zweiten 40-Bit-Operanden auf einem anderen der SXA- oder SYA-Busse. Schutzbits sind den Bitpositionen 32 bis 39 zugeordnet, und Nullen werden in die Bitpositionen 0 bis 15 des zweiten 40-Bit-Operanden auf dem SXA- oder SYA-Bus gepackt.
  • Für einen 1 × 32C Datentyp werden die Bits 0 bis 31 der 32 Bits realer Daten entsprechend in die Bits 0 bis 31 ausgerichtet, mit einem Vorzeichenbit an der Bitposition 31 eines ersten 40- Bit-Operanden auf feinem der SXA- oder SYA-Busse. Schutzbits werden den Bitpositionen 32 bis 39 für den ersten 40-Bit-Operanden zugeordnet. In ähnlicher Weise werden die Bits 0 bis 31 des imaginären Datenfelds in die Bitpositionen 0 bis 31 zugeordnet, mit dem Vorzeichenbit an der Bitposition 31 eines zweiten 40-Bit-Operanden an einem anderen der SXA- oder SYA-Busse. Schutzbits werden in die Bits 32 bis 39 des zweiten 40-Bit-Operanden eingefügt. Somit wird der 1 × 32C Datentyp in zwei 40-Bit-Operanden für zwei 40-Bit-Addierer von zwei Signalverarbeitungseinheiten 300 zur Verarbeitung sowohl imaginärer als auch realer Terme in einem Zyklus umgewandelt.
  • Für einen 1 × 40C komplexen Datentyp werden die Bits 0 bis 39 des realen Datenfelds von den X- oder Y-Bussen in die Bits 0 bis 39 eines ersten 40-Bit-Operanden an einem der SXA- oder SYA- Busse zur Verwendung durch eine Signalverarbeitungseinheit ausgerichtet. Die Bits 0 bis 39 des imaginären Datenfelds von dem X- oder Y-Bus werden in die Bitpositionen 0 bis 39 eines zweiten 40-Bit-Operanden an einem anderen der SXA- oder SYA-Busse ausgerichtet, zur Verwendung einer zweiten Signalverarbeitungseinheit, so dass zwei Signalverarbeitungseinheiten verwendet werden können, um beide 40-Bit-Datenfelder in einem Zyklus zu verarbeiten.
  • In folgendem Bezug auf die Abbildung aus 12D zeigt diese ein beispielhaftes Diagramm der Ausrichtung der komplexen Datentypen 2 × 16C, 2 × 32C und 2 × 40C in vier 40-Bit-Wörtern für vier 40-Bit-Addierer. In diesem Fall werden zwei Operandengruppen (Daten 1 und Daten 2) gemeinsam mit dem gleichen Zyklus mit flexiblen Bitbreiten eingeführt.
  • Für den 2 × 16C komplexen Datentyp werden vier 16 Bit Datenfelder von dem X- oder Y-Bus in vier 40-Bit-Operanden ausgerichtet, jeweils eins für jede der Signalverarbeitungseinheiten 300A bis 300D. Die Bits 0 bis 15 des realen Datenfelds für Daten 1 von dem X- oder Y-Bus werden in den entsprechenden Bits 16 bis 31 eines ersten 40-Bit-Operanden ausgerichtet, mit einem Vorzeichenbit an der Bitposition 31 auf einem der SXA- oder SYA-Busse für eine erste Signalverarbeitungseinheit. Die Bits 0 bis 15 des komplexen Datenfelds für die Daten 1 von dem X- oder Y-Bus werden in den Bits 16 bis 31 eines zweiten 40-Bit-Operanden entsprechend ausgerichtet, mit dem Vorzeichenbit an der Bitposition 31 auf einem anderen der SXA- oder SYA-Busse für eine zweite Signalverarbeitungseinheit. Die Bits 0 bis 15 des realen Datenfelds für Daten 2 von dem X- oder Y-Bus werden entsprechend in den Bits 16 bis 31 eines dritten 40-Bit-Operanden ausgerichtet, mit einem Vorzeichenbit an der Bitposition 31 auf einem weiteren der SXA- oder SYA-Busse für eine dritte Signalverarbeitungseinheit. Die Bits 0 bis 15 des komplexen Datenfelds für Daten 2 von dem X- oder Y-Bus werden entsprechend in den Bits 16 bis 31 eines vierten 40-Bit-Operanden ausgerichtet, mit dem Vorzeichenbit an der Bitposition 31 an einem weiteren der SXA- oder SYA-Busse für eine vierte Signalverarbeitungseinheit. Nullen werden in die Bitpositionen 0 bis 15 gepackt, und Schutzbits werden den Bits 32 bis 39 in jedem der 40-Bit-Operanden auf den vier SXY- oder vier SYA-Bussen zugeordnet, wie dies in der Abbildung aus 12D dargestellt ist. Somit wird der 2 × 16C komplexe Datentyp in vier 40-Bit-Operanden ausgerichtet, zur Verwendung durch vier 40-Bit-Addierer in vier Signalverarbeitungseinheiten.
  • Der 2 × 32C komplexe Datentyp und der 2 × 40C komplexe Datentyp werden in vier Operanden ausgerichtet, ähnlich dem 2 × 16 Datentyp, jedoch mit unterschiedlichen Bitausrichtungen und dem Einfügen von Nullen oder der Zuordnung von Schutzbits. Diese Bitausrichtungen und das Packen/Einfügen von Nullen und die Zuordnungen der Schutzbits entsprechen der Abbildung aus 12D.
  • Auf diese Weise können zwei 2 × SC komplexe Datentypen, wobei S durch die Breite des Addierers begrenzt ist, können in vier Operanden zur Verwendung durch vier Addierer in vier Signalverarbeitungseinheiten 300 ausgerichtet werden, zur Verarbeitung des komplexen Datentypen in einem Zyklus.
  • In folgendem Bezug auf die Abbildung aus 12E ist ein beispielhaftes Diagramm der Ausrichtung der komplexen Datentypen 1 × 4C, 1 × 8C, 1 × 16C, 1 × 32C und 1 × 40C in eines oder mehrere 16-Bit-Wörter für einen oder mehrere 16-Bit-Multiplizierer dargestellt.
  • Für einen 1 × 4C komplexen Datentyp werden die Bits 0 bis 3 des realen Datenfelds von dem X- oder Y-Bus werden in den entsprechenden Bits 12 bis 15 eines ersten 16-Bit-Operanden auf einem der SXM- oder SYM-Busse ausgerichtet, wie dies in der Abbildung aus 12E dargestellt ist. Die Bits 0 bis 3 des imaginären Datenfelds von dem X- oder Y-Bus werden in entsprechenden Bits 12 bis 15 eines zweiten 16-Bit-Operanden auf einem anderen der SXM- oder SYM-Busse angeordnet.
  • Die Bits 0 bis 11 jedes der ersten und zweiten 16-Bit-Operanden werden mit Nullen gepackt. Auf diese Weise wird jedes komplexe Element eines 1 × 4C komplexen Datentyps in zwei 16-Bit-Wörter als Operanden für zwei 16-Bit-Multiplizierer in zwei Signalverarbeitungseinheiten umgewandelt. Der 1 × 8C Datentyp und der 1 × 16C Datentyp werden auf die gleiche Weise in zwei 16-Bit-Operanden wie 1 × 4C umgewandelt, jedoch mit anderer Bitausrichtung, wie dies in der Abbildung aus 12E dargestellt und veranschaulicht ist. Die komplexen Datentypen 1 × 4C, 1 × 8C und 1 × 16C aus 12E verwenden zwei Signalverarbeitungseinheiten und richten ihre entsprechenden Datenbitfelder in zwei 16-Bit-Wörter zur Verwendung durch zwei 16-Bit-Multiplizierer in zwei Signalverarbeitungseinheiten in einem Zyklus aus.
  • Für einen 1 × 32C komplexen Datentyp mit Operanden mit den Bits 0 bis 31 werden das obere Halbwort der Bits 16 bis 31 der realen und imaginären Teile jedes Operanden in einem Ausführungsbeispiel von den Bussen SXM oder SYM ausgewählt und in zwei 16-Bit-Multiplizierer multiplexiert, während das untere Halbwort entsorgt wird. In einem alternativen Ausführungsbeispiel werden das obere Halbwort und das untere Halbwort für die realen und imaginären Teile in vier 16-Bit-Multiplizierer multiplexiert, zur Multiplikation mit einem Vortrag von dem unteren Halbwort-Multiplizierer mit dem oberen Halbwort-Multiplizierer.
  • Für einen 1 × 40C komplexen Datentyp mit Operanden mit den Bits 0 bis 39 werden ein mittleres Halbwort der Bits 16 bis 31 der realen und imaginären Teile jedes Operanden in einem Ausführungsbeispiel ausgewählt und von den Bussen SXM oder SYM in zwei 16-Bit-Multiplizierer multiplexiert, während die oberen Bits 32 bis 39 und das die Bits des unteren Halbworts 0 bis 15 verworfen werden. In einem alternativen Ausführungsbeispiel wird Wort durch die Multiplexierer über mehrere Multiplizierer getrennt, mit einem Vortrag bzw. Übertrag von den Multiplizierern unterer Ordnung in Multiplizierer höherer Ordnung für die realen und imaginären Terme des komplexen Datentyps.
  • In folgendem Bezug auf die Abbildung aus 12F zeigt diese ein beispielhaftes Diagramm der Ausrichtung komplexer Datentypen 2 × 32C oder 2 × 40C und 2 × 16C in vier 16-Bit-Wörter für vier 16-Bit-Multiplizierer.
  • Für 2 × 32C Datentypen werden die Bits 0 bis 15 des oberen Halbwortes der realen Daten (RHWu) eines ersten Operanden an dem X- oder Y-Bus entsprechend in den Bits 0 bis 15 eines ersten 16-Bit-Operanden an einem der SXM- oder SYM-Busse für eine erste der Signalverarbeitungseinheiten ausgerichtet, und die Bits 0 bis 15 des oberen Halbwortes des realen Datenfelds eines zweiten Operanden von dem X- oder Y-Bus werden in den Bits 0 bis 15 eines zweiten 16-Bit-Operanden an einem der SXM- oder SYM-Busse für die erste Signalverarbeitungseinheit ausgerichtet. Die Bits 0 bis 15 des oberen Halbwortes (IHWu) der imaginären Daten des ersten Operanden an dem X- oder Y-Bus werden in den Bitpositionen 0 bis 15 eines dritten 16-Bit-Operanden auf einem der andern SXM- oder SYM-Busse für eine zweite Signalverarbeitungseinheit ausgerichtet, und die Bits 0 bis 15 der oberen Hälfte der imaginären Daten des zweiten Operanden an dem X- oder Y-Bus werden in den Bits 0 bis 15 eines vierten 16-Bit-Operanden auf einem anderen der SXM- oder SYM-Busse für die zweite Signalverarbeitungseinheit ausgerichtet. Somit verwendet der 2 × 32C komplexe Datentyp zwei Signalverarbeitungseinheiten und wandelt die 32 Bit realen und imaginären Datenfelder in 16-Bit-Operanden zur Verwendung durch die 16-Bit-Multiplizierer in zwei Signalverarbeitungseinheiten.
  • Für 2 × 16C Datentypen können zwei komplexe Operanden spezifiziert und als einer über einen 64-Bit-Datenbus in zwei Multiplizierer multiplexiert werden. In diesem Fall werden die Bits 0 bis 15 des realen Datenfelds des ersten Operanden von dem X- oder Y-Bus in den Bits 0 bis 15 eines ersten 16-Bit-Operanden an einem der SXM- oder SYM-Busse für eine Signalverarbeitungseinheit ausgerichtet, während die Bits 0 bis 15 der imaginären Daten des ersten Operanden an dem X- oder Y-Bus in den Bits 0 bis 15 eines zweiten 16-Bit-Operanden auf einem anderen der SXM- oder SYM-Busse für eine zweite Signalverarbeitungseinheit ausgerichtet werden. Die Bits 0 bis 15 des realen Datenfelds des zweiten Operanden an dem X- oder Y-Bus werden in den Bits 0 bis 15 eines dritten 16-Bit- Operanden für die erste Signalverarbeitungseinheit ausgerichtet, und die Bits 0 bis 15 des imaginären Datenfelds des zweiten Operanden an dem X- oder Y-Bus werden in den Bits 0 bis 15 des vierten 16-Bit-Operanden auf einem anderen der SXM- oder SYM-Busse für die zweite Signalverarbeitungseinheit ausgerichtet. Somit verwendet der 2 × 16C Datentyp vier Signalverarbeitungseinheiten zur Verarbeitung jedes der vier 16-Bit-Operanden in vier 16-Bit-Multiplizierern in einem Zyklus.
  • In folgendem Bezug auf die Abbildungen der 13A, 13B und 13C ist die allgemeine Regel für die Typenangleichung von zwei Operanden dargestellt. Im Allgemeinen bezieht sich Datentypangleichung auf die gemeinsame Angleichung von zwei unterschiedlichen Datentypen von zwei Operanden, so dass sie ordnungsgemäß bzw. zweckmäßig für eine gegebene digitale Signalverarbeitungsoperation verarbeitet werden können. In der Abbildung aus 13A weist der erste Operand, Operand 1, einen Datentyp von N1 × S1 real auf, und der zweite Operand, Operand 2, weist einen Datentyp N2 × S2 real auf. Die allgemeine Regel für den Typenabgleich von Operanden zweier realer Datentypen ist die Bestimmung und Auswahl des Maximums von N1 oder N2 und des Maximums von S1 oder S2. Alternativ können das Minimum von N1 oder N2 bestimmt und verworfen werden sowie das Minimum von S1 oder S2, um einen Abgleich bzw. eine Angleichung des Operandentyps vorzusehen. Die Angleichung des Operanden-Datentyps zeigt die Anzahl der Signalverarbeitungseinheiten an, durch welche die Operanden verarbeitet werden (Maximum von N1 oder N2) und die Bitbreite beider Operanden (Maximum von S1 oder S2). Für die verschiedenen Operandentypen sind die Multiplizierer und Addierer der Signalverarbeitungseinheiten mit der besten Operandentypangleichung von zwei verschiedenen Operanden-Datentypen versehen, um ein Ergebnis zu erzielen. Die Ausgabeergebnisse von der an den unterschiedlichen Operanden ausgeführten Operation ist in Form des abgeglichen Datentyps gegeben.
  • In folgendem Bezug auf die Abbildung aus 13B handelt es sich bei dem ersten Operanden, Operand 1, und bei dem zweiten Operanden, Operand 2, um komplexe Datentypen. Die allgemeine Regel für den Operandentypenabgleich zweier komplexer Typen von Operanden entspricht dem Abgleich für zwei reale Datentypen, wobei das Ergebnis jedoch ein komplexer Datentyp ist. Der Operanden-Datentypabgleich für die komplexen Datentypen umfasst das Bestimmen und die Auswahl des Maximums von N1 oder N2 und des Maximums von S1 oder S2.
  • In folgendem Bezug auf die Abbildung aus 13C handelt es sich bei dem ersten Operanden, Operand 1, um einen realen Datentyp, während es sich bei dem zweiten Operanden, Operand 2, um einen komplexen Datentyp handelt. Die allgemeine Regel für den Abgleich des Operanden-Datentyps eines realen Datentyps und eines komplexen Datentyps ist die Auswahl des Maximums von N1 oder N2 und des Maximums von S1 oder S2, mit einem komplexen Datentypabgleich. Das Maximum von N1 oder N2 stellt die Anzahl der erforderlichen Signalverarbeitungseinheiten zur Verarbeitung des realen oder des imaginären Terms dar, und das Maximum von S1 oder S2 stellt die Bitbreite des Operanden dar, der in den Signalverarbeitungseinheiten ausgerichtet werden soll. Die Multiplexer 1101, 1102, 1104 und 1106 in jeder Instanz der Datentypisierungs- und Ausrichtungseinrichtung 502 führen die Datentypangleichung zwischen Operand 1 und Operand 2 von dem X-Bus 531 oder dem Y-Bus 533 als Reaktion auf die entsprechenden Multiplexer-Steuersignale durch. Die Permutation und die Ausrichtung werden automatisch durch den entsprechenden Kernprozessor 200 ausgewählt, um einen Datentypabgleich für die beiden Operanden durch die Steuerung der Bus-Multiplexer in jede der Signalverarbeitungseinheiten vorzusehen.
  • Zusätzlich zu dem automatischen Datentypabgleich gleicht die vorliegende Erfindung die Datentypen ferner operativ durch die ausführende Operation ab (ADD, SUB, MULT, DIVIDE, etc.), die Anzahl der funktionalen Einheiten (Addierer und Multiplizierer) und deren entsprechende Bitbreiten in jeder der Signalverarbeitungseinheiten 300A bis 300D, die Bitbreite des automatischen Datentypabgleichs für die beiden Operanden, und ob reale oder komplexe Datentypen involviert sind und ob skalare oder Vektorfunktionen ausgeführt werden sollen. Jede der Signalverarbeitungseinheiten 300A bis 300D weist zwei Multiplizierer und drei Addierer auf. In dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung ist jeder der Multiplizierer sechzehn Bits breit, und wobei jeder der Addierer vierzig Bits breit ist. Mehrere Operanden des gleichen Datentyps können leicht verarbeitet werden nach der Einrichtung nominaler Datentypen und dem Lesen neuer Daten wie die neuen Operanden, und das Wiederholen der Multiplikation, Addition oder andersartigen Signalverarbeitungsoperation.
  • In folgendem Bezug auf die Abbildungen der 14, 15A und 15B sind beispielhafte Diagramme des operativen Abgleichs von durch die vorliegende Erfindung vorgesehenen Datentypen dargestellt. In jeder der Abbildungen der 14, 15A und 15B ist ein Datentyp für einen ersten Operanden entlang der oberen Zeile dargestellt sowie ein Datentyp für einen zweiten Operanden ist entlang der am weitesten links dargestellten Spalte abgebildet. Die Matrix zwischen der obersten Zeile und der am weitesten links angeordneten Spalte in jeder der Abbildungen zeigt den operativen Abgleich, der durch das Ausführungsbeispiel der vorliegenden Erfindung vorgesehen wird.
  • In der Abbildung aus 14 zeigt ein beispielhaftes Diagramm den Datentypabgleich für eine Multiplikationsoperation durch die Multiplizierer der Signalverarbeitungseinheiten. Operanden mit Datentypen von vier und acht Bits sind in der Abbildung aus 14 nicht dargestellt, wobei hiermit festgestellt wird, dass diese Datentypen in 16-Bit-Operanden umgewandelt werden. In der Abbildung aus 14 werden leeren Zellen in Bezug auf das hierin beschriebene Ausführungsbeispiel Operationen untersagt. Wenn jedoch die Anzahl von Signalverarbeitungseinheiten von vier erweitert wird, und wenn die Datenbitbreite der Multiplizierer von sechzehn Bits erweitert wird, können zusätzliche Operationen für andere Kombinationen des Operanden-Datentyps ausgeführt werden. In jeder vollständigen Zelle aus 14 erfordert die Operation zwei Zyklen für eine Vektoroperation und drei Zyklen für eine skalare Operation realer Datentypen. Eine skalare Multiplikation eines komplexen Operanden mit einem anderen Operanden wird nicht ausgeführt, da zwei Werte, eine reale und eine imaginäre Zahl, immer als Ergebnis verbleiben. Jede vollständige Zelle zeigt die Anzahl der verwendeten Signalverarbeitungseinheiten zur Ausführung der Multiplikationsoperation an. Zum Beispiel zeigt eine Multiplikation eines 1 × 16C Operanden mit einem 1 × 16C Operanden an, dass vier Signalverarbeitungseinheiten verwendet werden. Im Falle einer komplexen Multiplikation lauten die Operanden (r1 + ji1) und (r2 + ji2), wobei r1 und r2 die realen Terme darstellen, und wobei i1 und i2 die imaginären Terme darstellen. Das Ergebnis der komplexen Multiplikation entspricht [(r1 × r2) – (i1 × i2)] für den realen Term und [(r1 × i2) + (r2 × i1)] für den imaginären Term. Somit verarbeiten vier Signalverarbeitungseinheiten die Multiplikation der Klammern gemeinsam in dem gleichen Zyklus. Die verbleibenden Additions- und Subtraktionsoperationen für die entsprechenden realen und imaginären Terme werden danach entsprechend in zwei Signalverarbeitungseinheiten gemeinsam in dem nächsten Zyklus ausgeführt, so dass die Endergebnisse resultieren. Als weiteres Beispiel wird von einer Multiplikation eines 1 × 16R Operanden mit einem 1 × 32C Operanden ausgegangen. In diesem Fall zeigt die Abbildung aus 14, dass vier Signalverarbeitungseinheiten verwendet werden. Die Operanden sind r1 und (r2 + ji2), wobei r1 und r2 reale Zahlen sind, und wobei i2 eine imaginäre Zahl darstellt. Das Ergebnis der Operation lautet [(r1 × r2)] für den realen Teil des Ergebnisses und [(r1 × i2)] für den imaginären Teil des Ergebnisses. Da der komplexe Operand eine Breite von zweiunddreißig Bits aufweist, sind die realen und imaginären Terme in Halbwörter aufgeteilt. Die Operation wird somit zu [(r1 × r2UHW) + (r1 × r2LHW)] für den realen Teil und zu [(r1 × i2UHW) + (r1 × i2LHW)], wobei UHW das obere Halbwort bezeichnet, und wobei LHW das untere Halbwort jedes entsprechenden Wertes bezeichnen. Somit führt jede der vier Signalverarbeitungseinheiten die Multiplikation der Klammern in einem Zyklus gemeinsam aus, während die Addition der Terme in zwei Signalverarbeitungseinheiten während dem nächsten Zyklus ausgeführt wird.
  • In Bezug auf die Abbildung aus 15A ist ein beispielhaftes Diagramm des Datentypabgleichs für eine skalare Addition durch die Addierer in den Signalverarbeitungseinheiten dargestellt. Die Operanden mit Datentypen mit vier und acht Bits sind in der Abbildung aus 15A nicht dargestellt, wobei hiermit festgestellt wird, dass diese Datentypen in 16-Bit-Operanden umgewandelt werden. Hiermit wird ferner festgestellt, dass keine skalare Operation unter Verwendung eines komplexen Operanden ausgeführt wird, da zwei Werte, eine reale Zahl und eine imaginäre Zahl, immer zu einer Operation mit einem komplexen Operanden führen. In der Abbildung aus 15A werden leeren Zellen Operationen in Bezug auf das hierin beschriebene Ausführungsbeispiel untersagt. Wenn die Anzahl der Signalverarbeitungseinheiten jedoch von vier erweitert wird, und wenn die Datenbitbreite der Addierer von vierzig Bits erweitert wird, können zusätzliche Operationen für andere Kombinationen der Operanden-Datentypen ausgeführt werden. In jeder vollständigen Zelle aus 15A kann die skalare Additionsoperation in einem Zyklus abgeschlossen werden, wenn beide Operanden leicht verfügbar sind. Jede vollständige Zelle zeigt die Anzahl der für die Ausführung der skalaren Additionsoperation verwendeten Signalverarbeitungseinheiten an.
  • Als Beispiel werden ein 1 × 32R Operand und ein 2 × 16R Operand gewählt, wobei r1 den ersten Operanden mit einer Breite von 32 Bits bezeichnet, und wobei r2 und r3 die zweite Gruppe von Operanden mit einer Breite von jeweils 16 Bits bezeichnen. Das Diagramm aus 15A zeigt an, dass zwei Signalverarbeitungseinheiten verwendet werden. Das skalare Ergebnis lautete [(r1 + r2) + (r1 + r3)]. Zwei Signalverarbeitungseinheiten führen die Additionsoperation in Klammern unter Verwendung ihrer beiden 40-Bit-Addierre in einem Zyklus aus, während eine zweite Addition in einer der beiden Signalverarbeitungseinheiten das Zwischenergebnis in einem zweiten Zyklus kombiniert.
  • In folgendem Bezug auf die Abbildung aus 15B ist ein beispielhaftes Diagramm dargestellt, das den Datentypabgleich für die Vektoraddition durch die Addierer der Signalverarbeitungseinheiten zeigt. Operanden mit Datentypen mit vier und acht Bits sind in der Abbildung aus 15B nicht dargestellt, wobei hiermit festgestellt wird, dass diese Datentypen in 16-Bit-Operanden umgewandelt werden. In der Abbildung aus 15B werden den leeren Zellen Operationen in Bezug auf das hierin dargestellte Ausführungsbeispiel untersagt. Wenn die Anzahl der Signalverarbeitungseinheiten jedoch von vier erweitert wird, und wenn die Datenbitbreite der Addierer von vierzig Bits erweitert wird, können zusätzliche Operationen für andere Kombinationen von Operanden-Datentypen ausgeführt werden. In jeder vollständigen Zelle aus 15B kann die Vektoradditionsoperation in einem Zyklus ausgeführt werden, wenn beide Operanden allgemein verfügbar sind. Jede vollständige Zelle zeigt die Anzahl der Signalverarbeitungseinheiten an, die zur Ausführung der Vektoradditionsoperation verwendet werden. Operanden mit komplexen Datentypen können bei der Ausführung der Vektoraddition verwendet werden.
  • Ein Beispiel ist ein 1 × 16R Operand und ein 1 × 32C Operand, wobei r1 den ersten Operanden mit einer Breite von 16 Bits darstellt, und wobei r2 und i2 den zweiten Operanden mit einer Breite von jeweils zweiunddreißig Bits darstellen. Das Diagramm aus 15B zeigt an, dass zwei Signalverarbeitungseinheiten verwendet werden. Der reale 1 × 16R Operand wird in einen komplexen 1 × 16C komplexen Operanden mit einem imaginären Teil von Null umgewandelt. In einer Signalverarbeitungseinheit werden die realen Teile unter Verwendung der Ausführung von (r1 + r2) addiert, während in einer anderen Signalverarbeitungseinheit die imaginäre Komponente i2 zu Null in Ausführung von (0 + i2) addiert wird. Das Vektorergebnis lautet [(r1 + r2)] als reale Komponente und i2 als imaginäre Komponente. Die Signalverarbeitungseinheiten führen die Additionsoperation in Klammern unter Verwendung des 40-Bit-Addierers aus.
  • Ein weiteres Beispiel ist ein 1 × 16C Operand und ein 1 × 32C Operand, wobei für den Operanden 1 × 16C r1 und i1 die entsprechenden realen und imaginären Teile des ersten Operanden mit einer Breite von jeweils sechzehn Bits darstellen, und wobei r2 und i2 die realen und imaginären Terme eines zweiten Operanden mit einer Breite von jeweils zweiunddreißig Bits darstellen. Das Diagramm aus 15B zeigt an, dass zwei Signalverarbeitungseinheiten verwendet werden. Das Vektorergebnis lautet [(r1 + r2)] als reale Komponente und [(i1 + i2)] als imaginäre Komponente. Zwei Signalverarbeitungseinheiten führen die Additionsoperationen in Klammern unter Verwendung von 40-Bit-Addierern aus.
  • In folgendem Bezug auf die Abbildung aus 16 ist ein Blockdiagramm der Erzeugung von Steuersignalen für die Bus-Multiplexer dargestellt, enthalten in jeder der Datentypisierungs- und Ausrichtungseinrichtungen jeder Signalverarbeitungseinheit. An jeden der Bus-Multiplexer jeder Datentypisierungs- und Ausrichtungseinrichtung bereitgestellte Steuersignale sorgen für eine selektive Steuerung, um die automatische Datentypisierung und Ausrichtung sowie durch den Benutzer ausgewählte Permutationen durchzuführen. Steuersignale an die Multiplexer 1101 und 1102 des Bus-Multiplexers für den X-Bus in jeder der Datentypisierungs- und Ausrichtungseinrichtungen wählen den Datentyp und die Ausrichtung für einen Operanden in jeder der Signalverarbeitungseinheiten aus. Steuersignale an die Multiplexer 1104 und 1106 des Bus-Multiplexers für den Y-Bus in jeder der Datentypisierungs- und Ausrichtungseinrichtungen wählen den Datentyp und die Ausrichtung für den zweiten Operanden in jeder der Signalverarbeitungseinheiten aus. Der automatische Datentypabgleich wird durch die Steuerung der Bus-Multiplexer in jedem Signalprozessor als Reaktion auf die Decodierung der Datentypfelder vorgesehen, die jedem Operanden des Steuerregisters zugeordnet sind oder dem Befehl selbst. Die resultierende Operandenausgabe von jedem der Bus-Multiplexer in jeder Signalverarbeitungseinheit ist in den Multiplexer 514A des Multiplizierers 504A, den Multiplexer 520A des Addierers 510A und den Multiplexer 520B des Addierers 510B in jeder Signalverarbeitungseinheit gekoppelt, wie dies in der Abbildung aus 5B dargestellt ist.
  • In der Abbildung aus 16 ist ein oder sind mehrere DSP-Befehle 1600 in einen Befehlsvordecodierer 1602 gekoppelt. Der Befehlsvordecodierer 1602 kann ein oder mehrere Steuerregister („CR") 1604 aufweisen, die ein Datentypfeld und ein Permutationsfeld aufweisen, um den Vordecodierer 1602 über den Datentyp der Operanden zu informieren und darüber, wie sie in jede der Signalverarbeitungseinheiten 300 (SP0 300A, SP1 300B, SP2 300C und SP3 300D) gelesen werden sollen. Der eine oder die mehreren DSP-Befehle 1600 direkt oder indirekt durch das eine oder die mehreren Steuerregister 1604 zeigen jeden Datentyp für zwei Operanden in zwei Datentypfeldern and sowie jede Permutation des Datenbusses in zwei Permutationsfelder. Der Befehlsvordecodierer 1602 bestimmt automatisch die beste Datentypübereinstimmung, indem die beiden Datentypen für jeden Operanden verglichen werden. Der Befehlsvordecodierer 1602 liest ferner die Permutationsfelder jedes Operanden. In Reaktion auf die Permutationsfelder und die Datentypen jedes Operanden erzeugt der Befehlsvordecodierer 1602 vordecodierte Steuersignale 1606 für die Steuerung des Multiplexierens der Datentypisierung. Die vordecodierten Steuersignale 1606 dienen somit entsprechend der Steuerung der Bus-Multiplexer 1001 und 1002 in jeder Datentypisierungs- und Ausrichtungseinrichtung 502 (Datentypisierungs- und Ausrichtungseinrichtung 502A, 502B, 502C und 502D) in jeder Signalverarbeitungseinheit 300. Diese vordecodierten Steuersignale werden in die finalen Decodierer 1610A in jeder Signalverarbeitungseinheit gekoppelt, um die entsprechenden Multiplexer-Steuersignale 1011 und 1012 für jeden Bus-Multiplexer 1001 und 1002 jeder Datentypisierungs- und Ausrichtungseinrichtung 502 in jeder Signalverarbeitungseinheit 300 zu erzeugen. Der Befehlsvordecodierer 1602 erzeugt ferner vordecodierte Steuersignale für andere Multiplexer 1620B, 1620C bis 1620N jeder Signalverarbeitungseinheit 300. Die finalen Decodierer 1610B, 1610C bis 1610N empfangen die vordecodierten Steuersignale, um die Multiplexer-Steuersignale für jeden der Multiplexer 1620B, 1620C bis 1620N jeder Signalverarbeitungseinheit 300 zu erzeugen. Auf diese Weise können die Operanden auf dem X-Bus und dem Y-Bus ausgerichtet, abgeglichen, permutiert und ausgewählt werden, um eine digitalen Signalverarbeitungsoperation auszuführen.
  • Wie der Durchschnittsfachmann auf dem Gebiet erkennen wird, weist die vorliegende Erfindung zahlreiche Vorteile auf. Ein Vorteil der vorliegenden Erfindung ist es, dass Operanden verschiedener Datentypen für verschiedene Anwendungen der digitalen Signalverarbeitung in dem anwendungsspezifischen Signalprozessor gemäß der vorliegenden Erfindung verarbeitet werden können. Ein weiterer Vorteil der vorliegenden Erfindung ist es, dass ein automatischer Datentypabgleich vorgesehen wird. Ein weiterer Vorteil der vorliegenden Erfindung ist es, dass Operanden automatisch einer Permutation unterzogen werden können, und zwar durch den Einsatz eines Permutationsfelds in einem Befehl oder Steuerregister, so dass zusätzliche Befehle zur Durchführung einer gewünschten Permutation an die Signalprozessoren überflüssig sind. Ein weiterer Vorteil der vorliegenden Erfindung ist es, dass die Datentypisierungsfähigkeiten der Signalverarbeitungseinheiten leicht durch das Hinzufügen zusätzlicher Signalverarbeitungseinheiten erweitert werden können.
  • Die Beschreibung der bevorzugten Ausführungsbeispiele der vorliegenden Erfindung ist damit abgeschlossen. Bestimmte Ausführungsbeispiele der vorliegenden Erfindung wurden zwar in Bezug auf die beigefügten Zeichnungen beschrieben und sind in diesen abgebildet, wobei hiermit jedoch festgestellt wird, dass diese Ausführungsbeispiele ausschließlich den Zwecken der Veranschaulichung des breiten Umfangs der vorliegenden Erfindung dienen und diesen nicht einschränken, und wobei die vorliegende Erfindung nicht auf die spezifischen abgebildeten und beschriebenen Konstruktionen und Anordnungen beschränkt ist, da verschiedene weitere Modifikationen für den Durchschnittsfachmann auf dem Gebiet ersichtlich sind. Zum Beispiel wurde die Datentypisierungs- und. Ausrichtungseinrichtung gemäß der vorliegenden Erfindung vorstehend in Bezug auf Speicherzugriffsregister für den Zugriff auf Operanden in dem Speicher beschrieben, wobei jedoch auch ein Zugriff auf Operanden aus Registern möglich ist, ebenso wie eine entsprechende Datentypisierung und Ausrichtung gemäß der vorliegenden Erfindung. Während in dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung ein 16-Bit-Multiplizierer verwendet wird, können auch Multiplizierer mit größeren Bitbreiten eingesetzt werden, und wobei eine größere Datentypflexibilität bereitgestellt werden kann. Zusätzlich dazu kann die Größe des Datenbusses zwischen dem Datenspeicher und den Signalverarbeitungseinheiten von 64 Bits auf zum Beispiel 80 Bits vergrößert werden, und wobei eine größere Datentypflexibilität vorgesehen wird. Ferner können zusätzliche Signalverarbeitungseinheiten vorgesehen werden, so dass größerer Bitbreiten der Operanden oder eine höhere Anzahl von Operanden zur gemeinsamen Verarbeitung in einem Zyklus ebenso möglich sind. Ferner kann die vorliegende Erfindung in Hardware, Software, Firmware oder einer Kombination dieser implementiert und in Systemen, Teilsystemen, Komponenten oder Teilkomponenten dieser verwendet bzw. eingesetzt werden. Bei einer Implementierung in Software handelt es sich bei den Elementen gemäß der vorliegenden Erfindung im Wesentlichen um Codesegmente zur Ausführung der erforderlichen Aufgaben. Die Programm- oder Codesegmente können in einem durch den Prozessor lesbaren Medium gespeichert oder durch ein in einer Trägerwelle ausgeführten Computerdatensignal über ein Übertragungsmedium oder einen Vermittlungsabschnitt übertragen werden. Das „durch den Prozessor lesbare Medium" kann jedes Medium darstellen, das Informationen speichern oder übertragen kann. Zu den Beispielen für das durch den Prozessor lesbare Medium zählen eine elektronische Schaltung, eine Halbleiterspeichervorrichtung, ein ROM, ein Flash-Speicher, ein löschbares ROM (EROM), eine Floppy-Diskette, eine CD-ROM, eine optische Disk, eine Festplatte, ein Lichtwellenleitermedium, eine Hochfrequenzverbindung, etc. Das Computerdatensignal kann jedes Signal aufweisen, das sich über ein Übertragungsmedium ausbreiten kann, wie etwa elektronische Netzkanäle, Lichtwellenleiter, Luft, elektromagnetische Vermittlungsabschnitte, Hochfrequenzvermittlungsabschnitte, etc. Die Codesegmente können über Computernetzwerke wie etwa das Internet, Intranet, etc. heruntergeladen werden. In jedem Fall ist die vorliegende Erfindung nicht durch diese Ausführungsbeispiele beschränkt, sondern vielmehr durch die nachstehend folgenden Ansprüche.

Claims (9)

  1. Signalprozessor (300), der so angeordnet ist, dass er einen Befehl (1600) zur digitalen Signalverarbeitung (DSP) mit Operanden mit flexiblen Datentypen ausführt, wobei der Signalprozessor folgendes umfasst: einen Befehlsdecodierer (1602), der so angeordnet ist, dass er den digitalen Signalverarbeitungsbefehl decodiert und einen ersten Operanden (Operand 1) und ein zugeordnetes erstes Datentypfeld, einen zweiten Operanden (Operand 2) und ein zugeordnetes zweites Datentypfeld und ein Permutationsfeld liest; dadurch gekennzeichnet, dass der Signalprozessor ferner folgendes umfasst: einen Komparator, der so angeordnet ist: dass er den ersten Datentyp des ersten Operanden mit dem zweiten Datentyp des zweiten Operanden vergleicht; so dass für den Fall, dass der Komparator bestimmt, dass der erste Datentyp des ersten Operanden mit dem zweiten Datentyp des zweiten Operanden übereinstimmt, bewirkt wird, dass der Signalprozessor den DSP-Befehl unter Verwendung des ersten Operanden und des zweiten Operanden ausführt; und dass, wenn der Komparator bestimmt, dass der erste Datentyp des ersten Operanden und der zweite Datentyp des zweiten Operanden nicht übereinstimmen, ein Typenabgleich ausgeführt wird, um einen abgeglichenen Datentyp für den ersten Operanden und den zweiten Operanden zu ermitteln, und um die ersten und zweiten Operanden gemeinsam gemäß dem abgeglichenen Datentyp auszurichten, und um zu bewirken, dass der Signalprozessor den DSP-Befehl unter Verwendung der ausgerichteten ersten und zweiten Operanden ausgeführt wird.
  2. Signalprozessor nach Anspruch 1, wobei: ein erster Datentyp für den ersten Operanden, bezeichnet durch das erste Datentypfeld, eine erste reale Zahl darstellt, und wobei ein zweiter Datentyp für den zweiten Operanden, bezeichnet durch das zweite Datentypfeld, eine reale Zahl darstellt.
  3. Signalprozessor nach Anspruch 2, wobei: der erste Datentyp eine Breite aufweist, die aus der Gruppe ausgewählt wird, die vier, acht, sechzehn, zweiunddreißig und vierzig Bits entspricht, und wobei der zweite Datentyp eine Breite aufweist, die aus der Gruppe ausgewählt wird, die vier, acht, sechzehn, zweiunddreißig und vierzig Bits entspricht.
  4. Signalprozessor nach Anspruch 1, wobei: das erste Datentypfeld und das zweite Datentypfeld n dem digitalen Signalverarbeitungsbefehl bereitgestellt werden.
  5. Verfahren zur Ausführung von Operationen der digitalen Signalverarbeitung (DSP) unter Verwendung von Operanden mit flexiblem Datentyp, wobei das Verfahren folgendes umfasst: das Abrufen eines ersten Operanden (Operand 1) und eines zweiten Operanden (Operand 2) für einen DSP-Befehl (1600); das Decodieren der Einstellungen eines oder mehrerer Datentypfelder, um einen ersten Datentyp (N1 × S1R) des ersten Operanden und einen zweiten Datentyp (N2 × S2R) des zweiten Operanden zu bestimmen; das Vergleichen des ersten Datentyps des ersten Operanden mit dem zweiten Datentyp des zweiten Operanden; wobei, wenn der Vergleich bestimmt, dass der erste Datentyp des ersten Operanden mit dem zweiten Datentyp des zweiten Operanden übereinstimmt, der DSP-Befehl unter Verwendung des ersten Operanden und des zweiten Operanden ausgeführt wird; wobei ansonsten, wenn der Vergleich bestimmt, dass der erste Datentyp des ersten Operanden und der zweite Datentyp des zweiten Operanden nicht übereinstimmen: eine Typenangleichung ausgeführt wird, um einen abgeglichenen Datentyp für den ersten Operanden und den zweiten Operanden zu ermitteln; und wobei als Reaktion auf die Ermittlung des abgeglichenen Datentyps für den ersten Operanden und den zweiten Operanden die ersten und zweiten Operanden gemäß dem abgeglichenen Datentyp miteinander ausgerichtet werden, und wobei der DSP-Befehl unter Verwendung der abgeglichenen ersten und zweiten Operanden ausgeführt wird.
  6. Verfahren nach Anspruch 5, wobei: der erste Operand einen Datentyp von N1 × S1 aufweist, und wobei der zweite Operand einen Datentyp von N2 × S2 aufweist, und wobei der abgeglichene Datentyp ermittelt wird, indem das Maximum von N1 oder N2 und das Maximum von S1 oder S2 als der abgeglichene Datentyp ausgewählt werden.
  7. Verfahren nach Anspruch 5, wobei dieses ferner folgendes umfasst: das Decodieren mindestens eines Permutationsfelds, um eine Permutation der ersten Operanden und des zweiten Operanden an eine Mehrzahl von Signalprozessoren zu bestimmen; in Reaktion auf die Permutation des ersten Operanden und des zweiten Operanden das Bereitstellen des ersten Operanden und des zweiten Operanden an die Mehrzahl von Signalprozessoren, um den DSP-Befehl auszuführen.
  8. Verfahren nach Anspruch 7, wobei die einen oder mehreren Datentypfelder und das mindestens eine Permutationsfeld in einem Zugriffskontrollregister gespeichert werden.
  9. Verfahren nach Anspruch 7, wobei der DSP-Befehl das eine oder die mehreren Datentypfelder aufweist und das mindestens eine Permutationsfeld.
DE60118945T 2000-08-31 2001-08-16 Verfahren und vorrichtung für flexible datentypen Expired - Lifetime DE60118945T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/652,556 US6557096B1 (en) 1999-10-25 2000-08-31 Processors with data typer and aligner selectively coupling data bits of data buses to adder and multiplier functional blocks to execute instructions with flexible data types
US652556 2000-08-31
PCT/US2001/025670 WO2002019093A1 (en) 2000-08-31 2001-08-16 Method and apparatus for flexible data types

Publications (2)

Publication Number Publication Date
DE60118945D1 DE60118945D1 (de) 2006-05-24
DE60118945T2 true DE60118945T2 (de) 2006-09-21

Family

ID=24617256

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60118945T Expired - Lifetime DE60118945T2 (de) 2000-08-31 2001-08-16 Verfahren und vorrichtung für flexible datentypen

Country Status (7)

Country Link
US (3) US6557096B1 (de)
EP (1) EP1323026B1 (de)
CN (4) CN100520707C (de)
AT (1) ATE323904T1 (de)
AU (1) AU2001283408A1 (de)
DE (1) DE60118945T2 (de)
WO (1) WO2002019093A1 (de)

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6557096B1 (en) * 1999-10-25 2003-04-29 Intel Corporation Processors with data typer and aligner selectively coupling data bits of data buses to adder and multiplier functional blocks to execute instructions with flexible data types
US20020078342A1 (en) * 2000-09-25 2002-06-20 Broadcom Corporation E-commerce security processor alignment logic
US20020061107A1 (en) * 2000-09-25 2002-05-23 Tham Terry K. Methods and apparatus for implementing a cryptography engine
US6813734B1 (en) * 2001-01-26 2004-11-02 Catamaran Communications Incorporated Method and apparatus for data alignment
US20030039256A1 (en) * 2001-08-24 2003-02-27 Klas Carlberg Distribution of connection handling in a processor cluster
US6965985B2 (en) * 2001-11-27 2005-11-15 Sun Mirosystems, Inc. Sign generation bypass path to aligner for reducing signed data load latency
US6961888B2 (en) * 2002-08-20 2005-11-01 Flarion Technologies, Inc. Methods and apparatus for encoding LDPC codes
US7185177B2 (en) * 2002-08-26 2007-02-27 Gerald George Pechanek Methods and apparatus for meta-architecture defined programmable instruction fetch functions supporting assembled variable length instruction processors
US7320013B2 (en) * 2002-12-12 2008-01-15 Adaptec, Inc. Method and apparatus for aligning operands for a processor
US20050055544A1 (en) * 2003-07-30 2005-03-10 International Business Machines Corporation Central processing unit having a module for processing of function calls
US20050071610A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for debug support for individual instructions and memory locations
US20050071816A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically count instruction execution for applications
US7373637B2 (en) * 2003-09-30 2008-05-13 International Business Machines Corporation Method and apparatus for counting instruction and memory location ranges
US20050071516A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically profile applications
US7395527B2 (en) * 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US7937691B2 (en) * 2003-09-30 2011-05-03 International Business Machines Corporation Method and apparatus for counting execution of specific instructions and accesses to specific data locations
US20050071821A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically select instructions for selective counting
US20050071609A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically take an exception on specified instructions
US20050071611A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for counting data accesses and instruction executions that exceed a threshold
US20050071612A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for generating interrupts upon execution of marked instructions and upon access to marked memory locations
US9465611B2 (en) * 2003-10-02 2016-10-11 Broadcom Corporation Processor execution unit with configurable SIMD functional blocks for complex number operations
US8381037B2 (en) * 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US7421681B2 (en) * 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US7496908B2 (en) * 2004-01-14 2009-02-24 International Business Machines Corporation Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information
US7197586B2 (en) * 2004-01-14 2007-03-27 International Business Machines Corporation Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler
US7895382B2 (en) * 2004-01-14 2011-02-22 International Business Machines Corporation Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US7526757B2 (en) * 2004-01-14 2009-04-28 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
US7114036B2 (en) * 2004-01-14 2006-09-26 International Business Machines Corporation Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected
US7415705B2 (en) * 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
CN100353702C (zh) * 2004-01-20 2007-12-05 海信集团有限公司 可重构密码协处理器的可重构置换模块
US7987453B2 (en) * 2004-03-18 2011-07-26 International Business Machines Corporation Method and apparatus for determining computer program flows autonomically using hardware assisted thread stack tracking and cataloged symbolic data
US7421684B2 (en) 2004-03-22 2008-09-02 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for data coverage
US7269718B2 (en) * 2004-04-29 2007-09-11 International Business Machines Corporation Method and apparatus for verifying data types to be used for instructions and casting data types if needed
US7167968B2 (en) * 2004-04-29 2007-01-23 International Business Machines Corporation Storage pre-alignment and EBCDIC, ASCII and unicode basic latin conversions for packed decimal data
US20050251706A1 (en) * 2004-04-29 2005-11-10 International Business Machines Corporation Method and apparatus for data-aware hardware operations
US7328374B2 (en) * 2004-04-29 2008-02-05 International Business Machines Corporation Method and apparatus for implementing assertions in hardware
US7386690B2 (en) * 2004-04-29 2008-06-10 International Business Machines Corporation Method and apparatus for hardware awareness of data types
US7895473B2 (en) * 2004-04-29 2011-02-22 International Business Machines Corporation Method and apparatus for identifying access states for variables
EP1831782A2 (de) * 2004-07-12 2007-09-12 Halil Kilic Digitaler prozessor und verfahren zum verarbeiten digitaler daten
GB2417105B (en) * 2004-08-13 2008-04-09 Clearspeed Technology Plc Processor memory system
US7933405B2 (en) * 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
US7299342B2 (en) * 2005-05-24 2007-11-20 Coresonic Ab Complex vector executing clustered SIMD micro-architecture DSP with accelerator coupled complex ALU paths each further including short multiplier/accumulator using two's complement
US7415595B2 (en) * 2005-05-24 2008-08-19 Coresonic Ab Data processing without processor core intervention by chain of accelerators selectively coupled by programmable interconnect network and to memory
US20070198815A1 (en) * 2005-08-11 2007-08-23 Coresonic Ab Programmable digital signal processor having a clustered SIMD microarchitecture including a complex short multiplier and an independent vector load unit
US20090006822A1 (en) * 2006-01-27 2009-01-01 Freescale Semiconductor , Inc. Device and Method for Adding and Subtracting Two Variables and a Constant
TW200808067A (en) * 2006-07-31 2008-02-01 Univ Nat Cheng Kung Prediction module
US20080079712A1 (en) * 2006-09-28 2008-04-03 Eric Oliver Mejdrich Dual Independent and Shared Resource Vector Execution Units With Shared Register File
JP5079342B2 (ja) 2007-01-22 2012-11-21 ルネサスエレクトロニクス株式会社 マルチプロセッサ装置
US7890320B2 (en) * 2007-04-17 2011-02-15 Microsoft Corporation Tower of numeric types
US8761188B1 (en) * 2007-05-01 2014-06-24 Altera Corporation Multi-threaded software-programmable framework for high-performance scalable and modular datapath designs
JP5095273B2 (ja) * 2007-06-22 2012-12-12 株式会社東芝 制御装置
US7673120B2 (en) * 2007-06-27 2010-03-02 Texas Instruments Incorporated Inter-cluster communication network and heirarchical register files for clustered VLIW processors
US20090106526A1 (en) * 2007-10-22 2009-04-23 David Arnold Luick Scalar Float Register Overlay on Vector Register File for Efficient Register Allocation and Scalar Float and Vector Register Sharing
US8169439B2 (en) * 2007-10-23 2012-05-01 International Business Machines Corporation Scalar precision float implementation on the “W” lane of vector unit
US8392489B2 (en) * 2008-02-15 2013-03-05 International Business Machines Corporation ASCII to binary floating point conversion of decimal real numbers on a vector processor
US8060729B1 (en) 2008-10-03 2011-11-15 Altera Corporation Software based data flows addressing hardware block based processing requirements
US8805916B2 (en) * 2009-03-03 2014-08-12 Altera Corporation Digital signal processing circuitry with redundancy and bidirectional data paths
US20120278591A1 (en) * 2011-04-27 2012-11-01 Advanced Micro Devices, Inc. Crossbar switch module having data movement instruction processor module and methods for implementing the same
US10678541B2 (en) 2011-12-29 2020-06-09 Intel Corporation Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions
US9471388B2 (en) 2013-03-14 2016-10-18 Altera Corporation Mapping network applications to a hybrid programmable many-core device
US9471537B2 (en) 2013-03-14 2016-10-18 Altera Corporation Hybrid programmable many-core device with on-chip interconnect
US9645820B2 (en) 2013-06-27 2017-05-09 Intel Corporation Apparatus and method to reserve and permute bits in a mask register
JP5710726B2 (ja) * 2013-10-09 2015-04-30 ファナック株式会社 機械を制御するための浮動小数点演算命令を含む制御プログラムを実行する制御装置
KR20160061701A (ko) * 2014-11-24 2016-06-01 삼성전자주식회사 서로 다른 정확도를 갖는 연산기들을 이용하여 데이터를 처리하는 방법 및 장치
CN106650923B (zh) * 2015-10-08 2019-04-09 上海兆芯集成电路有限公司 具有神经存储器与神经处理单元与定序器的神经网络单元
KR102343652B1 (ko) * 2017-05-25 2021-12-24 삼성전자주식회사 벡터 프로세서의 서열 정렬 방법
US11036499B2 (en) * 2017-06-30 2021-06-15 Intel Corporation Systems, apparatuses, and methods for controllable sine and/or cosine operations
EP3651070B1 (de) * 2018-02-13 2021-07-28 Shanghai Cambricon Information Technology Co., Ltd Rechenvorrichtung und -verfahren
US11169803B2 (en) * 2018-02-13 2021-11-09 Shanghai Cambricon Information Technology Co., Ltd. Computing device and method
CN112068799B (zh) * 2019-06-11 2022-08-02 云南大学 一种最优带符号二进制快速计算方法以及椭圆曲线标量乘法

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3930232A (en) * 1973-11-23 1975-12-30 Raytheon Co Format insensitive digital computer
US4068299A (en) 1973-12-13 1978-01-10 Honeywell Information Systems, Inc. Data processing system incorporating a logical compare instruction
US4107773A (en) 1974-05-13 1978-08-15 Texas Instruments Incorporated Advanced array transform processor with fixed/floating point formats
US4219874A (en) 1978-03-17 1980-08-26 Gusev Valery Data processing device for variable length multibyte data fields
JPS5743239A (en) 1980-08-27 1982-03-11 Hitachi Ltd Data processor
JPS62175866A (ja) 1986-01-30 1987-08-01 Nec Corp シグナルプロセツサ
US5142677A (en) 1989-05-04 1992-08-25 Texas Instruments Incorporated Context switching devices, systems and methods
CA1311063C (en) 1988-12-16 1992-12-01 Tokumichi Murakami Digital signal processor
US4969118A (en) 1989-01-13 1990-11-06 International Business Machines Corporation Floating point unit for calculating A=XY+Z having simultaneous multiply and add
US5023826A (en) * 1990-01-11 1991-06-11 Bull Hn Information Systems Inc. Apparatus for skipping arithmetic calculations involving leading zeros
US5341374A (en) 1991-03-01 1994-08-23 Trilan Systems Corporation Communication network integrating voice data and video with distributed call processing
US5241492A (en) 1991-05-06 1993-08-31 Motorola, Inc. Apparatus for performing multiply and accumulate instructions with reduced power and a method therefor
EP0545581B1 (de) * 1991-12-06 1999-04-21 National Semiconductor Corporation Integriertes Datenverarbeitungssystem mit CPU-Kern und unabhängigem parallelen, digitalen Signalprozessormodul
US5268855A (en) * 1992-09-14 1993-12-07 Hewlett-Packard Company Common format for encoding both single and double precision floating point numbers
JPH06150023A (ja) 1992-11-06 1994-05-31 Hitachi Ltd マイクロコンピュータ及びマイクロコンピュータシステム
US5452289A (en) 1993-01-08 1995-09-19 Multi-Tech Systems, Inc. Computer-based multifunction personal communications system
US6154828A (en) 1993-06-03 2000-11-28 Compaq Computer Corporation Method and apparatus for employing a cycle bit parallel executing instructions
JP3532975B2 (ja) 1993-09-27 2004-05-31 株式会社ルネサステクノロジ マイクロコンピュータおよびそれを用いて命令を実行する方法
US5574927A (en) 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US5499272A (en) 1994-05-31 1996-03-12 Ericsson Ge Mobile Communications Inc. Diversity receiver for signals with multipath time dispersion
US5541917A (en) 1994-09-12 1996-07-30 Bell Atlantic Video and TELCO network control functionality
JP3579843B2 (ja) 1994-10-24 2004-10-20 日本テキサス・インスツルメンツ株式会社 ディジタル信号処理装置
US5530663A (en) 1994-11-14 1996-06-25 International Business Machines Corporation Floating point unit for calculating a compound instruction A+B×C in two cycles
BR9509870A (pt) 1994-12-08 1997-11-25 Intel Corp Método e aparelho para permitir a um processador acessar um componente externo através de um barramento privado ou um barramento compartílhado
US5887183A (en) 1995-01-04 1999-03-23 International Business Machines Corporation Method and system in a data processing system for loading and storing vectors in a plurality of modes
US5727194A (en) 1995-06-07 1998-03-10 Hitachi America, Ltd. Repeat-bit based, compact system and method for implementing zero-overhead loops
JP2931890B2 (ja) 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US5983253A (en) 1995-09-05 1999-11-09 Intel Corporation Computer system for performing complex digital filters
US5936872A (en) 1995-09-05 1999-08-10 Intel Corporation Method and apparatus for storing complex numbers to allow for efficient complex multiplication operations and performing such complex multiplication operations
US6058408A (en) 1995-09-05 2000-05-02 Intel Corporation Method and apparatus for multiplying and accumulating complex numbers in a digital filter
US5825658A (en) 1995-09-14 1998-10-20 Vlsi Technology, Inc. Method and a system for specifying and automatically analyzing multiple clock timing constraints in a VLSI circuit
JP3767930B2 (ja) 1995-11-13 2006-04-19 沖電気工業株式会社 情報の記録・再生方法および情報記憶装置
US5826072A (en) 1995-11-13 1998-10-20 Oasis Design, Inc. Pipelined digital signal processor and signal processing system employing same
US5881060A (en) 1996-05-30 1999-03-09 Northern Telecom Limited Integrated cellular voice and digital packet data telecommunications systems and methods for their operation
JP3658072B2 (ja) 1996-02-07 2005-06-08 株式会社ルネサステクノロジ データ処理装置およびデータ処理方法
US5673272A (en) * 1996-02-13 1997-09-30 Teradyne, Inc. Apparatus and method for performing digital signal processing in an electronic circuit tester
US6092094A (en) * 1996-04-17 2000-07-18 Advanced Micro Devices, Inc. Execute unit configured to selectably interpret an operand as multiple operands or as a single operand
US5940785A (en) 1996-04-29 1999-08-17 International Business Machines Corporation Performance-temperature optimization by cooperatively varying the voltage and frequency of a circuit
DE19625569A1 (de) 1996-06-26 1998-01-02 Philips Patentverwaltung Signalprozessor
WO1998006030A1 (en) 1996-08-07 1998-02-12 Sun Microsystems Multifunctional execution unit
GB2317467B (en) * 1996-09-23 2000-11-01 Advanced Risc Mach Ltd Input operand control in data processing systems
KR100201776B1 (ko) 1996-11-06 1999-06-15 김영환 고리 구조를 갖는 적응 등화기
US5880984A (en) 1997-01-13 1999-03-09 International Business Machines Corporation Method and apparatus for performing high-precision multiply-add calculations using independent multiply and add instruments
US6029267A (en) 1997-11-25 2000-02-22 Lucent Technologies Inc. Single-cycle, soft decision, compare-select operation using dual-add processor
US6185671B1 (en) * 1998-03-31 2001-02-06 Intel Corporation Checking data type of operands specified by an instruction using attributes in a tagged array architecture
US5995122A (en) 1998-04-30 1999-11-30 Intel Corporation Method and apparatus for parallel conversion of color values from a single precision floating point format to an integer format
US6178500B1 (en) * 1998-06-25 2001-01-23 International Business Machines Corporation Vector packing and saturation detection in the vector permute unit
US6209012B1 (en) 1998-09-02 2001-03-27 Lucent Technologies Inc. System and method using mode bits to support multiple coding standards
JP3123047B2 (ja) * 1998-10-02 2001-01-09 日本電気株式会社 マイクロプロセッサ
US6839728B2 (en) * 1998-10-09 2005-01-04 Pts Corporation Efficient complex multiplication and fast fourier transform (FFT) implementation on the manarray architecture
US6292886B1 (en) * 1998-10-12 2001-09-18 Intel Corporation Scalar hardware for performing SIMD operations
US6557096B1 (en) 1999-10-25 2003-04-29 Intel Corporation Processors with data typer and aligner selectively coupling data bits of data buses to adder and multiplier functional blocks to execute instructions with flexible data types
US6330660B1 (en) 1999-10-25 2001-12-11 Vxtel, Inc. Method and apparatus for saturated multiplication and accumulation in an application specific signal processor
US7028170B2 (en) * 2000-03-08 2006-04-11 Sun Microsystems, Inc. Processing architecture having a compare capability

Also Published As

Publication number Publication date
DE60118945D1 (de) 2006-05-24
US6842850B2 (en) 2005-01-11
AU2001283408A1 (en) 2002-03-13
CN100555214C (zh) 2009-10-28
CN101101540A (zh) 2008-01-09
EP1323026B1 (de) 2006-04-19
CN100520707C (zh) 2009-07-29
EP1323026A4 (de) 2005-04-06
US7062637B2 (en) 2006-06-13
ATE323904T1 (de) 2006-05-15
EP1323026A1 (de) 2003-07-02
CN101101541A (zh) 2008-01-09
US20030154360A1 (en) 2003-08-14
US6557096B1 (en) 2003-04-29
CN1568455A (zh) 2005-01-19
CN101101540B (zh) 2011-05-18
CN101101542A (zh) 2008-01-09
CN100555215C (zh) 2009-10-28
WO2002019093A1 (en) 2002-03-07
US20030172249A1 (en) 2003-09-11

Similar Documents

Publication Publication Date Title
DE60118945T2 (de) Verfahren und vorrichtung für flexible datentypen
US6631461B2 (en) Dyadic DSP instructions for digital signal processors
DE69628325T2 (de) Signalverarbeitungssystem mit multiplizierung- addierungsoperationen
US7725681B2 (en) Parallel processing array
CN109213472A (zh) 用于利用常数值的矢量运算的指令
EP1323030B1 (de) Verfahren und vorrichtung für befehlssatzarchitektur zur gleichzeitigen durchführung von primären und schatten-digitalsignalverarbeitungssubbefehlen
US6332188B1 (en) Digital signal processor with bit FIFO
JP3779602B2 (ja) Simd演算方法およびsimd演算装置
EP0901106B1 (de) System und Methode mit Modusbits, zur Unterstützung mehrfache Kodierungstandards.
DE69824000T2 (de) Rundungsmechanismus
Ghasemi et al. Augmenting general purpose processors for network processing
Simula et al. A Fast Microprogrammed Digital Filter Supporting Early Signal Processing Research

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: HEYER, V., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 806