DE3851858T2 - Digitaler Signalprozessor. - Google Patents
Digitaler Signalprozessor.Info
- Publication number
- DE3851858T2 DE3851858T2 DE3851858T DE3851858T DE3851858T2 DE 3851858 T2 DE3851858 T2 DE 3851858T2 DE 3851858 T DE3851858 T DE 3851858T DE 3851858 T DE3851858 T DE 3851858T DE 3851858 T2 DE3851858 T2 DE 3851858T2
- Authority
- DE
- Germany
- Prior art keywords
- data
- address
- microinstruction
- memory
- instruction
- 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 - Fee Related
Links
- 230000015654 memory Effects 0.000 claims description 112
- 238000012545 processing Methods 0.000 claims description 50
- 238000012546 transfer Methods 0.000 claims description 42
- 238000013500 data storage Methods 0.000 claims description 31
- 238000000034 method Methods 0.000 claims description 30
- 238000009825 accumulation Methods 0.000 claims description 17
- 230000006870 function Effects 0.000 claims description 10
- 238000012360 testing method Methods 0.000 claims description 10
- 238000004891 communication Methods 0.000 claims description 6
- 238000006073 displacement reaction Methods 0.000 claims description 3
- 230000001174 ascending effect Effects 0.000 claims description 2
- 238000012986 modification Methods 0.000 claims 1
- 230000004048 modification Effects 0.000 claims 1
- 230000001360 synchronised effect Effects 0.000 claims 1
- 239000013598 vector Substances 0.000 description 24
- 238000010586 diagram Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 8
- 230000001276 controlling effect Effects 0.000 description 7
- 230000003111 delayed effect Effects 0.000 description 6
- 101100268670 Caenorhabditis elegans acc-3 gene Proteins 0.000 description 5
- 238000011156 evaluation Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 239000003607 modifier Substances 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 101000912352 Homo sapiens Putative uncharacterized protein DANCR Proteins 0.000 description 1
- 102100026242 Putative uncharacterized protein DANCR Human genes 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/57—Arithmetic 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
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7828—Architectures of general purpose stored program computers comprising a single central processing unit without memory
- G06F15/7832—Architectures of general purpose stored program computers comprising a single central processing unit without memory on one IC chip (single chip microprocessors)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7842—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
- G06F15/786—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers) using a single memory module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computing Systems (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Description
- Die vorliegende Erfindung betrifft einen digitalen Signalprozessor, welcher in der Lage ist, die Arithmetik- oder Unterbrechungs-Verarbeitung im wesentlichen von sukzessiven Signalen bei einer hohen Geschwindigkeit mit einer kleinen Anzahl von Schritten effizient auszuführen.
- Figur 1 zeigt in einem Blockdiagramm den Aufbau eines DSSP1 (digitalen Sprachsignalprozessors 1), nämlich einen exemplarischen konventionellen digitalen Signalprozessor, siehe "Ein Hochgeschwindigkeits-VLSI- Signalprozessor mit normalisierenden Gleitkommasystemen", the proceedings of the annual communication Symposium of the Institute of Electronics and Communication Engineers of Japan (IECEJ), 1986, Japan.
- Figur 1 zeigt einen Programmzähler (PC) 1, welcher intern mit einem Stack für Anweisungsadressensteuerung, eine Mikroanweisungen (Mikroinstruktionen) speichernde Anweisungsmaske ROM 2, ein Anweisungsregister (IR0) 3 zum Empfangen einer durch die Anweisungsmaske ROM 2 zur Verfügung gestellten Mikroanweisung oder einer externen Mikroanweisung pro Maschinenzyklus, ein Anweisungsregister (IR1) 4, welches nur das Bitfeld empfängt, welches eine in einer an das Anweisungsregister (IR0) 3 gegebenen Mikroanweisung enthaltene Dekodierung benötigt, einen Anweisungsdekoder 5 zum Dekodieren der an das Anweisungsregister (IR1) 4 gegebenen Mikroanweisung, einen Programmbus (P-Bus) 6 zum Verteilen von Mikroanweisungen an die funktionellen Einheiten, ein Register (BI) 7, welches in einer auf dem Programmbus (P-Bus) 6 zur Verfügung gestellten Mikroanweisung enthaltene unmittelbare Daten (18 Bit breit) empfängt und diese einem Datenbus (D-Bus) 8 (18 Bit breit) zum internen Transferieren der durch den Arbeitsvorgang erhaltenen Daten zur Verfügung stellt, ein Register (AM) 9 welches über den Programmbus (P-Bus) 6 eine Adressiermodusanweisung der Datenspeicherung empfängt, ein Register (AD) 10 (4w x 16 Bit breit) zum Halten von Adresszeigerinformationen zum Erzeugen einer indirekten Adresse, ein Seitenregister (PR) 11 (3 Bit breit), welches die Seite in einem externen Datenspeicher spezifiziert, eine Adressenberech-nungseinheit (AAU) 12 (9 Bit breit), welche in der Lage ist, gleichzeitig maximal drei Adressen zu erzeugen, ein Adressenregister (AR0) 13, ein Adressenregister (AR1) 14, ein Adressenregister (AR2) 15, einen Adressenselektierer (RAS) 16, einen Schleifenzähler (LC) 17, ein Statusregister (SR) 18 zum Anzeigen des Arbeitsmodus und des Status' des Prozessors, eine DMA Steuereinheit 19 zum Steuern des direkten Datentransfers zwischen seriellen I/0 Schnittstellen (SI0/1, S00/1) 32 und einem externen Datenspeicher, ein Adressenregister (AR) 20 zum Halten von 12 Bit breiten Adressen, welche an einen externen Datenspeicher weitergegeben werden sollen, einen internen Dualportdatenspeicher (20-RAM) 21 mit 512w x 18 Bit Kapazität, welcher in der Lage ist, gleichzeitig zwei Daten zu lesen und zu schreiben, ein Register (DP0) 22 zum Halten von Operandeneingangsdaten, ein Register (DP1) 23 zum Halten von Operatoreingangsdaten, einen Multiplizierer (FMPL) 24 zum Multiplizieren eines Gleitkommas mit 12E6-Bitformat, ein Register (P) 25 zum Halten der Ergebnisse der Operation des Multiplizierers (FMPL) 24, einen Selektierer 26, einen Selektierer 27, eine Gleitkommaarithmetiklogikoperationseinheit 28 im wesentlichen zum Ausführen der Gleitkommaoperation im 12E6 Bit-Format, Akkumulatoren (ACC0 bis ACC3) 29 mit 4w x 18 Bit zum Halten und Akkumulieren der Ausgänge der Gleitkommaarithmetikoperationseinheit (FALU) 28, ein Datenregister (DA) 30, verbunden mit dem Datenbus (D-Bus) 8 zum vorübergehenden Halten von Daten, welche aus einem externen Datenspeicher gelesen und in diesen geschrieben werden sollen, eine Lese-Schreib-Steuereinheit (R/W Cont) 31 zum Lesen von Daten aus einem externen Datenspeicher und Schreiben von Daten in diesen, serielle I/0 Schnittstellen (SI0/1, S00/1) 32 zum Zweikanaldatentransfer im Vollduplex mit externen Geräten, eine Unterbrechersteuereinheit (Int Cont) 33, einen externen Datenspeicherbussteuerschaltkreis (Bus Cont) 34, einen Taktsteuerschaltkreis (CLK Cont) 35 zum Steuern des internen Timings und einen Selektierer 36.
- Figur 2 ist ein Zeitdiagramm zur Hilfe bei der Erklärung der Mikroanweisungsausführungssequenz des in Figur 1 gezeigten digitalen Signalprozessors DSSP1. Figur 2 zeigt das aus vier Taktphasen bestehende Zyklustiming 40, das Zugriffsstufentiming 41, welches Stufen des Adressenausganges des Programmzählers (PC) 1 und den Mikroanweisungseingang des Anweisungsregisters (IR0) 3 zeigt, das Dekodierstufentiming 42 des Dekodierens der Eingangsmikroanweisung des Anweisungsregisters (IR1) 4 durch den Anweisungsdekodierer 5, das Timing 43 des Updating der Adressenberechnungseinheit 12 in der Dekodierstufe, das Timing 44 der Operation des Gleitkommamultiplizierers (FMPL) 24, das Timing 45 der Operation der Gleitkommaarithmetiklogikoperationseinheit (FALU) 28, das Timing 46 des Datentransfers durch den Datenbus (D-Bus) 8 zwischen den Registern und das Timing 47 des Datenlesens aus dem externen Datenspeicher und des Schreibens von Daten in diesen durch das Datenregister (DR) 30.
- Bezug nehmend auf Figur 3, welche den entsprechenden Aufbau der pro Wort 32 Bit breiten Mikroanweisungen und vier Gruppen von Mikroanweisungen des digitalen Signalprozessores DSSP1 der Figur 1 zeigt, ist als 50 eine Anweisungssequenz zum Steuern von Anweisungsverarbeitungsschritten, als 51 eine Modenanweisung zum Initialisieren von Moden und Setzen von Moden des Statusregister (SR) 17, der Adressenberechnungseinheit (AAU) 12 und der DMA-Steuereinheit 1g, als 52 eine Operationsanweisung im wesentlichen zum Steuern der Operation der Gleitkommaarithmetiklogikoperationseinheit (FALU) 28 und der die Operation der Gleitkommaarithemtiklogikoperationseinheit (fALU) 28 begleitende parallele Datentransfer und als 53 eine Ladeanweisung zum Laden von unmittelbaren Daten auf ein optionales Register oder einen Datenspeicher gezeigt.
- Die Arbeitsweise des digitalen Datenprozessors (DSSP1) wird im nachfolgenden beschrieben, wobei die Komponenten durch die in der obigen Beschreibung benannten Abkürzungen bezeichnet werden.
- Als erstes wird die allgemeine Arbeitsweise mit Bezug auf Figur 1 beschrieben. In diesem digitalen Signalprozessor DSSP1 werden der P-Bus 6 und der D-Bus 8 individuell zur Verfügung gestellt. Die Anwendung der Mikroanweisung auf IR0 3, der Transfer der Mikroanweisung durch den P-Bus 6, die Dekodierung der Mikroanweisung durch den Anweisungsdecoder 5 und die Ausführung der Anweisung durch den D-Bus 8, der FMPL 24 und die FALU 28 werden parallel in einem Pipeline-Prozeß ausgeführt. Der D-Bus 8 und alle Ausführungseinheiten einschließlich der 2P-RAM 21 sind auf Registerbasis aufgebaut, d.h. alle Eingänge und Ausgänge sind mit den Registern verbunden. Im Timing des Zugangs zu den Registern, werden die Ausgänge an der Vorderflanke des Maschinenzyklusses zur Verfügung gestellt, und die Ausgänge werden an der Hinterflanke des Maschinenzyklusses in das Register gesetzt. Solch ein Operationsmodus wird als verzögerte Operation bezeichnet. Die Inhalte der aktuell verarbeiteten Daten sind nicht die Inhalte der in das Register durch dieselbe Mikroanweisung gesetzten Daten, sondern die Inhalte der durch die vorausgehende Mikroanweisung in das Register geschriebenen Daten. Solch ein Verarbeitungsmodus wird als verzögerte Verarbeitung bezeichnet. Das Innere der Arithmetikeinheit ist durch die Register in Sektionen unterteilt, um die parallele Operation der Sektionen zu ermöglichen. Beispielsweise führt der FMPL 24 kontinuierlich einmal pro Maschinenzyklus die Gleitkommamultiplikation aus. Beim Zur-Verfügungstellen der Daten an den FMPL 20 werden die Daten in das DP0 22 und das DP1 23 durch die vorausgehende Mikroanweisung geschrieben und die Inhalte des P 25 durch die folgende oder spätere Mikroanweisung aufgenommen, um die Ergebnisse der Multiplikation zu erhalten. Während die Inhalte des P 25 aufgenommen werden, werden die Daten durch das DP0 22, das DP1 23 und das P 25 gehalten. Entsprechend kann eine Multiplikationsoperation, die zuvor drei Mikroanweisungen für den Dateneingang, die Multiplikation und den Datenausgang benötigte, durch eine Mikroanweisung ausgeführt werden, wenn die Verarbeitung kontinuierlich ausgeführt wird.
- In diesen DSSP1 sind die FMPL 24 und die FALU 28 durch das P 25 verbunden. Die FALU ist in der Lage, die Inhalte des P 25 in den ACC0 29 bis ACC3 29 zu akkumulieren, um einen Term der Produktsummen-Operation auszuführen, welche oft beim filtern und der Schmetterlingsoperation der schnellen fourier-Transformation (FFT) in einem Maschinenzyklus verwendet wird, ähnlich dem in "Packing a signal processor onto a single digital board", Louis Schirm, Electronics, December 20, 1979 gezeigten Paar aus einem Multiplizierer und einem Akkumulator.
- Beispielsweise wird die Produktsumme unter Verwendung des folgenden Ausdrucks berechnet:
- wobei N eine ganze Zahl nicht kleiner als 1 (eins) ist und ai und bi Eingangsdaten sind. In diesem Prozessor werden drei Mikroanweisungen, Eingeben der Daten in das DP0 22 und das DP1 23, Ausführen der Multiplikation durch den FMPL 24 und Akkumulieren der in das P 26 gesetzten Ergebnisse der Multiplikation durch die FALU 28 in den ACC0 bis ACC3 benötigt, um einen Term der Produktsumme zu erhalten. Daher kann ein Term der Produktsumme mittels einer Mikroanweisung erhalten werden, wenn die Operation kontinuierlich ausgeführt wird. Daher müssen, um einen Term der Produktsumme mittels einer Mikroanweisung zu erhalten, pro Mikroanweisung zwei den Eingangsdaten ai und bi entsprechende Eingangsdaten jeweils entsprechend an den DP0 22 und den DP1 23 gegeben werden. Entsprechend wird der 2P-RAM 21 in die Lage versetzt, zwei Eingangsdaten zur Verfügung zu stellen, und ein Bus wird zur Verfügung gestellt, um die aus dem 20-RAM 21 ausgelesenen Daten direkt zu den DP0 22 und DP1 23 zu transferieren, ohne den D-Bus 8 zu verwenden, um Buskonkurrenz im D-Bus 8 zu vermeiden. Die AAU 12 besitzt Ausgangsmittel zum selektiven Zurverfügungstellen zweier Adreßdaten unter den durch die AR0 12, AR1 14 und AR2 15 zur Verfügung gestellten Adreßdaten von 9 Bit Breite, hauptsächlich um die Eingangsdaten des 2P-RAM 21 zu adressieren. Die AAU 12 ist nur dann in der Lage, maximal drei Adressen gleichzeitig zu spezifizieren, wenn sie Adressen für die beiden ihr durch die 2P-RAM 21 zur Verfügung gestellten Eingangsdaten erzeugt und eine Adresse für ihr durch die DR 30 und die AR 20 auf dem externen Datenspeicher zur Verfügung gestellten Ausgangsdaten erzeugt. Jede Adressierung ist ein sogenanntes indirektes Adressiersystem unter Verwendung eines intern in der AAU 12 gesetzten Adressenzeigers. Das AR0 13 ist für Inkrement, Modulo, Bitumkehr, Wiederholung, Inkrement-Basisadresse und erneuerndes Inkrement empfänglich, während das AR1 14 und das AR2 15 nur für das einfache Inkrement empfänglich sind. Die AAU 12 ist in der Lage, die Adressieroperation nur in einem natürlichen binären 9-Bit-System aufzuführen. Beim Spezifizieren einer 12-Bit-Adresse im externen Datenspeicher werden 3 Bits zur Spezifizierung einer Speicherseite den 9 Bits hinzugefügt, um 12 Bits zu spezifizieren.
- Auf der anderen Seite, da der FMPL 24 und die FALU 28 Operationen in einem normalisierten Gleitkomma-12E6-System ausführen, sind alle Daten für den 2P-RAM 21, das DP0 22, das DP1 23, die ACC0 29 bis ACC3 29, das DR 30, der D-Bus 8 und der BI 7 18 Bit breit, und daher benötigt die FALU 28 einen speziellen Operationsmodus, um einen speziellen Anfangsadressenwert zu berechnen. Entsprechend sind die Daten, die das in dem AR0 13, dem AR1 14, dem AR2 15, dem AR 20 und den ACC0 29 bis ACC3 29 gespeicherte Operationsergebnis repräsentieren, mit diesen Daten nicht vergleichbar.
- Die DMA-Steuereinheit 19 steuert, unabhängig von der Mikroanweisung, einen Zweikanaldatentransfer im Vollduplex zwischen den seriellen I/0 Schnittstellen SI0/1 32 und S00/I 32, und die externen Datenspeicher durch den D-Bus 8 und die AR 20 und DR 30. Daher ist es möglich, daß die durch den Anweisungsdekoder 5 gesteuerte Mikroanweisungs-Operation und die interne Quelle miteinander konkurrieren.
- Um die Konkurrenzsituation zu vermeiden, wird der Anweisungsdekoder 5 während 6 Maschinenzyklen für jedes Wort außer Betrieb gesetzt, um die Operation entsprechend der Mikroanweisung durch den Datentransfer durch die DMA Steuereinheit 19 zu unterbrechen.
- Nach alldem ist der DSSP1 in der Lage, durch Ausführen von Mikroanweisungen die folgenden Operationen parallel innerhalb einer Mikroanweisung auszuführen.
- (1) Die 9-Bit-Adreßoperation durch die AAU 12, bestehend aus maximal drei Sorten.
- (2) Die 12E6-Gleitkommamultiplikation durch den FMPL 24.
- (3) Die 12E6-Gleitkommaoperation durch die FALU 28.
- (4) Datentransfer durch den D-Bus 8 und das TR 30 zwischen den externen Speichern.
- (5) DMA Datentransfer durch die seriellen Vollduplex-Zweikanal-I/0-Schnittstellen SI0/1 32 und S00/1 32, den D-Bus 8 und das TR 30 zwischen den externen Speichern.
- Das Mikroanweisungsausführungs-Timing des DSSP 1 wird mit Bezug auf die Fig. 3 beschrieben. Der Maschinenzyklus 40 des DSSP 1 ist in vier Timingphasen P0 bis P3 unterteilt. Die nominale Maschinenzykluszeit ist 50 ns klein. Dementsprechend ist es praktisch schwierig, innerhalb eines Maschinenzyklusses drei Operationen, nämlich Lesen einer Mikroanweisung von der Anweisungsmaske ROM 2, Dekodieren der Mikroanweisung durch den Anweisungsdekoder 5 und Ausführen der Anweisung durch die internen Quellen, wie etwa der FMPL 24 und die FALU 28, auszuführen. Dementsprechend werden die drei Operationen in drei Stufen für jeden Maschinenzyklus unterteilt, um eine dreistufige Pipeline zu bilden und eine Hochgeschwindigkeitsverarbeitung zu ermöglichen.
- Die folgenden Operationen werden auf den Stufen der dreistufigen Pipeline ausgeführt.
- Eine Mikroanweisungsadresse wird durch den PC 1 zur Verfügung gestellt, eine Mikroanweisung wird von der Anweisungsmaske ROM 2 gelesen, und die Mikroanweisung wird in das IR 03 gesetzt.
- Die Mikroanweisung wird von dem IR 03 in das IR 14 transferiert, die Mikroanweisung wird durch den Anweisungsdekoder 5 dekodiert, der Programmsteuermodus wird gesetzt, die Mikroanweisung wird von dem IR03 in den P-Bus 6 transferiert und die Adressieroperation von der AAU 12 durch die AM 9 und die AD 10.
- Verarbeitung der Daten durch den FMPL 24 und die FALU 28, Datentransfer durch den D-Bus 8 und Zugang zu den externen Datenspeichern durch die AR 20 und DR 30.
- Daher benötigt der DSSP1 drei Maschinenzyklen um eine Mikroanweisung auszuführen. Dieser Prozessor führt eine Mikroanweisung in ähnlicher Weise durch die Pipelinemethode aus. Dementsprechend wird die aktuelle Ausführung der Mikroanweisung ab dem Lesen der Mikroanweisung von der Anweisungsmaske ROM 2 um zwei Maschinenzyklen verzögert. Um die Timing-Konkurrenz zwischen den internen Quellen zu vermeiden, sind die internen Busse in den P-Bus 6 und den D-Bus 8 unterteilt und die Anweisungsmaske ROM 2 und der 2P-RAM 21 geteilt. Da jedoch eine Zweiganweisung jeweils in der Dekodierstufe (2) ausgeführt wird, wird die in das IR03 gesetzte Mikroanweisung in der Dekodierstufe ausgeführt. D.h. eine auf eine Zweiganweisung folgende Anweisung wird unkontrolliert ausgeführt. Um eine solche unkontrollierte Ausführung von Anweisungen zu vermeiden, wandelt der DSSP1 während der Ausführung der Zweiganweisung die auf die Zweiganweisung folgende Anweisung automatisch in eine Nicht-Operationsanweisung (NOP) um. Solch eine funktion wird bei der Vereinfachung der Mikroanweisungsbeschreibung angestrebt, es wird jedoch ein Maschinenzyklus in der Verzweigungsoperation verschwendet, und es werden zwei Maschinenzyklen in der indirekten, den D-Bus 8 verwendenden Verzweigungsoperation verschwendet. Im allgemeinen tritt kein Problem in etwa 80 % der unkontrollierten Verzweigungsoperationen auf, sogar wenn die nachfolgende Anweisung ausgeführt wird, wenn die Sequenz der Anweisungsbeschreibung sorgfältig geordnet ist und daher ein Verlust von Maschinenzyklen vermieden werden kann. Der DSSP1 ist jedoch nicht in der Lage, den Verlust von Maschinenzyklen zu vermeiden.
- Der Mikroanweisungs-Satz des DSSP1 wird im nachfolgenden mit Bezug auf Fig. 3 beschrieben. Ein Mikroanweisungs-Satz schließt nur vier Anweisungen ein, nämlich eine Sequenzanweisung, eine Modenanweisung, eine Verarbeitungsanweisung und eine Ladeanweisung.
- Die Sequenzanweisung steuert den PC 1 für Schleifen- und Subroutinenaufrufe. Die Modenanweisung initialisiert und setzt die Moden der AAU 12, des Selektierers 16, der LC 17, des SR 18 und der DMA Steuereinheit 19. Die Ladeanweisung wird verwendet, um unmittelbare 18 Bit breite Daten auf die mit dem D-Bus 8 über das BI 7 verbundenen Register zu laden. Die objektiven Quellen der genannten drei Mikroanweisungen werden abhängig von der Anweisungsoperation festgelegt, und andererseits müssen bezüglich der Verarbeitungsanweisung alle internen Quellen, welche in der Lage sind, parallel Operationen auszuführen, direkt spezifiziert werden. Dementsprechend ist die Bitlänge der Anweisungen abhängig von der Bitlänge der Operationsanweisung. Der DSSP 1 verwendet horizontale 32 Bit breite Mikroanweisungen. Der FMPL 24 läuft frei, und keine Anweisung wird dort direkt hingegeben. Die Operation der FALU 28 wird direkt durch eine Anweisung spezifiziert. Die Operationen der FALU 28 werden beispielsweise durch die folgenden Anweisungen gesteuert.
- (1) Absolutwertanweisung: X
- (2) Signum-Funktions-Anweisung: Sign (Y) X
- (3) Additionsanweisung: X + Y
- (4) Subtraktionsanweisung: X - V
- (5) Maximalwert-Anweisung: MAX (X, Y)
- (6) Minimalwert-Anweisung: M1N (X, Y)
- (7) fixed-to-floating-Übersetzungsanweisung: FLT (X)
- (8) floating-to-fixed-Übersetzungsanweisung: FIX (X)
- (9) Verschiebeanweisung: R1, L1 bis L8
- (10) Logikanweisung: AND, OR, EOR, NOT
- (11) Mantissenaditionsanweisung: XM + VM
- (12) Charakteristische Subtraktionsanweisung: XE - VE
- Es ist jedoch ein Problem im DSSP1, daß die Operation des DSSP1 auf einer Gleitkommaoperation basiert, während der DSSP1 Logik- und Adreßoperationen auf der Basis der Fixpunkt-Operation ausführt. Wie oben erwähnt, sind die Gleitkommaoperation und die Fixpunkt-Operation nicht kompatibel miteinander. Beim Adressieren des Speichers beispielsweise, auf der Basis des Operationsergebnisses, muß die Anweisung (8) durch die FALU 28 ausgeführt werden. Da außerdem Gleitkommadaten nicht mit der allgemeinen Dateneingangs- und Ausgangsoperation verarbeitet werden, muß die Anweisung (7) oder die Anweisung (8) für jede Dateneingangs- oder Ausgangsoperation ausgeführt werden, um die Daten zu übersetzen.
- Ein anderes Problem des DSSP1 ist es, daß Bits beim Normalisieren von floating-point-Daten immer trunkiert werden und so Fehler in der Operation nach sich ziehen, da die Verarbeitungsgenauigkeit des Signalprozessors begrenzt ist. Wenn jedoch die Gleitkommadaten nur durch Trunkier-Bits normalisiert werden, ist der Absolutwert der Operationsergebnisse immer kleiner als der wahre Wert, wodurch die Fehlerverteilung nicht mehr zufällig ist. Die Fehler können durch Erhöhung der Operationswortlänge als vernachlässigbar klein angesehen werden. Da jedoch der gewöhnliche Signalprozessor bei einer hohen Geschwindigkeit betrieben werden muß, ist die Erhöhung der Operationswortlänge begrenzt.
- Solch ein Problem kann insbesondere in der Bildsignalverarbeitung nicht ignoriert werden, bei der Zwischenbildverarbeitung durch einen IIR-Digitalfilter (rekursiver Digitalfilter) ausgeführt wird und der DSSP1 die Operationsergebnisse durch eine logische Operationsanweisung oder dergleichen runden muß. Weiterhin wird in den meisten fällen in einem allgemeinen Signalverarbeitungsalgorithmus die Verarbeitungsgenauigkeit für jeden einzelnen Prozeß speziell geregelt, und es stimmt daher die Verarbeitungsgenauigkeit nicht notwendigerweise mit der Operationswortlänge des Signalprozessors überein. In einem solchen Fall wird das Format der Operationsdaten jeweils durch die FALU 28 für jeden einzelnen Prozeß konvertiert.
- Es ist ein weiteres Problem im DSSP1, daß Operationen, welche in der Lage sind, Hochgeschwindigkeitsverarbeitung vorzunehmen, auf Produktsummen-Operationen begrenzt sind. Solch eine Begrenzung des Operationsmodus ist für FFT- und FIR-Filter kein Problem. Der letztere Signalverarbeitungsalgorhithmus benötigt jedoch eine Bestimmungsoperation für den Grad der Aproximation der Vektoren und d.h. Abstandsberechnung wie durch die nachfolgenden Ausdrücke beschrieben, welche bei einer hohen Verarbeitungsgeschwindigkeit ausgeführt werden müssen.
- wobei ai und bi Elemente des Vektors sind und N ist die Anzahl der Vektoren.
- Der DSSP1 ist nicht in der Lage, eine solche Operation zu unterstützen, und daher muß solch eine Operation zur Verarbeitung in vier getrennte arithmetische Operationen aufgeteilt werden. Es müssen daher drei getrennte Operationen zur Berechnung eines einzigen Terms ausgeführt werden. Wenn jeder Term durch Verwendung der genannten Ausdrücke berechnet wird, müssen aufgrund der Verzögerung neun Anweisungen (9 = 3 x 3) für einen Term zur Verfügung gestellt werden, was die Verarbeitungsmenge exzessiv vermindert. Die Verarbeitungsmenge kann natürlich durch Sortieren in differenzielle und Quadratakkumulation durch Speichern von Zwischenresultaten durch den 2P-RAM 21 erhöht werden. Es ist jedoch schwierig, den begrenzten Platz auf dem Datenspeicher effektiv zu nutzen und daher ist es unmöglich, eine große Datenmenge zu verarbeiten.
- Man betrachtet beispielsweise eine wie in Fig. 4 gezeigte binäre Baumsuche. Angenommen, ein Eingangsvektor ist in den 2P-RAM 21 gesetzt und ein in Baumstruktur aufgebauter Referenzvektor ist den durch Bezugszeichen angedeuteten Knoten in einem externen Speicher gemäß Fig. 5 zugewiesen. Eine Entwicklungsfunktion, welche den Grad der Annäherung zwischen dem Eingangsvektor und dem Referenzvektor , ist eine absolute Differenzialsumme:
- ausgedrückt,
- Ein Referenzvektor, welcher die letzte absolute Differenzialsumme zur Verfügung stellt, wird an jedem Knoten des binären Baums ausgewählt, um schließlich einen Referenzvektor zu erhalten, welcher den höchsten Grad der Approximation liefert. In dieser binären Baumsuche, wenn die Zahl der vorhandenen Knoten N ist, wird der Grad der Approximation zwischen zwei Referenzvektoren B an einem Knoten 2n+1 und 2n+2 bestimmt, und dann die Knotennummer eines aus der nächsten Stufe zu vergleichenden Referenzvektors auf der Basis des Grades der Approximation berechnet. Um die genannte binäre Baumsuche durch den DSSP1 auszuführen, sind die folgenden Anweisungsschritte notwendig:
- Eingangsdatenumwandlung: N + 2 Schritte
- Auswertungswertberechnung für einen Vektor: 9N + 2 Schritte
- Auswertungswertrundung: etwa 3 Schritte
- Auswertungswertvergleich: 4 Schritte
- Berechnung der Referenzvektor- Adresse für den nächsten Knoten: etwa 9 Schritte
- Zusammen: 18 N + 14 Schritte I Stufe + N + 2 Schritte.
- Diese Gesamtzahl der Schritte ist etwa neunmal größer als die Anzahl der Schritte, wenn die zur Auswertungswertberechnung notwendige ideale Anzahl von Schritten 2N beträgt und die Umwandlung von Adressen- und Eingangsdaten nicht notwendig ist. In einem solchen Prozeß ist es notwendig, sich immer über den Kontext der Anweisungen bewußt zu sein, da der gleiche Prozeß nicht sukzessiv ausgeführt wird. Folglich verschlechtert sich die Verarbeitungseffizienz signifikant, ein sehr komplexes Programm ist notwendig, und es entsteht offensichtlich ein Problem hinsichtlich der Menge an Arbeit, welche zur Entwicklung von Programmen notwendig ist.
- Der so aufgebaute herkömmliche digitale Signalprozessor hat die folgenden Probleme.
- * Es ist notwendig, sich beim Herstellen eines Programms immer im klaren über den Kontext der Anweisungen zu sein, und die gleichen Anweisungen müßten sukzessive ausgeführt werden, da sonst die Verarbeitungseffizienz nicht verbessert werden kann.
- * Adressen- und Datenformat sind nicht kompatibel miteinander, daher muß das Format für alle Daten umgewandelt werden, beispielsweise in das Tabellen-Suchformat.
- * Speziell entworfen zum Erhalten der Produktsumme, ist die Arithmetikeinheit nicht in der Lage, mit hoher Effizienz zu arbeiten und es ist ein komplexes Programm notwendig für andere Operationen als die für das Erhalten einer Produktsumme.
- * Die Steuerung der Genauigkeit der Datenverarbeitung ist schwierig, und ein automatisches Runden ist unmöglich.
- * Simultanes Datenlesen und Datenlesen von dem Datenspeicher für 2-Eingang/1-Ausgang-Operationen ist unmöglich, und die Effizienz ist beispielsweise in der Vektordatenverarbeitung extrem vermindert.
- * Sofortige Spezifikation eines indirekten Adreßmodus in der Anweisung ist unmöglich, und daher muß die Verarbeitung für jeden Adreßmoduswechsel unterbrochen werden.
- Die vorliegende Erfindung wurde getätigt, um die Probleme im herkömmlichen digitalen Signalprozessor zu lösen.
- Dementsprechend ist es eine erste Aufgabe der vorliegenden Erfindung, einen digitalen Signalprozessor zur Verfügung zu stellen, der
- * kompatible Adressen- und Datenformate besitzt und in der Lage ist, Prozesse mit weniger Wiederholungen derselben Operation auszuführen, ohne die Effizienz zu vermindern,
- * in der Lage ist, schwierige Prozesse ebenso wie Prozesse der Produktsumme bei einer hohen Verarbeitungsgeschwindigkeit auszuführen,
- * in der Lage ist, die Datenverarbeitungsgenauigkeit durch einfache Mittel effizient zu steuern,
- * in der Lage ist, nach und aus einer Arithmetikeinheit bei hoher Geschwindigkeit Vektordaten zu liefern, und in der Lage ist, eine hochflexible Adressierung vorzunehmen.
- Um die genannten Aufgaben zu lösen, weist die beanspruchte Erfindung den folgenden Aufbau, die folgenden Funktionen und Eigenschaften auf:
- Ein digitaler Signalprozessor entsprechend der vorliegenden Erfindung gemäß Anspruch 1 enthält einen fünfstufigen Aufbau einschließlich, zusätzlich zu einer Anweisungsausführungspipeline-Stufe, einer Stufe zum Lesen von Daten aus einem Datenspeicher und zum Zuführen der Daten zu einer Arithemtikeinheit und einer Stufe zum Schreiben von durch die Arithmetikeinheit zur Verfügung gestellten Daten in den Datenspeicher, oder Akkumulieren oder Runden der Daten durch einen in der Arithmetikeinheit enthaltenen Akkumulator, einen Barrel-Schieber, ein Multiplizierer und jeweils eine Arithmetiklogikeinheit für die Ausführungsstufe der fünf Stufen befinden sich auf derselben Linie in der Arithmetikeinheit, ein normalisierender Barrel-Schieber für die Schreib-/Akkumulationsstufe ist mit dem Barrel-Schieber verbunden, der Multiplizierer und die Arithmetiklogikeinheit verwendet die Ausgänge des normalisierenden Barrel-Schiebers als Eingänge für einen Addierer zum Runden oder Akkumulieren oder als Ausgänge für die Arithmetikeinheit, ein interner Speicher enthält zwei Dualportspeicher, bei dem einer der Ports, nämlich der Leseport jedes Dualportspeichers, mit den entsprechenden zwei internen Bussen der Arithmetikeinheit und der andere Leseport, nämlich dessen Lese-/Schreibport, mit einem der Ausgangsbusse der Arithmetikeinheit oder mit einem DMA-Transferbus verbunden ist, eine Adressenerzeugungseinheit, welche 2-Eingangs-/1-Ausgang-Datenspeicheradressen zweidimensional und parallel für die Arithmetikeinheit erzeugt und eine DMA-Steuereinheit für das zweidimensionale Transferieren von Daten zwischen dem internen Datenspeicher und einem externen Datenspeicher unter Verwendung des DMA-Busses sind für die Anweisungsausführungsstufe vorgesehen, und die entsprechenden Datenformate der Adressenerzeugungseinheit, der DMA-Steuereinheit und der Arithmetikeinheit sind miteinander kompatibel.
- Der digitale Signalprozessor gemäß der vorliegenden Erfindung spezifiziert die Operationen der Arithmetikeinheit einheitlich und operiert mit Mikroanweisungs-Codes, welche durch Kombinieren von Funktions-Codes entsprechend den Operationen der Arithmetikeinheit und 2-Quellen- und 1-Zielsteuercodes entsprechend dem normalisierenden Barrel-Schieber, den beiden Eingängen und dem Ausgang aufgebaut sind.
- Daher eliminiert die Anweisungsausführungspipeline-Stufe der vorliegenden Erfindung den größten Teil einer Mikroanweisungsbeschreibung, wenn man die verzögerte Verarbeitung berücksichtigt, und ist in der Lage, effizient zu arbeiten, sogar wenn die Wiederholfrequenz der Ausführung derselben Anweisung nicht sehr groß ist.
- Die Arithmetikeinheit des digitalen Signalprozessors gemäß einer weiteren Ausführungsform der vorliegenden Erfindung führt die Berechnung eines Terms der Produktsumme, der absoluten Differentialsumme und der differenziellen Quadratsumme und das Runden und Verschieben der Daten in einer einem Maschinenzyklus entsprechenden Zeit aus. Der interne Datenspeicher und der Busaufbau ermöglichen die Ausführung von 2-Eingangs- und 1-Ausgang-Datentransfer zur Arithmetikeinheit parallel zur arithmetischen Verarbeitung, und die Kombination des internen Datenspeichers, des Busaufbaus und der Adressenerzeugung für die zweidimensionale Adressenerzeugung ermöglicht effiziente Verarbeitung von Vektordaten.
- Da das Datenformat des Adressenerzeugers kompatibel mit dem der Arithmetikeinheit ist, ist Datenumwandlung in tabellenlesbare Form und in bezug auf ein Lexikons unnötig.
- Die DMA-Steuereinheit führt einen zweidimensionalen Datenempfang von dem externen Datenspeicher parallel mit der internen Verarbeitung aus, um die Verarbeitungszeit für den Dateneingang und -ausgang effektiv zu verkürzen.
- Der Mikroanweisungssatz, welcher durch eine weitere Ausführungsform der vorliegenden Erfindung verwendet wird, spezifiziert die Kombination der Operationen der internen H/W-Quellen einheitlich, um die Programmbeschreibung zu vereinfachen, und spezifiziert die Anzahl von Datendigits und Quellenziel-Adressenerzeugungsformeln für jede Mikroanweisung, um die direkte Steuerung der Digit-Anpassung für eine komplexe Datenverarbeitung und das Abtasten von Datenspeichern zu ermöglichen. Dementsprechend ist die Notwendigkeit, den Kontext der Anweisung zu berücksichtigen, bis auf das Kleinstmögliche begrenzt, ist die Programmbeschreibung vereinfacht und kann das Programm leicht in einer höheren Sprache wie etwa C geschrieben werden. Gemäß einer bevorzugten Ausführung der vorliegenden Erfindung speichertjeder der Adressengeneratoren der Adressenerzeugungseinheit eine Adresse über den internen Datenbus im Adressenregister, speichert einen Indexwert über den internen Datenbus im Indexregister, addiert den Indexmodifizierungswert, eine durch eine Mikroanweisung spezifizierte Verschiebung und den Inhalt des Adressenregisters, frischt gleichzeitig den Inhalt des Adressenregisters durch Verwendung des Ergebnisses der Addition und behandelt das Ergebnis der Addition als eine Datenspeicheradresse und eine zweidimensionale oder andere Adressierung durch eine Kombination der Mikroanweisungen durch sequentielles Zuweisen jedes Adressengenerators zum Adresserzeugungsmodus jeder Mikroanweisung.
- Gemäß einer weiteren bevorzugten Ausführungsform odnen die Direktspeicherzugriffssteuereinheit und die Direktspeichertransferadressenerzeugungseinheit sequentiell den rechtwinkligen Abschnitt von Zeile k x Spalte l (k und l sind positive ganze Zahlen) eines zweidimensionalen Datenadressenraumes mit m Zeilen und n Spalten (m und n sind positive ganze Zahlen) zu, um die externe Datenspeicherschnittstelleneinheit zu adressieren, ordnen Adressen den mehreren Dual-Port-Speichern in einer aufsteigenden Reihenfolge von einer optionalen Startadresse zu, und selektieren eine der mehreren Dual-Port-Speicher durch das höchste Bit der Adresse oder einer Vielzahl von Bits der Adresse für einen zweidimensionalen Datentransfer zwischen den Dual-Port-Speichern und dem externen Datenspeicher, und werden eine Transferrichtung und die Anzahl der zu transferierenden Daten durch eine Mikroanweisung beim Starten des direkten Speichertransfers spezifiziert, und informiert die Direktspeicherzugriffssteuereinheit die Sequenzsteuereinheit vom Ende des Datentransfers beim Beenden des direkten Speichertransfers, um gleichzeitig Übertragungsdaten in einen rechtwinkligen Block aus k Zeilen x l Spalten zwischen dem Dual-Port-Speicher und dem externen Datenspeicher sowie interne arithmetische Prozesse zu implementieren.
- Die Sequenzsteuereinheit ist vorzugsweise so ausgebildet, daß sie bedingte Verzweigungsoperationen implementiert, die mit einer Vielzahl von Verzweigungsbedingungen auf einer Mikroanweisung arbeiten, indem eine Vielzahl von Bedingungen in einem speziellen Register zuvor gespeichert wird, Anweisungsspeicheradressen zuvor gespeichert werden, zu denen das Programm verzweigt wird, wenn die Verzweigungsbedingungen in den Registern entsprechend den Verzweigungsbedingungen angefunden werden, die Vielzahl von Verzweigungsbedingungen parallel auf einer Mikroanweisung getestet wird, das Programm in eine der Anweisungsspeicheradressen verzweigt wird, die in dem speziellen Register entsprechend den Verzweigungsbedingungen mit der höchsten Priorität unter den aufgefundenen Bedingungen gespeichert worden sind, und das Programm zu der Anweisungsspeicheradresse verzweigt, die in dem speziellen Register entsprechend all den nicht aufgefundenen Verzweigungsbedingungen gespeichert ist.
- Bei einer weiteren bevorzugten Ausführungsform der vorliegenden Erfindung weist die Sequenzsteuereinheit einen Schleifenzähler und einen Wiederholungszähler auf, die in der Lage sind, Anfangswerte aus den internen Datenbussen zu erhalten und deren Inhalte zur Verfügung zu stellen, wobei der Inhalt des Wiederholungszählers für jede Ausführung der Mikroanweisung um 1 herabgezählt und die gleiche Mikroanweisung solange wiederholt ausgeführt wird, bis sich der Inhalt des Wiederholungszählers auf 0 reduziert hat, wenn die Wiederholung durch die erste Mikroanweisung der Wiederholungsoperation angewiesen wird, der Inhalt des Schleifenzählers um 1 heruntergezählt wird, wenn die Schleife durch eine Mikroanweisung angewiesen wird, das Programm in eine Anweisungsspeicheradresse verzweigt wird, die durch die Mikroanweisung spezifiziert ist, wenn der Inhalt des Schleifenzählers nach Herabzählen nicht 0 ist, und die Verzweigung zum Beenden der Schleifenoperation nicht vollständig ist, wenn der Inhalt des Schleifenzählers nach dem Herabzählen 0 ist, um eine einzelne Mikroanweisung oder eine Vielzahl von Mikroanweisungen durch einen vorbestimmten Zyklus zu wiederholen.
- Gemäß einem weiteren Aspekt der Erfindung teilt die externe Datenspeicherschnittstelleneinheit den externen Datenspeicher in zwei Teile, indem eine Adresse verwendet wird, die vorher durch eine Mikroanweisung als Grenze spezifiert worden ist, behandelt den externen Datenspeicher als ein Hochgeschwindigkeitsspeicher, erzielt der Lese-/Schreiboperationen innerhalb eines Maschinenzyklusses beim Adressieren einer der beiden Teile des externen Datenspeichers und behandelt den externen Datenspeicher als Niedriggeschwindigkeitsspeicher, der solange auf Stand-by steht, bis ein externes Lese/Schreibabbruchsignal beim Adressieren des anderen Teils des externen Datenspeichers erfaßt wird.
- Vorzugsweise ist der Anweisungsspeicher teilweise oder ganz wiederaufladbar, werden funktionalen Prozessen entsprechende Mikroprogramme durch eine externe Vorrichtung in den wiederaufladbaren Anweisungsspeicher geschrieben, um den digitalen Signalprozeß in die Lage zu versetzen, komplexe und diversifizierte Prozesse zu implementieren, und werden automatisch Mikroprogramme durch einen externen Speicher zur Verfügung gestellt, wenn die Mikroprogramme nicht in den Anweisungsspeicher geschrieben sind.
- Die Mikroanweisung kann bevorzugt ein Mikroanweisungssatz sein, der aus einem Funktionscode, welcher einheitlich eine Operation in jeder Stufe der fünfstufigen Pipeline entsprechend der Art der Operation spezifiziert, einem Eingangszuweisungscode und einem Ausgangszuweisungscode, welche einzeln den Adressenerzeugungsmodus des Adressengenerators der Adresserzeugungseinheit für jede Mikroanweisung entsprechend mindestens einem 2-Eingang-/1-Ausgang- oder einem 1-Eingang-/1-Ausgang-Datenspeicher anweisen, einem resourcenspezifizierenden Code, welcher den Objektdatenspeicher oder das Register der Dateneingänge/-Ausgänge spezifiziert, der Anzahl der Verschiebebits des normierten Barrel-Schiebers der Ausführungseinheit, einem Testbedingungscode, welcher die Art der Operation bestimmt, einem unmittelbaren Datenwert und einem Haltebedingungscode besteht.
- Gemäß einer weiteren Ausführungsform der Erfindung weist die externe Datenspeicheradresse willkürlich eine Adresse für die Kommunikation zwischen den Prozessoren zu, wobei die Adresse einem externen First- In/First-Out-Speicher oder externen Dual-Port-Speicher für die Kommunikation entspricht, um diese oder andere Prozessoren miteinander zu verbinden, um eine Vielzahl von Prozessoren in die Lage zu versetzen, komplexe Prozesse bei einer hohen Verarbeitungsgeschwindigkeit zu implementieren.
- Bei einer weiteren Ausführungsform der vorliegenden Erfindung wird das höchstwertige Bit von Datenbits von dem geringstwertigen Bit, das durch Verschiebung abgeschnitten wird, beim Anpassen der Zahl von Bits durch Verschieben in Richtung des geringstwertigen Bits durch den normierten Barrel-Schieber als ein Übertragbit verwendet, wobei der Addierer einen Operationsmodus aufweist, in dem eine Datenrundungsoperation oder eine Datenrundungsakkumulation durch Addition mit dem Übertragbit unter Verwendung der Inhalte der Arbeitsregister oder Nulldaten ausgeführt werden und der Operationsmode durch direktes Kontrollieren des Addierers durch Setzen eines Modus oder einer Mikroanweisung zugeordnet wird.
- Gemäß einer weiteren bevorzugten Ausführungsform der vorliegenden Erfindung entscheidet die Arithmetiklogikeinheit der Ausführungseinheit, ob eine Testbedingung (z.B. eine Bedingung, daß zwei Eingangsdaten gleich sind) zum Testen des Ergebnisses eines durch eine Mikroanweisung spezifizierten Vergleiches beim Vergleichen der Größen von zwei Eingangsdaten oder Testen eines speziellen Bit in einem Eingangswert erfüllt ist oder nicht, und sequentiell die Ergebnisse der Entscheidung in einer vertikalen Richtung des speziellen Schieberegisters für jede vergleichende Mikroanweisung Bit für Bit speichert, den horizontalen fnhalt des Schieberegisters von den internen Datenbussen ausliest und die Vielzahl der Entscheidungsergebnisse, die durch eine vielfache Wiederholung der Vergleichsmikroanweisungen gewonnen wurden, als einen Suchablaufcode im Baumsuchverfahren oder zur kombinierten Verzweigungsoperation, basierend auf einer Vielzahl von Bedingungen, verwendet.
- Fig. 1 ist ein Blockschaltbild, welches den Aufbau des DSSP1 als ein erstes Beispiel eines herkömmlichen digitalen Signalprozessors zeigt;
- Fig. 2 ist ein Zeitdiagramm als Hilfe bei der Erklärung des Anweisungsausführungs-Timings des DSSP1 der Fig. 1;
- Fig. 3 ist eine Darstellung eines durch den DSSP1 der Fig. 1 auszuführenden Mi kroanweisungssatzes;
- Fig. 4 ist ein Diagramm zur Erklärung der binären Baumsuchoperation;
- Fig. 5 ist ein Diagramm, welches ein Beispiel einer Anordnung von Referenzvektoren gemäß Fig. 4 in einem Datenspeicher zeigt;
- Fig. 6 ist ein Blockschaltbild eines digitalen Signal prozessors in einer bevorzugten Ausführungsform entsprechend der vorliegenden Erfindung;
- Fig. 7 ist ein Blockschaltbild einer in dem digitalen Signalprozessor der Fig. 6 enthaltenen Arithmetikeinheit;
- Fig. 8 ist eine blockschaltbildartige Darstellung, welche den Aufbau eines internen Datenspeichers zeigt, welcher in dem digitalen Signalprozessor gemäß Fig. 6 enthalten ist;
- Fig. 9 ist eine blockschaltbildartige Darstellung, welche den Aufbau eines Adressengenerators zeigt, welcher in dem digitalen Signalprozessor gemäß Fig. 6 enthalten ist;
- Fig. 10 ist ein Zeitdiagramm zur Erläuterung des Timings der Operationen des digitalen Signalprozessors gemäß Fig. 6; und
- Fig. 11 ist eine Darstellung eines Beispiels eines Mikroanweisungssatzes, welcher durch den digitalen Signalprozessor gemäß Fig. 6 ausgeführt wird.
- Eine bevorzugte Ausführungsform der vorliegenden Erfindung wird im folgenden mit Bezug auf die beiliegenden Zeichnungen beschrieben.
- Bezug nehmend auf Fig. 6, welche einen digitalen Signalprozessor in einer ersten Ausführungsform entsprechend einer Ausführungsform der vorliegenden Erfindung zeigt, sind dort gezeigt: Ein den digitalten Signalprozessor mit einem externen Erweiterungsmikroanweisungsspeicher verbindender externer Programmbus 200, ein intern beschreibbarer Anweisungsspeicher (WCS) 201, eine Sequenzsteuereinheit 202, welche eine über den externen Programmbus 200 oder von der WCS 201 gelesene Mikroanweisung empfängt und eine vorbestimmte Steueroperation in einer Anweisungsausführungspipeline ausführt, eine Adressenerzeugungseinheit 203, welche 2-Eingangs-, 1-Ausgangs-Adressen parallel für Datenspeicher erzeugt, drei interne Datenbusse 204 zum Paralleltransfer der 2-Eingangs- 1-Ausgangsdaten, wobei jeder eine Breite von 24 Bit aufweist, ein externer Bus 211, welcher an einen externen Erweiterungsdatenspeicher angeschlossen ist, ein externer Datenspeicher (I/F) 205 zum selektiven Verbinden eines der drei internen Datenbusse 204 mit dem externen Datenbus 211, eine Arithmetikeinheit 206, welche vorbestimmte Operationen ausführt und mit den drei internen Datenbussen 204 verbunden ist, ein interner Datenspeicher (M0) 207, welcher einen Leseanschluß und einen Lese-/Schreibanschluß besitzt und mit den internen Datenbussen 204 verbunden ist, ein interner Datenspeicher (M1) 208 ähnlich dem M0 207, welcher mit den internen Datenbussen 204 verbunden ist, eine DMA-Steuereinheit 209, welche mit einem externen Datenspeicheradressiergenerator und einem internen Datenspeicheradressiergenerator versehen ist, ein DMA-Bus 210 zum DMA-Transfer zwischen den externen Datenbussen 211 und dem M0 207 und M1 208, ein Reset-Terminal 212, durch welches ein externes Reset-Signal der Sequenzsteuereinheit 202 zur Verfügung gestellt wird, und ein Unterbrecherterminal 213, dem ein externes Unterbrechnungssteuersignal zur Verfügung gestellt wird.
- Fig. 7, welche den Aufbau einer Arithmetikeinheit 206 gemäß Fig. 6 darstellt, zeigt einen X-Bus 220 zum Transferieren von Operandendaten zwischen den drei internen Datenbussen 204, einen Y-Bus 221 zum Transferieren von Operandendaten zwischen den drei internen Datenbussen 204, einen Z-Bus 222 zum Transferieren von Ausgangsdaten zwischen den drei internen Datenbussen 204, einen Barrel-Schieber (B- SFT) 223 mit-einer Wortlänge von 24 Bit, zum Verschieben und Rotieren von Eingangsdaten um eine vorbestimmte Zahl von Bit in einem Maschinenzyklus, eine Arithmetiklogikeinheit (ALU) 224 mit einer Wortlänge von 24 Bit, welche eine vorbestimmte arithmetische und logische Operation oder absolute Differenzberechnung in einem Maschinenzyklus ausführt, einen Multiplizierer (MPY) 225, welcher eine Multiplikation von 24 Bit ausführt und das Multiplikationsergebnis von 47 Bit in einem Maschinenzyklus zur Verfügung stellt, ein Datenpipelineregister (DPR0) 226, welches die Ausgangsdifferenz der ALU 224 temporär hält und die Ausgangsdifferenz dem Quadrat-Eingangsanschluß der MPY 225 zur Verfügung stellt, um die Quadratdifferenz zu berechnen, einen Multiplexer 227, welcher entweder den 24-Bit-Ausgang des B-SFT 223 oder den 24-Bit-Ausgang des ALU 224 auswählt und den ausgewählten Ausgang einem Datenpipelineregister (DPR1) 229 zum temporären Halten des Ausgangs des Multiplexers 227 zur Verfügung stellt, ein Datenpipelineregister (DPR2) 228 zum temporären Halten des 47-Bit-Ausgangs des MPY 225, ein normalisierender Barrel-Schieber (N-SFT) 230, welcher selektiv entweder die 24-Bit-Daten des DPR1 229 oder die 47-Bit-Daten des DPR2 228 empfängt und die empfangenen Daten zur vorbestimmten Digit-Anpassung in einem halben Maschinenzyklus verarbeitet, um 24-Bit-Daten zur Verfügung zu stellen, ein 24-Bit-Ausgang 231 des N-SFT 230, ein Arbeitsregister (Wr) 235 im '24 Bit x 8 Wort'-Aufbau, ein 24-Bit-Akkumulationsausgang 232 des Wr 235, einen Addierer (AU) 233 zur Akkumulation und Rundung, einen 24-Bit-Ausgang 234 des AU 233, ein Flag-Ausgang 236 des ALU 224, ein Flag-Prüfschaltkreis 237 für die Zustandsprüfung des flag-Ausgangs 236, ein Zustandsprüfschieberregister (tcsr) 238 von 24 x 1 Bit zum sequentiellen Speichern der 1-Bit-Ausgänge des Flag-Prüfschaltkreises 237, nämlich die Ergebnisse der Entscheidungen des Flag-Prüfschaltkreises 237, und ein 1-Bit-Träger 239, welcher das höchste Bit zur Verfügung stellt, welches herausgeschoben wurde, als der N-SFT 230 eine Verschiebeanweisung zum Verschieben in der LSB-Richtung geliefert hat, nämlich nach rechts zu verschieben.
- Fig. 8 stellt die Beziehung zwischen den internen Datenspeichern und den internen Datenbussen des digitalen Signalprozessors gemäß Fig. 6 dar. Fig. 8 zeigt einen Multiplexer 240, welcher 24-Bit-Daten am Leseanschluß des M0 207 selektiv dem X-Bus 220 oder dem Y-Bus 221 zur Verfügung stellt, einen Multiplexer 241, welcher 24-Bit-Daten am Leseanschluß des M1 108 selektiv dem X-Bus 220 oder dem V-Bus 221 zur Verfügung stellt, einen Multiplexer 242, welcher entweder Schreibdaten auf dem DMA-Bus oder Schreibdaten auf dem Z-Bus 222 auswählt und die ausgewählten Daten dem Lese-/Schreibanschluß des M0 207 liefert, einen Multiplexer 242, welcher entweder Schreibdaten des ZBusses 222 oder Schreibdaten des DMA-Busses 210 auswählt und die ausgewählten Daten dem Lese-/Schreibanschluß des M1 208 zur Verfügung stellt, ein 2-2-Adressenselektierer 244, welcher eine Schreibadresse D-Adresse 247 und eine interne Datenspeicheradresse E-Adresse 248 der DMA-Steuereinheit 202 selektiv entweder dem Lese/Schreibanschluß des M0 207 oder dem Lese-/Schreibanschluß des M1 208 zur Verfügung stellt, eine S0-Adresse 245, d.h. die Leseanschlußadresse des M0 207, eine S1-Adresse 246, d.h. die Leseanschlußadresse des M1 208, eine Schreibadresse 247 für den M0 207 oder den M1 208 und eine I-Adresse, d.h. eine interne Speicheradresse, entsprechend dem durch den DMA-Bus 210 transferierten Daten.
- Fig. 9 zeigt den Aufbau der Adreßerzeugungseinheit 203 gemäß Fig. 6. Fig. 9 zeigt Verschiebungsdaten 250, angedeutet durch einen in eine der Sequenzsteuereinheit 202 zur Verfügung gestellten Mikroanweisung eingeschlossenen Zwischenwert, ein '24 Bit x 4 Wort'-Adreßregister (AR) 251, ein '12 Bit x 4 Wort'-Indexmodifizierregister (IXR) 252, einen Daten-I/O-Bus 253, welcher das AR 251 mit dem X-Bus 220 verbindet, ein Daten-I/O-Bus 254, welcher das IXR 252 mit dem X-Bus 220 verbindet, ein 24-Bit-Wort langer Adressenaddierer 255, drei individuelle Adreßerzeuger (AGUs) 256, ein Schreibadreßpipelineregister (DAPR3) 257 zum Verzögern einer 24-Bit-Schreibadresse um einen Maschinenzyklus und ein Schreibadresspipel ineregister (DAPR4) 258, ähnlich dem DAPR3 257.
- Fig. 10 ist ein Diagramm zur Erläuterung einer Anweisungsausführungspipeline im fünfstufigen Aufbau des digitalen Signalprozessors der Fig. 6. Fig. 10 zeigt einen vierphasigen Maschinenzyklus 206, eine Zugriffsstufe 261, eine Dekodierstufe 262, ein Adressenerneuerungs-Timing 263 in der hinteren Hälfte der Dekodierstufe, einer Lesestufe 264, eine Ausführungsstufe 265, eine Schreib-/Akkumulationsstufe 267 und ein Normalisierungs-Timing 266 in der ersten Hälfte der Schreib-/Akkumulationsstufe 267.
- Fig. 11 zeigt einen Teil eines Mikroanweisungssatzes für den digitalen Signalprozessor der Fig. 6. Fig. 11 zeigt eine Ladeanweisung 270, eine Verzweigungsanweisung 271, eine 1-Quellenverarbeitungsanweisung 272, eine 2-Quellenverarbeitungsanweisung 273, einen Quellenspezifiziercode 274, einen Zielspezifiziercode 275, einen Quelle- 0-Spezifiziercode 276 und einen Quelle-1-Spezifiziercode 277.
- Die Operation des digitalen Signalprozessors wird im nachfolgenden beschrieben, wobei die Komponenten durch Abkürzungen bezeichnet sind.
- Als erstes wird die allgemeine Arbeitsweise des digitalen Signal prozessors kurz mit Bezug auf Fig. 6 beschrieben. Der digitale Signalprozessor der vorliegenden Erfindung, ähnlich dem herkömmlichen digitalen Signalprozessor, weist separat zur parallelen Ausführung von Mikroanweisungen den Programmbus 200 und den Datenbus 204 zur Übermittlung einer Mikroanweisung an die Sequenzsteuereinheit 202, Dateneingabe und -ausgabe der Arithmetikeinheit 206 über den Datenbus 204, parallelen Erzeugung von 2-Eingangs/I-Ausgang-Datenadressen durch die Adreßerzeugungseinheit 203 und Zugriff der M0 207, M1 208 und des I/F 205 auf den externen Datenspeicher auf. Die DMA-Steuereinheit 209 führt einen DMA-Datentransfer über den DMA-Bus 210 zwischen den M0 207, M1 208 und der I/F 205 unabhängig von der internen Verarbeitung durch. Jede Ausführungseinheit arbeitet ähnlich der des herkömmlichen digitalen Signalprozessors auf Registerbasis. In diesem digitalen Signalprozessor schließt die Anweisungsausführungspipeline Dateneingangs- und -ausgangsstufen ein, da die meisten Anweisungen (Instruktionen bzw. Befehle) keine verzögerte Bearbeitung benötigen. Dementsprechend kann beim Implementieren der Addition beispielsweise durch die Arithmetikeinheit 206 die Eingabe und Ausgabe umfassende Additionsanweisung durch eine Mikroanweisung in einem Schritt ausgeführt werden. Folglich kann sogar in einem Programm mit verschiedenen kombinierten arithmetischen Operationen eine Mikroanweisung in einer einem Maschinenzyklus entsprechenden Zeit ausgeführt werden.
- Das Ergebnis der Ausführung einer Anweisung kann jedoch nach drei Anweisungsschritten entsprechend der Differenz in der Anzahl der Stufen zur Lesestufe der nächsten Anweisung verwendet werden. Dieser digitale Signalprozessor führt, um Verluste zu vermeiden, die meisten Operationen mit einem Ergebnis, welches sofort in kombinierten Operationen verwendet werden muß, durch eine Anweisung aus.
- Dementsprechend leiden die meisten Programme nicht unter Verlusten. Die Arithmetikeinheit 206 und die Adressenerzeugungseinheit 203 sind in Datenwortlänge und -format gleich und sind miteinander vollständig kompatibel.
- Daher kann bei Prozessen wie etwa beim Tabellenleseprozeß oder Lexikonleseprozeß das Ergebnis der Verarbeitung direkt in eine Datenspeicheradresse umgewandelt werden.
- Die Funktionen der Arithmetikeinheit 206 werden im nachfolgenden mit Bezug auf die Fig. 7 beschrieben. Der B-SFT 123, die ALU 224 und der MPY 225 sind in der Lage, in einem Maschinenzyklus zu arbeiten, und arbeiten in einer Ausführungsstufe zwischen Anweisungsausführungspipelinestufen. In der nächsten Stufe, d.h. einer Schreib-/Akkumulationsstufe, ist der N-SFT 230 in der Lage, Digit-Anpassung vorzunehmen, und liefert das Ergebnis 231 dem Z-Bus 222 zum Schreiben des Ergebnisses in den Datenspeicher; die AU 233 ist in der Lage, die Inhalte 232 des Wr 235 zu akkumulieren oder zu runden, um das Ergebnis 234 der Akkumulation oder der Rundung in das Wr 235 zu schreiben. Das DPR1 229 und das DPR2 228 sind Register, um die Ergebnisse in die nächste Stufe zu transferieren. Daher wird die kombinierte Operation in der folgenden Art und Weise ausgeführt.
- Produktsumme: MPY 225 -- > DPR -- > N-SFT 230 -- > AU 233 -- > Wr 235
- Absolute Differenzsumme: ALU 224 -- > MUX 227 -- > DPR 1
- 229 -- > N-SFT 230 -- > AU 233 -- > Wr 235
- Differenzquadratsumme: ALU 224 -- > DPR0 226 -- > MPY 225 -- > DPR2 228 -- > N-SFT 230 -- > AU 233 -- > Wr 235
- Die Differenzquadratsumme wird durch verzögerte Verarbeitung des DPR0 226 erhalten. Diese Anweisung wird jedoch in den meisten fällen kontinuierlich verwendet, und es sind daher der Anweisung zuzuordnende Probleme vernachlässigbar.
- Der digitale Signalprozessor führte die Rundung durch die folgende Prozedur aus. DPR1 229 Ausgang 24 Bits N-SFT 230 Ausgang 8-Bit Verschiebung nach rechts) Ubertrag 239 AU 233 Ausgang 234 Übertrag Addition
- Daher ist das höchste durch den N-SFT 230 herausgeschobene Datenbit ein Übertrag, und die AU führt eine Übertragsaddition aus, um die Daten zu runden, und daher ist das Ziel des Ergebnisses der Rundung auf das Wr 235 begrenzt.
- Dann prüft der Flag-Prüfschaltkreis 237 das Flag 236, welches das Ergebnis der Vergleichsoperation der ALU 224 in bezug auf einen durch eine Mikroanweisung spezifizierten Bedingungscode anzeigt und einen 1-Bit-flag zur Verfügung stellt, welcher anzeigt, daß die Bedingung erfüllt oder nicht erfüllt wurde. Durch den Flag-Prüfschaltkreis 237 gelieferte flags werden sequentiell in das tcsr 238 gesetzt. Beispielsweise kann der Selektionsprozeß bei Bestimmung des Maximalwertes und des Minimalwertes von zwei Eingangsdaten gespeichert werden. Die laterale Anordnung der Inhalte des tcsr 238 vom MSB bis zum LSB stimmt mit dem Indexcode bei der binären Baumsuche überein.
- Der Aufbau der internen Datenspeicher wird im folgenden mit Bezug auf Fig. 8 beschrieben. Die M0 207 und M1 208 sind '24 Bit x 512 Wort'-2-Port RAMs. Beim parallelen Zuführen zweier Eingangsdaten zur Arithmetikeinheit 206 werden die Ausgangssignale der jeweiligen Leseanschlüsse der M0 207 und M1 208 auf dem X-Bus 220 bzw. dem Y-Bus 221 über die Selektoren 240 und 241 zur Verfügung gestellt. Zu diesem Zeitpunkt werden eine S0-Adresse 245 und eine S1-Adresse 246 dem M0 207 bzw. dem M1 208 zur Verfügung gestellt. Wenn sowohl die Quelle als auch das Ziel Datenspeicher auf Vektoradditionsbasis gemäß + -- > sind, werden darüber hinaus Daten vom Z-Bus 222 über den MUX 242 oder den MUX 243 dem Lese-/Schreibanschluß der M0 207 oder M1 208 zur Verfügung gestellt. Es tritt daher in der internen Verarbeitung keine Buskonkurrenz auf.
- Der Aufbau der Adressenerzeugungseinheit 203 wird im nachfolgenden mit Bezug auf Fig. 9 beschrieben. Die Adressenerzeugungseinheit 203 umfaßt die drei AGUs 256, nämlich den S0-Adressenerzeuger (AGU0) 256, den S1-Adressenerzeuger (AGU1) 256 und den D-Adressenerzeuger (AGU2) 256. Jeder AGU 256 hat das '24 Bit x 4 Wort'-AR 251 und das '12 Bit x 4 Wort'-IXR 252. Der Adressenaddierer 255 addiert zur zweidimensionalen Adressenerzeugung drei Terme der Verschiebung 250, des AR 251 und des IXR 252.
- Obwohl die AGU 256 in der Dekodierstufe arbeitet, besteht eine Stufendifferenz entsprechend den beiden Stufen zwischen der Dekodierstufe und der Schreib-/Akkumulationsstufe und daher wird die D- Adresse 247 durch die AGU 2 zur Verfügung gestellt, nachdem sie durch die DAPR3 257 und die DAPR4 258 um zwei Maschinenzyklen verzögert wurde. Die ARs 251 und die IXRs 252 sind mit dem X-Bus 220 verbunden. Das Datenformat der Adreßerzeugungseinheit 203 ist mit dem der Arithmetikeinheit 206 kompatibel. Dementsprechend können zum Beispiel beim Tabellenlesen Daten direkt von dem Wr 235 durch den X- Bus 220 zum AR 251 transferiert werden und können, ohne die S0- Adresse 245 oder die S1-ADresse 256 zu wechseln, zur Verfügung gestellt werden.
- Die Anweisungsausführungspipeline des digitalen Signalprozessors wird nun mit Bezug auf die Fig. 10 beschrieben. Die Anweisungsausführungspipeline umfaßt die folgenden fünf Stufen für eine Anweisung:
- Ausgang des Programmzählers und Lesen einer 1-Wort-Mikroanweisung (48 Bit)
- Dekodierung 262 der Mikroanweisung und Adressenerneuerung 263
- Lesen von Quellendaten aus Datenspeichern oder Registern durch den X-Bus 220 und den Y-Bus 221
- Ausführung durch die B-SFT 223, die ALU 224 und die MPY 225
- Normalisierung 266 durch die N-SFT 230 und Runden/Akkumulation durch die AU 233 oder Schreiben von Daten in den Datenspeicher
- In der Schreib-/Akkumulationsstufe (5) wird der Ausgangswert der AU 233 nur in dem Wr 235 gespeichert und der Z-Bus 222 und die AU 233 befinden sich in ausschließlicher Beziehung, bei der die AU 233 nicht verwendet wird, wenn der Z-Bus verwendet wird, und daher ist das Timing 267 des Datenschreibens durch die AU 233 das gleiche wie das des Datenschreibens über den Z-Bus 222.
- Da die Anweisungen gemäß vorstehender Sequenz ausgeführt werden, ist die Berücksichtigung der komplexen Verzögerung beim Herstellen eines Programms praktisch unnötig, und daher kann ein effizientes Mikroprogramm unter Verwendung eines Compilers für höhere Sprachen hergestellt werden.
- Fig. 11 zeigt Beispiele von durch den digitalen Signalprozessor der vorliegenden Erfindung verwendeten Mikroanweisungssätzen. Alle Mikroanweisungssätze sind horizontale 1-Wort-Anweisungssätze mit einer Wortlänge von 48 Bit. Der Anweisungssatz wird nicht für die parallele Spezifikation von internen Quellen verwendet, welche in der Lage sind, eine simultane Verarbeitung durchzuführen. Die Kombination der Quellenverarbeitung in jeder Stufe wird durch einen Funktionscode gemäß der Anweisung spezifiziert. Somit wird die Mikroanweisungsbeschreibung vereinfacht.
- Die Anweisungssätze werden grob unterteilt in Laden 270, Verzweigen 271, eine 1-Quellenoperation 272 und eine 2-Quellenoperation 273. Ein Quellcode 274 zur Steuerung des Quellenziels, ein Zielcode 275, ein Quellen-0-Code 276 und ein Quellen-1-Code 277 werden entsprechend dem Funktionscode gesetzt. Wenn die Datenspeicher die objektgesteuerten Elemente darstellen, stellen diese Codes Adressiercodes zum Spezifizieren der entsprechenden AGUs 256 der Adressenerzeugungseinheit 203 dar. Die AGUs werden durch Quellcodes identifiziert. Der Adressiermodus kann gewechselt werden, und das Setzen von Normalisierungsverschiebewerten kann für jede Operationsanweisung unter Verwendung des Anweisungssatzes verändert werden, so daß ein komplexer Signalverarbeitungsalgorithmus mit kleinstem Verlust programmiert werden kann.
- Beispielsweise kann bei Ausführung der binären Baumsuche gemäß Fig. 4 die Operation des digitalen Signalprozessors zur Berechnung einer Approximation wie folgt programmiert werden:
- rep N
- {subaa sc0, sc1, wrx} Wiederhole N-mal
- sc0: Eingangsvektor-Adressensteuerung
- scl: Referenzvektor-Adressensteuerung
- Wrx: Arbeitsregister=Spezifikation
- Diese Operation benötigt N+1 Maschinenzyklen. Die Approximation eines Referenzvektors der Richtung 0 und eines Referenzvektors der Richtung 1 kann durch zweimaliges Wiederholen des Programms bestimmt werden. Ein Prozeß zur Bestimmung eines Referenzvektors mit hoher Approximation und zur Ermittlung der Knotenanzahl der nächsten Stufe kann wie folgt programmiert werden: Vergleiche und speichere das Ergebnis in tcsr 138 Initialisiere Adresszeiger der sc0 Berechne Referenzvektoradresse für den nächsten Knoten (2n+1: wr2 wird zuvor auf 1 gesetzt)
- Es sind daher 2N+9 Maschinenzyklen für eine Stufe notwendig. Offensichtlich stimmt die Anzahl der Maschinenzyklen praktisch mit der idealen Anzahl von Maschinenzyklen überein, da der Prozeß hocheffizient und das Programm einfach ist.
- Obwohl das obige Beispiel unter der Voraussetzung beschrieben wurde, daß die Wortlänge eine 24-Bit-Adressenlänge von 16 MW (24 Bit) aufweist, können Wortlänge und Datenformat andere als die hier beschriebenen sein.
- Obwohl diese Ausführungsform mit Bezug auf die binäre Suche beschrieben wurde, kann der gleiche Effekt bei anderen Signalverarbeitungsalgorithmen erwartet werden.
- Natürlich beschränken die Details der obigen Ausführungsform nicht den Inhalt der vorliegenden beanspruchten Erfindung.
- Wie aus der obigen Beschreibung ersichtlich, ist der digitale Signalprozessor gemäß der vorliegenden, in Anspruch 1 definierten Erfindung höchst anpassungsfähig, flexibel und in der Lage, bei einer hohen Verarbeitungsgeschwindigkeit zu arbeiten.
Claims (13)
1. Digitaler Signalprozessor mit:
einer Anweisungsabrufeinheit zum Lesen einer Mikroanweisung während
jedes Maschinenzyklusses mittels eines Programmbusses (200) aus
einem Anweisungsspeicher (201), welcher vorher Mikroanweisungen
gespeichert hat, die verschiedene interne Operationen spezifizieren;
einer Ausführungseinheit (206) zum Verarbeiten zweier Eingangsdaten;
einer Vielzahl von Arbeitsregistern (235), die in der Lage sind, die
Ergebnisse der Operation der Ausführungseinheit (206) zu speichern;
einer Vielzahl von Dual-Port-Speichern (207, 208) mit zwei
Schnittstellen zum individuellen Speichern der beiden Daten oder zum
Speichern der beiden Daten Block für Block für die Operation der
Ausführungseinheit (206) und der Ergebnisse der Operation, wobei jeder
einen Leseanschluß und einen Lese-/Schreib-Anschluß aufweist und in
der Lage ist, gleichzeitig Daten aus beiden Anschlüssen zu lesen,
oder Daten über beide Anschlüsse zu schreiben;
einer Direktspeichertransfersteuereinheit (209) und
einer Adressenerzeugungseinheit mit einer Vielzahl von
Adressenregistern (251), die in der Lage ist, parallel Lese- und Schreibadressen
für die Vielzahl der Dual-Port-Speicher (207, 208) zu erzeugen;
gekennzeichnet durch
peine Sequenzsteuereinheit (202) zum Steuern der Ausführung der
Mikroanweisungen während jedes Maschinenzyklusses durch Trennen der
Schritte der Ausführungsprozedur der Mikroanweisung in einer
fünfstufigen Pipeline mit einer Anweisungsabrufstufe, einer
Anweisungsdekodierstufe, einer Datenlesestufe, einer Ausführungsstufe und
einer Schreib-/Akkumulationsstufe, um ein Wort der Mikroanweisung in
einem Maschinenzyklus auszuführen;
eine Vielzahl von internen Datenbussen (204) zum parallelen Transfer
der beiden Eingangsdaten zur Ausführungseinheit (206) zur binomialen
Operation in-der Datenlesestufe der fünfstufigen Pipeline und zum
Transferieren der Ausgangsdaten der Ausführungseinheit (206) in die
Datenschreibe-/Akkumulationsstufe der fünfstufigen Pipeline;
wobei die Ausführungseinheit (206) die beiden Eingangsdaten, welche
durch die internen Datenbusse übertragen wurden, mittels einer
einzigen Operation oder kombinierten Operationen sowohl in der
Ausführungsstufe als auch in der Datenschreibe-/Akkumulationsstufe der
fünfstufigen Pipeline verarbeitet;
wobei die Arbeitsregister (235) auch mit dem internen Datenbus
verbunden sind, um die Daten zu den internen Datenbussen (204) zu
übertragen;
eine Ausgangssteuereinheit zum Selektieren einer der internen
Datenbusse oder eines der Arbeitsregister, an das der Ausgang der
Ausführungseinheit anzuschließen ist;
eine Lesesteuereinheit zum Selektieren eines oder mehreren
Leseanschlüssen der Vielzahl von Dual-Port-Speichern (207, 208), um die
Eingangsdaten aus den Dual-Port-Speichern (207, 208) zu lesen und
die Eingangsdaten den internen Datenbussen zur Verfügung zu stellen;
eine externe Datenspeicherschnittstelleneinheit (205) zum
Selektieren eines oder mehrerer interner Datenbusse (204), um Daten aus
einem externen Datenspeicher auszulesen, der an die externe
Datenspeicherschnittstelleneinheit
(205) angeschlossen ist, und zum
Schreiben von Daten in den externen Datenspeicher, die auf einem
oder mehreren internen Datenbussen zur Verfügung stehen;
einen Bus (210) zum direkten Speicherzugriff, welcher von den
internen Datenbussen (211) getrennt ist, zum selektiven Verbinden einer
oder mehrerer Lese-/Schreibschnittstellen der Vielzahl von
Dual-Port-Speichern (207, 208) mit der externen
Datenspeicherschnittstelleneinheit (205);
wobei die direkte Speichertransfersteuereinheit (209) die Block-für-
Block-Daten über den direkten Speichertransferbus (210) zwischen der
externen Datenspeicherschnittstelle (205) und den
Dual-Port-Speichern (207, 208) unabhängig von der internen Operation der
Sequenzsteuereinheit (202) überträgt;
eine externe Speicherentscheidungseinheit, die die Konkurrenz der
internen Datenbusse (204) und des direkten Speichertransferbusses
(210) beim Verbinden mit der externen Speicherschnittstelleneinheit
(205) steuert;
wobei die Adressenerzeugungseinheit (203) eine Vielzahl von
Adressengeneratoren (256) umfaßt, wobei jeder die Vielzahl von
Adressregistern (251) und eine Vielzahl von Indexregistern (252) aufweist,
die an den Dateneingangsbussen (204) zum gegenseitigen Datentransfer
angeschlossen und in der Lage sind, parallel Lese- und
Schreibadressen für den Dual-Port-Speicher (207, 208) oder den externen Speicher
mindestens aus den zwei Eingangsdaten und einem Ausgangswert der
Ausführungseinheit (206) in der Dekodierstufe der fünfstufigen
Pipeline zu erzeugen;
eine Adressenselektiereinheit zum Selektieren des
Dual-Port-Speichers (207, 208) oder der externen Speicherschnittstelleneinheit
(205) entsprechend den Lese- und Schreibadressen, die durch die
Adresserzeugungseinheit (203) jeweils synchronisiert mit den
Leseund Schreibstufen der fünfstufigen Pipeline zur Verfügung gestellt
wurden; und
eine Direktspeicherzugriffsadressenerzeugungseinheit mit einer
Vielzahl von Transferadressenkontrollregistern zum Vorgeben von Daten
über die internen Datenbusse (204) um den Datentransferbereich zu
steuern, und zum gleichzeitigen Erzeugen der Adresse für den
Dual-Port-Speicher zum direkten Speicherzugriff und einer Adresse für die
externe Speicherschnittstelleneinheit (205).
2. Digitaler Signalprozessor nach Anspruch 1,
in dem die Ausführungseinheit (206) und die
Adressenerzeugungseinheit (203) kompatibel im Datenformat sind, wodurch die in der
Ausführungseinheit (206) erzeugten Daten als Adressendaten verwendet
werden.
3. Digitaler Signalprozessor nach Anspruch 1,
in dem die Ausführungseinheit (206) enthält:
einen Barrel-Schieber (223), welcher in der Lage ist, Daten von den
Dateneingangsbussen (204) zu erhalten und die Eingangsdaten um eine
willkürliche Anzahl von Bits innerhalb eines Maschinenzyklusses zu
verschieben oder zu rotieren und die verschobenen oder rotierten
Daten und andere Eingangsdaten mittels einer logischen Operation
kombiniert zu verarbeiten;
eine arithmetische Logikeinheit (224), welche in der Lage ist, die
Eingangsdaten mindestens durch Addition, Subtraktion und absolute
Differenzialoperation innerhalb eines Maschinenzyklusses zu
verarbeiten;
einen Multiplizierer (225), welcher innerhalb eines
Maschinenzyklusses in der Lage ist, die beiden Eingangsdaten zu multiplizieren oder
-
39
-einen Eingangswert zu quadrieren;
ein temporäres Register (228, 229), welches eines der
Ausgangssignale der arithmetischen Logikeinheit (224), des Multiplizieres (225)
und des Barrel-Schiebers (223) selektiert und temporär hält;
einen normierten Barrel-Schieber (230), welcher die durch das
temporäre Register (228, 229) zur Verfügung gestellten Ausgangsdaten
während längstens eines halben Maschinenzyklusses zum Anpassen des
Datenbereichs um eine vorbestimmte Anzahl von Bits verschiebt;
einen Addierer (233), welcher den Ausgang (231) des normierten
Barrel-Schiebers (230) und den Inhalt eines selektierten
Ausgangssignals des Arbeitsregisters (228, 229) in längstens dem halben
Maschinenzyklus akkumuliert; und
eine Datenausgangseinheit, welche das Ausgangssignal des normierten
Barrel-Schiebers (230) zu den Datenausgangsbussen während längstens
eines halben Maschinenzyklusses überträgt, wenn der Addierer nicht
verwendet wird; und
wobei der Zylinderschieber (223), die arithmetische Logikeinheit
(224) oder der Multiplizierer (225) in der Ausführungsstufe der
fünfstufigen Pipeline für arithmetische Logikoperationen oder
absolute Differenzialoperationen betrieben wird, wobei die Differenz,
die durch die arithmetische Logikeinheit (224) in der
Ausführungsstufe gewonnen wird, durch ein temporäres Register (226) gehalten
wird, die Differenz durch den Multiplizierer (225) quadriert wird,
um das Quadrat der Differenz in einem Maschinenzyklus zu erhalten,
der Addierer 233 zur Akkumulation verwendet wird, wenn die
Akkumulation ausgeführt wird, nachdem die Bereichsanpassung des Ergebnisses
der Ausführungsstufe durch den normierten Barrel-Schieber (230) in
der Datenschreibe-/Akkumulationsstufe der fünfstufigen Pipeline
durchgeführt worden ist, oder das Quadrat der Differenz direkt auf
den Datenausgangsbussen zur Verfügung gestellt wird, wenn keine
Bereichsanpassung durch den normierten Barrel-Schieber (230)
durchgeführt worden ist, um verschiedene arithmetische und logische
Operationen oder kombinierte Operationen einschließlich denen zum
Erhalten der Produktsumme, der Summe der absoluten Differenzen, der
Quadratsumme der Differenzen in einer einem Maschinenzyklus
entsprechenden Zeit durch Pipelinetechnik zu vervollständigen.
4. Digitaler Signalprozessor nach Anspruch 1,
wobei jeder der Adressengeneratoren (256) der
Adressenerzeugungseinheit (203) eine Adresse über den internen Datenbus (204) im
Adressenregister (251) speichert, einen Indexwert über den internen
Datenbus (204) im Indexregister (252) speichert, den
Indexmodifizierungswert, eine durch eine Mikroanweisung spezifizierte Verschiebung
und den Inhalt des Adressenregisters (251) addiert, gleichzeitig den
Inhalt des Adressenregisters (251) durch Verwendung des Ergebnisses
der Addition auffrischt und das Ergebnis der Addition als eine
Datenspeicheradresse behandelt und eine zweidimensionale oder andere
Adressierung durch eine Kombination der Mikroanweisungen durch
sequentielles Zuweisen jedes Adressengenerators (256) zum
Adresserzeugungsmodus jeder Mikroanweisung durchführt.
5. Digitaler Signalprozessor nach Anspruch 1,
wobei die Direktspeicherzugriffssteuereinheit (209) und die
Direktspeichertransferadressenerzeugungseinheit sequentiell den
rechtwinkligen Abschnitt von Zeile k x Spalte l (k und l sind positive ganze
Zahlen) eines zweidimensionalen Datenadressenraumes mit m Zeilen und
n Spalten (m und n sind positive ganze Zahlen) zuordnet, um die
externe Datenspeicherschnittstelleneinheit (205) zu adressieren,
Adressen zu der Vielzahl der Dual-Port-Speicher (207, 208) in einer
aufsteigenden Reihenfolge von einer optionalen Startadresse
zuordnet, und eine der Vielzahl der Dual-Port-Speicher (207, 208) durch
das höchste Bit der Adresse oder einer Vielzahl von Bits der Adresse
zum zweidimensionalen Datentransfer zwischen den Dual-Port-Speichern
(207, 208) und dem externen Datenspeicher (205) selektiert, und eine
Transferrichtung und die Anzahl der zu transferierenden Daten durch
eine Mikroanweisung beim Starten des direkten Speichertransfers
spezifiziert werden, und die Direktspeicherzugriffssteuereinheit (209)
die Sequenzsteuereinheit (202) vom Ende des Datentransfers beim
Beenden des direkten Speichertransfers informiert, um gleichzeitig
Übertragungsdaten in einen rechtwinkligen Block aus k Zeilen x l
Spalten zwischen dem Dual-Port-Speicher (207, 208) und dem externen
Datenspeicher (205) und interne arithmetische Prozesse zu
implementieren.
6. Digitaler Signalprozessor nach Anspruch 1,
in dem die Sequenzsteuereinheit (202) bedingte
Verzweigungsoperationen implementiert, die mit einer Vielzahl von
Verzweigungsbedingungen auf einer Mikroanweisung arbeiten, indem eine Vielzahl von
Bedingungen in einem speziellen Register zuvor gespeichert wird,
Anweisungsspeicheradressen zuvor gespeichert werden, zu denen das
Programm verzweigt wird, wenn die Verzweigungsbedingungen in den
Registern entsprechend den Verzweigungsbedingungen angefunden werden,
die Vielzahl von Verzweigungsbedingungen parallel auf einer
Mikroanweisung getestet wird, das Programm in eine der
Anweisungsspeicheradressen verzweigt wird, die in dem speziellen Register entsprechend
den Verzweigungsbedingungen mit der höchsten Priorität unter den
aufgefundenen gespeichert worden sind, und das Programm zu der
Anweisungsspeicheradresse verzweigt, die in dem speziellen Register
entsprechend all den nicht aufgefundenen Verzweigungsbedingungen
gespeichert ist.
7. Digitaler Signalprozessor nach Anspruch 1,
in dem die Sequenzsteureinheit (202) einen Schleifenzähler und einen
Wiederholungszähler aufweist, die in der Lage sind, Anfangswerte aus
den internen Datenbussen zu erhalten und deren Inhalte zur Verfügung
zu stellen, wobei der Inhalt des Wiederholungszählers für jede
Ausführung der Mikroanweisung um 1 herabgezählt und die gleiche
Mikroanweisung
solange wiederholt ausgeführt wird, bis sich der Inhalt
des Wiederholungszählers auf 0 reduziert hat, wenn die Wiederholung
durch die erste Mikroanweisung der Wiederholungsoperation angewiesen
wird, der Inhalt des Schleifenzählers um 1 heruntergezählt wird,
wenn die Schleife durch eine Mikroanweisung angewiesen wird, das
Programm in eine Anweisungsspeicheradresse verzweigt wird, die durch
die Mikroanweisung spezifiziert ist, wenn der Inhalt des
Schleifenzählers nach Herabzählen nicht 0 ist, und die Verzweigung zum
Beenden der Schleifenoperation nicht vollständig ist, wenn der Inhalt
des Schleifenzählers nach dem Herabzählen 0 ist, um eine einzelne
Mikroanweisung oder eine Vielzahl von Mikroanweisungen durch einen
vorbestimmten Zyklus zu wiederholen.
8. Digitaler Signalprozessor nach Anspruch 1,
in dem die externe Datenspeicherschnittstelleneinheit den externen
Datenspeicher (205) in zwei Teile teilt, indem eine Adresse
verwendet wird, die vorher durch eine Mikroanweisung als eine Grenze
spezifiert worden ist, den externen Datenspeicher als ein
Hochgeschwindigkeitsspeicher behandelt, der Lese-/Schreiboperationen innerhalb
eines Maschinenzyklusses beim Adressieren einer der beiden Teile des
externen Datenspeichers erzielt, und den externen Datenspeicher
(205) als einen Niedriggeschwindigkeitsspeicher behandelt, der so
lange auf Stand-by steht, bis ein externes
Lese-/Schreibabbruchsignal beim Adressieren des anderen Teils des externen Datenspeichers
erfaßt wird.
9. Digitaler Signalprozessor nach Anspruch 1,
in dem der Anweisungsspeicher (201) teilweise oder ganz
wiederaufladbar ist, funktionalen Prozessen entsprechende Mikroprogramme
durch eine externe Vorrichtung in den wiederaufladbaren
Anweisungsspeicher geschrieben werden, um den digitalen Signalprozeß in die
Lage zu versetzen, komplexe und diversifizierte Prozesse zu
implementieren,
und automatisch Mikroprogramme durch einen externen
Speicher zur Verfügung gestellt werden, wenn die Mikroprogramme nicht in
den Anweisungsspeicher (201) geschrieben sind.
10. Digitaler Signalprozessor nach Anspruch 1,
in dem die Mikroanweisung ein Mikroanweisungssatz ist, der aus einem
Funktionscode besteht, welcher einheitlich eine Operation in jeder
Stufe der fünfstufigen Pipeline entsprechend der Art der Operation
spezifiziert, einem Eingangsanweisungscode und einem
Ausgangsanweisungscode, welche individuell den Adressenerzeugungsmodus des
Adressengenerators (256) der Adresserzeugungseinheit (203) für jede
Mikroanweisung entsprechend mindestens einem
2-Eingang-/1-Ausgang- oder einem 1-Eingang-/1-Ausgang-Datenspeicher, einem
ressourcenspezifizierenden Code, welcher den Objektdatenspeicher oder das
Register der Dateneingänge/-Ausgänge spezifiziert, der Anzahl der
Verschiebebits des normierten Barrel-Schiebers (230) der
Ausführungseinheit (206), einem Testbedingungscode, welcher die Art der
Operation bestimmt, einem direkter Datenwert und einem
Haltebedingungscode anweisen.
11. Digitaler Signalprozessor nach Anspruch 1,
in dem die externe Datenspeicheradresse willkürlich eine Adresse für
die Kommunikation zwischen den Prozessoren zuweist, wobei die
Adresse einem externen First-In/First-Out-Speicher oder externen
Dual-Port-Speicher für die Kommunikation entspricht, um dieselben oder
andere Prozessoren miteinander zu verbinden, um eine Vielzahl von
Prozessoren in die Lage zu versetzen, komplexe Prozesse bei einer
hohen Verarbeitungsgeschwindigkeit zu implementieren.
12. Digitaler Signalprozessor nach Anspruch 1 oder 3,
in dem das signifikanteste Bit von Datenbits von dem am wenigsten
signifikanten Bit, das durch Verschiebung abgeschnitten wird, beim
Anpassen der Zahl von Bits durch Verschieben in Richtung des am
wenigsten signifikanten Bits durch den normierten Barrel-Schieber als
ein Übertragbit verwendet wird, wobei der Addierer einen
Operationsmodus aufweist, in dem eine Datenrundungsoperation oder eine
Datenrundungsakkumulation durch Addition mit dem Übertragbit unter
Verwendung der Inhalte der Arbeitsregister oder Nulldaten ausgeführt
werden und der Operationsmode durch direktes Kontrollieren des
Addierers durch Setzen eines Modus oder einer Mikroanweisung
zugeordnet wird.
13. Digitaler Signalprozessor nach Anspruch 1 oder 3,
in dem die arithmetische Logikeinheit (224) der Ausführungseinheit
(206) entscheidet, ob eine Testbedingung (z.B. eine Bedingung, daß
zwei Eingangsdaten gleich sind) zum Testen des Ergebnisses eines
durch eine Mikroanweisung spezifizierten Vergleiches beim
Vergleichen der Größen von zwei Eingangsdaten oder Testen eines speziellen
Bits in einem Eingangswert erfüllt ist oder nicht, und sequentiell
die Ergebnisse der Entscheidung in einer vertikalen Richtung des
speziellen Schieberegisters (238) für jede vergleichende
Mikroanweisung Bit für Bit speichert, den horizontalen Inhalt des
Schieberegisters von den internen Datenbussen ausl iest und die Vielzahl der
Entscheidungsergebnisse, die durch eine vielfache Wiederholung der
Vergleichsmikroanweisungen gewonnen wurden, als einen Suchablaufcode
im Baumsuchverfahren oder zur kombinierten Verzweigungsoperation
basierend auf einer Vielzahl von Bedingungen, verwendet.
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP14087287A JPS63304344A (ja) | 1987-06-05 | 1987-06-05 | マルチポ−トメモリ回路 |
JP18685887A JPS6429932A (en) | 1987-07-27 | 1987-07-27 | Address control system for signal processing |
JP19700987A JPS6441028A (en) | 1987-08-06 | 1987-08-06 | Interruption processing system |
JP62273763A JPH0630056B2 (ja) | 1987-10-29 | 1987-10-29 | 信号処理装置 |
JP27481087A JPH01116730A (ja) | 1987-10-30 | 1987-10-30 | デイジタル信号処理プロセツサ |
JP62296612A JPH0766328B2 (ja) | 1987-11-25 | 1987-11-25 | プロセッサの信号処理方式 |
JP62296611A JPH0766327B2 (ja) | 1987-11-25 | 1987-11-25 | 信号処理方法及び装置 |
JP31655387A JPH01156825A (ja) | 1987-12-15 | 1987-12-15 | 信号処理用アドレス生成方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3851858D1 DE3851858D1 (de) | 1994-11-24 |
DE3851858T2 true DE3851858T2 (de) | 1995-05-24 |
Family
ID=27573171
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3856175T Expired - Fee Related DE3856175T2 (de) | 1987-06-05 | 1988-06-01 | Digitales Signalverarbeitungssystem in dem ein Prozessor unter Kontrolle eines Hosts auf zwei Befehlsspeicher zugreift |
DE3856219T Expired - Fee Related DE3856219T2 (de) | 1987-06-05 | 1988-06-01 | Digitaler Signalprozessor mit Adress-Generator für den Zugriff von Daten aus einem Zweidirektionalen Bereich eines Datenspeichers |
DE3856220T Expired - Fee Related DE3856220T2 (de) | 1987-06-05 | 1988-06-01 | Digitaler Signalprozessor der bedingte Mehrpunkt-Sprungbefehle im Pipelinemodus bearbeitet |
DE3851858T Expired - Fee Related DE3851858T2 (de) | 1987-06-05 | 1988-06-01 | Digitaler Signalprozessor. |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3856175T Expired - Fee Related DE3856175T2 (de) | 1987-06-05 | 1988-06-01 | Digitales Signalverarbeitungssystem in dem ein Prozessor unter Kontrolle eines Hosts auf zwei Befehlsspeicher zugreift |
DE3856219T Expired - Fee Related DE3856219T2 (de) | 1987-06-05 | 1988-06-01 | Digitaler Signalprozessor mit Adress-Generator für den Zugriff von Daten aus einem Zweidirektionalen Bereich eines Datenspeichers |
DE3856220T Expired - Fee Related DE3856220T2 (de) | 1987-06-05 | 1988-06-01 | Digitaler Signalprozessor der bedingte Mehrpunkt-Sprungbefehle im Pipelinemodus bearbeitet |
Country Status (4)
Country | Link |
---|---|
US (1) | US5045993A (de) |
EP (6) | EP0554917B1 (de) |
CA (1) | CA1288169C (de) |
DE (4) | DE3856175T2 (de) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1311063C (en) * | 1988-12-16 | 1992-12-01 | Tokumichi Murakami | Digital signal processor |
JPH0769791B2 (ja) * | 1988-12-21 | 1995-07-31 | 三菱電機株式会社 | マイクロプロセッサ |
JPH0740241B2 (ja) * | 1989-01-17 | 1995-05-01 | 富士通株式会社 | リクエストキャンセル方式 |
US5237670A (en) * | 1989-01-30 | 1993-08-17 | Alantec, Inc. | Method and apparatus for data transfer between source and destination modules |
US5150471A (en) * | 1989-04-20 | 1992-09-22 | Ncr Corporation | Method and apparatus for offset register address accessing |
US5175863A (en) * | 1989-10-23 | 1992-12-29 | International Business Machines Corporation | Signal data processing system having independently, simultaneously operable alu and macu |
EP0442041A3 (en) * | 1990-01-18 | 1991-09-04 | National Semiconductor Corporation | Integrated digital signal processor/general purpose cpu with shared internal memory |
JPH0444151A (ja) * | 1990-06-11 | 1992-02-13 | Omron Corp | プロセッサ |
JPH0470946A (ja) * | 1990-07-04 | 1992-03-05 | Mitsubishi Electric Corp | Dmaコントローラを内蔵した処理装置 |
JP3194193B2 (ja) * | 1990-10-31 | 2001-07-30 | カシオ計算機株式会社 | 信号処理装置 |
RU1804645C (ru) * | 1991-03-27 | 1993-03-23 | Институт Точной Механики И Вычислительной Техники Им.С.А.Лебедева | Центральный процессор |
US7197623B1 (en) | 1991-06-27 | 2007-03-27 | Texas Instruments Incorporated | Multiple processor cellular radio |
FR2678400B1 (fr) * | 1991-06-27 | 1995-08-04 | Texas Instruments France | Processeur de protocole destine a l'execution d'un ensemble d'instructions en un nombre reduit d'operation. |
JP3201786B2 (ja) * | 1991-07-18 | 2001-08-27 | アジレント・テクノロジー株式会社 | ディジタル信号処理システムの制御方法 |
JP3172214B2 (ja) * | 1991-09-30 | 2001-06-04 | 富士通株式会社 | 状態モード設定方式 |
JP2906792B2 (ja) * | 1991-11-15 | 1999-06-21 | 日本電気株式会社 | ディジタルプロセッサ及びその制御方法 |
EP0545581B1 (de) * | 1991-12-06 | 1999-04-21 | National Semiconductor Corporation | Integriertes Datenverarbeitungssystem mit CPU-Kern und unabhängigem parallelen, digitalen Signalprozessormodul |
US6000026A (en) * | 1992-06-22 | 1999-12-07 | Texas Instrument Incorporated | Multiple processor apparatus having a protocol processor intended for the execution of a collection of instructions in a reduced number of operations |
DE69315630T2 (de) * | 1992-07-23 | 1998-07-16 | Rockwell International Corp | Datenzugriff in einem RISC-Digitalsignalprozessor |
US5481489A (en) * | 1992-08-31 | 1996-01-02 | Fujitsu Limited | Method of and apparatus for discriminating NaN |
US5717908A (en) * | 1993-02-25 | 1998-02-10 | Intel Corporation | Pattern recognition system using a four address arithmetic logic unit |
US5825921A (en) * | 1993-03-19 | 1998-10-20 | Intel Corporation | Memory transfer apparatus and method useful within a pattern recognition system |
FR2708359A1 (fr) * | 1993-06-30 | 1995-02-03 | Philips Electronics Nv | Procédé pour exploiter un processeur numérique de signal et dispositif mettant en Óoeuvre le procédé. |
ATE185204T1 (de) * | 1993-08-09 | 1999-10-15 | Siemens Ag | Signalverarbeitungseinrichtung |
JP3452655B2 (ja) * | 1993-09-27 | 2003-09-29 | 株式会社日立製作所 | ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法 |
US5778416A (en) * | 1993-12-20 | 1998-07-07 | Motorola, Inc. | Parallel process address generator and method |
US5590356A (en) * | 1994-08-23 | 1996-12-31 | Massachusetts Institute Of Technology | Mesh parallel computer architecture apparatus and associated methods |
US5835730A (en) * | 1996-07-31 | 1998-11-10 | General Instrument Corporation Of Delaware | MPEG packet header compression for television modems |
WO1998006040A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems, Inc. | Architectural support for software pipelining of nested loops |
US5958048A (en) * | 1996-08-07 | 1999-09-28 | Elbrus International Ltd. | Architectural support for software pipelining of nested loops |
WO1998006038A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems, Inc. | Architectural support for software pipelining of loops |
WO1998006041A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems, Inc. | Array prefetch apparatus and method |
WO1998006039A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems, Inc. | Disambiguation memory circuit and operating method |
WO1998006042A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems, Inc. | Wide instruction unpack method and apparatus |
US5880981A (en) * | 1996-08-12 | 1999-03-09 | Hitachi America, Ltd. | Method and apparatus for reducing the power consumption in a programmable digital signal processor |
US6332152B1 (en) * | 1997-12-02 | 2001-12-18 | Matsushita Electric Industrial Co., Ltd. | Arithmetic unit and data processing unit |
TW380245B (en) * | 1998-05-18 | 2000-01-21 | Winbond Elelctronics Corp | Speech synthesizer and speech synthesis method |
US7234100B1 (en) * | 2000-09-28 | 2007-06-19 | Intel Corporation | Decoder for trellis-based channel encoding |
US6662296B1 (en) * | 2000-10-02 | 2003-12-09 | International Business Machines Corporation | Method and system for testing millicode branch points |
JP2002215606A (ja) * | 2001-01-24 | 2002-08-02 | Mitsubishi Electric Corp | データ処理装置 |
US20020184566A1 (en) | 2001-06-01 | 2002-12-05 | Michael Catherwood | Register pointer trap |
US20030061464A1 (en) * | 2001-06-01 | 2003-03-27 | Catherwood Michael I. | Digital signal controller instruction set and architecture |
US7167973B2 (en) * | 2001-11-15 | 2007-01-23 | Broadcom Corporation | Method and system for performing multi-tests in processors using results to set a register and indexing based on the register |
JP2005149297A (ja) * | 2003-11-18 | 2005-06-09 | Renesas Technology Corp | プロセッサおよびそのアセンブラ |
JP4908017B2 (ja) * | 2006-02-28 | 2012-04-04 | 富士通株式会社 | Dmaデータ転送装置及びdmaデータ転送方法 |
US7953958B2 (en) * | 2006-09-29 | 2011-05-31 | Mediatek Inc. | Architecture for joint detection hardware accelerator |
US20090129486A1 (en) * | 2007-11-15 | 2009-05-21 | Sequel Technologies, Llc. | Systems and methods for providing security communication procesess in a security system |
GB2500707B (en) * | 2012-03-30 | 2014-09-17 | Cognovo Ltd | Multiprocessor system, apparatus and methods |
US20150268962A1 (en) * | 2014-03-24 | 2015-09-24 | GoofyFoot Labs | Asynchronous Circuit Design |
US9817791B2 (en) | 2015-04-04 | 2017-11-14 | Texas Instruments Incorporated | Low energy accelerator processor architecture with short parallel instruction word |
US11847427B2 (en) | 2015-04-04 | 2023-12-19 | Texas Instruments Incorporated | Load store circuit with dedicated single or dual bit shift circuit and opcodes for low power accelerator processor |
US10401412B2 (en) | 2016-12-16 | 2019-09-03 | Texas Instruments Incorporated | Line fault signature analysis |
US11010953B2 (en) * | 2017-04-21 | 2021-05-18 | Intel Corporation | Dedicated fixed point blending for energy efficiency |
CN109714056B (zh) * | 2019-01-17 | 2022-10-28 | 上海双微导航技术有限公司 | 一种用于兼容多款ad采集的方法 |
CN110737618B (zh) * | 2019-10-23 | 2021-03-16 | 盛科网络(苏州)有限公司 | 内嵌处理器进行快速数据通信的方法、装置及存储介质 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3570006A (en) * | 1968-01-02 | 1971-03-09 | Honeywell Inc | Multiple branch technique |
US3875391A (en) * | 1973-11-02 | 1975-04-01 | Raytheon Co | Pipeline signal processor |
US4025771A (en) * | 1974-03-25 | 1977-05-24 | Hughes Aircraft Company | Pipe line high speed signal processor |
US4090250A (en) * | 1976-09-30 | 1978-05-16 | Raytheon Company | Digital signal processor |
DE2710671A1 (de) * | 1977-03-11 | 1978-09-14 | Standard Elektrik Lorenz Ag | Schaltungsanordnung fuer einen mikroprozessor zur steuerung des datenspeicherzugriffs |
US4240139A (en) * | 1977-09-22 | 1980-12-16 | Tokyo Shibaura Denki Kabushiki Kaisha | Address generating system |
DE2846495C2 (de) * | 1977-10-25 | 1993-10-21 | Digital Equipment Corp | Zentraleinheit |
US4159519A (en) * | 1977-11-21 | 1979-06-26 | Burroughs Corporation | Template family interfacing structure for providing a sequence of microinstructions to a pipelined microprogrammable data processing system |
US4236206A (en) * | 1978-10-25 | 1980-11-25 | Digital Equipment Corporation | Central processor unit for executing instructions of variable length |
US4428046A (en) * | 1980-05-05 | 1984-01-24 | Ncr Corporation | Data processing system having a star coupler with contention circuitry |
US4493019A (en) * | 1980-05-06 | 1985-01-08 | Burroughs Corporation | Pipelined microprogrammed digital data processor employing microinstruction tasking |
JPS5750052A (en) * | 1980-09-09 | 1982-03-24 | Toshiba Corp | Address extension system |
US4439839A (en) * | 1981-08-24 | 1984-03-27 | International Telephone And Telegraph Corporation | Dynamically programmable processing element |
US4654783A (en) * | 1982-07-26 | 1987-03-31 | Data General Corporation | Unique process for loading a microcode control store in a data processing system |
JPS5979349A (ja) * | 1982-10-29 | 1984-05-08 | Toshiba Corp | 演算装置 |
US4613935A (en) * | 1983-02-02 | 1986-09-23 | Couleur John F | Method and apparatus for pipe line processing with a single arithmetic logic unit |
JPS59174948A (ja) * | 1983-03-25 | 1984-10-03 | Toshiba Corp | 情報処理装置 |
US4578750A (en) * | 1983-08-24 | 1986-03-25 | Amdahl Corporation | Code determination using half-adder based operand comparator |
US4785393A (en) * | 1984-07-09 | 1988-11-15 | Advanced Micro Devices, Inc. | 32-Bit extended function arithmetic-logic unit on a single chip |
-
1988
- 1988-06-01 DE DE3856175T patent/DE3856175T2/de not_active Expired - Fee Related
- 1988-06-01 EP EP93104194A patent/EP0554917B1/de not_active Expired - Lifetime
- 1988-06-01 DE DE3856219T patent/DE3856219T2/de not_active Expired - Fee Related
- 1988-06-01 DE DE3856220T patent/DE3856220T2/de not_active Expired - Fee Related
- 1988-06-01 EP EP19930104197 patent/EP0551933A3/en not_active Withdrawn
- 1988-06-01 EP EP93104195A patent/EP0551931B1/de not_active Expired - Lifetime
- 1988-06-01 EP EP93104196A patent/EP0551932B1/de not_active Expired - Lifetime
- 1988-06-01 EP EP88108755A patent/EP0293851B1/de not_active Expired - Lifetime
- 1988-06-01 DE DE3851858T patent/DE3851858T2/de not_active Expired - Fee Related
- 1988-06-01 EP EP93104238A patent/EP0551934A2/de not_active Withdrawn
- 1988-06-03 CA CA000568527A patent/CA1288169C/en not_active Expired - Fee Related
- 1988-06-03 US US07/201,208 patent/US5045993A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0293851A3 (en) | 1990-05-09 |
DE3856219D1 (de) | 1998-08-20 |
EP0554917A3 (de) | 1994-04-13 |
EP0551934A3 (de) | 1994-04-13 |
EP0551933A3 (en) | 1993-12-15 |
EP0293851A2 (de) | 1988-12-07 |
US5045993A (en) | 1991-09-03 |
EP0551932A3 (en) | 1993-12-15 |
EP0551932A2 (de) | 1993-07-21 |
EP0554917B1 (de) | 1998-05-06 |
DE3856175T2 (de) | 1998-12-17 |
EP0551932B1 (de) | 1998-07-15 |
EP0551931A3 (en) | 1993-12-15 |
DE3851858D1 (de) | 1994-11-24 |
DE3856220T2 (de) | 1999-01-07 |
EP0554917A2 (de) | 1993-08-11 |
DE3856175D1 (de) | 1998-06-10 |
CA1288169C (en) | 1991-08-27 |
EP0551934A2 (de) | 1993-07-21 |
EP0551931A2 (de) | 1993-07-21 |
EP0551933A2 (de) | 1993-07-21 |
EP0551931B1 (de) | 1998-07-15 |
DE3856219T2 (de) | 1998-11-19 |
EP0293851B1 (de) | 1994-10-19 |
DE3856220D1 (de) | 1998-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3851858T2 (de) | Digitaler Signalprozessor. | |
DE3885775T2 (de) | Digitaler Signalprozessor. | |
DE69031899T2 (de) | Befehlsmethode und Ausführungssystem | |
DE3689394T2 (de) | Informationsverarbeitungsanlage mit einem Allzweckprozessor und einem Sonderzweckprozessor. | |
DE69430838T2 (de) | Schaltung und Verfahren zur parallelen Verschiebung und Addition | |
DE3424962C2 (de) | ||
DE69131267T2 (de) | Datenverarbeitungssystem für Daten mit einfacher Präzision und mit doppelter Präzision | |
DE69824193T2 (de) | Datenverarbeitungseinheit mit der fähigkeit von digitaler signalverarbeitung | |
DE68927911T2 (de) | Datenverarbeitungssystem | |
DE2724125C2 (de) | ||
DE69227664T2 (de) | Hardwarekonfiguriertes Betriebssystemkern für einen Multitaskprozessor | |
DE3586195T2 (de) | Mikroprogrammfolgesteuergeraet. | |
DE69625256T2 (de) | Mikrorechner | |
DE68927966T2 (de) | Prozessor für Gleitkommazahlen und ganze Zahlen mit Dividier- und Quadratwurzelfunktionen | |
DE69129565T2 (de) | Hochleistungsfähiger Emulator mit Pipelining | |
DE19735348B4 (de) | Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben | |
DE69033444T2 (de) | Signalprozessor mit einer arithmetischen und logischen Einheit und einer Multiplizier-Akkumulatoreinheit, die gleichzeitig betrieben werden können | |
DE69032635T2 (de) | Verfahren und Vorrichtung zur Erkennung von Betriebsmittelkonflikten in einer Pipeline-Verarbeitungseinheit | |
DE3586603T2 (de) | Datenprozessor fuer interpretierende und kompilierte sprache. | |
DE3752017T2 (de) | Mikrorechner mit Zugriffsfähigkeit auf einen internen Speicher mit gewünschter variabler Zugriffszeit | |
DE2524046C2 (de) | Elektronische Datenverarbeitungsanlage | |
DE3689595T2 (de) | Datenverarbeitungssystem. | |
DE69826404T2 (de) | Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen | |
DE3210816A1 (de) | Datenverarbeitungssystem mit getrennten einrichtungen zur verarbeitung von skalar- und vektordaten | |
DE3933171A1 (de) | Einzelchip-prozessor fuer komplexe gleitkommazahlen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |