DE69925720T2 - Digitaler signalprozessor zur reduzierung des zugriffswettbewerbs - Google Patents

Digitaler signalprozessor zur reduzierung des zugriffswettbewerbs Download PDF

Info

Publication number
DE69925720T2
DE69925720T2 DE69925720T DE69925720T DE69925720T2 DE 69925720 T2 DE69925720 T2 DE 69925720T2 DE 69925720 T DE69925720 T DE 69925720T DE 69925720 T DE69925720 T DE 69925720T DE 69925720 T2 DE69925720 T2 DE 69925720T2
Authority
DE
Germany
Prior art keywords
data
instruction
command
register
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69925720T
Other languages
English (en)
Other versions
DE69925720D1 (de
Inventor
C. Gilbert SIH
Quizhen Zou
K. Sanjay JHA
Inyup Kang
Jian Lin
Quaeed Motiwala
Deepu John
Li Zhang
Haitao Zhang
Way-Shing Lee
E. Charles SAKAMAKI
A. Prashant KANTAK
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/044,088 external-priority patent/US6496920B1/en
Priority claimed from US09/044,086 external-priority patent/US6425070B1/en
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of DE69925720D1 publication Critical patent/DE69925720D1/de
Publication of DE69925720T2 publication Critical patent/DE69925720T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Description

  • Hintergrund der Erfindung
  • I. Gebiet der Erfindung
  • Die Erfindung bezieht sich auf einen digitalen Signalprozessor. Die vorliegende Erfindung ist insbesondere aber nicht ausschließlich bei der digitalen Signalverarbeitung anwendbar, und zwar unter Verwendung hochparallelen, hochkanalisierten (pipelined) Verarbeitungstechniken.
  • II. Beschreibung verwandter Technik
  • Digitale Signalprozessoren (DSPs) sind allgemein für Realzeitverarbeitungen von digitalen Signalen in Verwendung. Ein Digitalsignal ist typischerweise eine Reihe von Zahlen oder digitalen Werten, die dazu verwendet werden, ein entsprechendes Analogsignal zu repräsentieren. Die DSP's werden in einer großen Vielzahl von Anwendungen eingesetzt, und zwar einschließlich Audiosystemen, wie beispielsweise CD-Spielern und drahtlosen Nachrichtensystemen, wie beispielsweise zellularen Telefonen (Mobiltelefone).
  • Ein DSP wird oftmals als eine spezialisierte Form eines Mikroprozessors angesehen. Wie ein Mikroprozessor wird ein DSP typischerweise auf einer auf Silizium basierenden integrierten Halbleiterschaltung implementiert. Zudem, wie bei Mikroprozessoren, wird die Rechenleistung der DSPs dadurch vergrößert, dass man Techniken oder Verfahrensweisen verwendet, die auf einem reduzierten Befehlssatz basieren (reduced instruction set (RISC) computing techniques). Die RISC-Rechenverfahren umfassen die Verwendung kleinerer Anzahl an von gleichbemessenen Befehlen oder gleichgroßen Befehlen, um den Betrieb des DSP zu steuern, wobei jeder Befehl in der gleichen Zeit (Zeitgröße) ausgeführt wird. Die Verwendung von RISC-Rechenverfahren erhöht die Geschwindigkeit oder Rate, mit der Befehle ausgeführt werden oder die Takt- oder Clockrate und auch die Größe der Befehlskanalisierung (instruction pipelining = Befehlspipelining) innerhalb des DSP. Dies vergrößert die Gesamtrechenleistung des DSPs.
  • Die Konfigurierung eines DSPs unter Verwendung von RISC-Rechnentechniken schafft auch unerwünschte Charakteristika oder Eigenschaften. Insbesondere führen auf RISC basierende DSPs eine größere Anzahl von Befehlen für eine gegebene Aufgabe aus. Die Ausführung zusätzlicher Befehle erhöht den Leistungsverbrauch des DSPs, obwohl die Zeit zur Ausführung der Befehle infolge der verbesserten Taktgeschwindigkeit eines auf RISC basierenden DSPs abnimmt. Zusätzlich erhöht die Verwendung einer größeren Anzahl von Befehlen die Größe des "Onchip"-Befehlsspeichers innerhalb des DSPs. Speicherstrukturen erfordern eine beträchtliche (oftmals mehr 50% der gesamten) Schaltungsfläche innerhalb eines DSPs, was die Größe und die Kosten des DSPs erhöht. Auf diese Weise ist die Verwendung von auf RISC basierenden DSPs weniger ideal für Anwendungen bei niedrigen Kosten und bei niedrigem Leistungsverbrauch wie beispielsweise bei der digitalen zellularen Telefonie und anderen Betriebsarten drahtloser Nachrichtensysteme.
  • 1 ist ein stark vereinfachtes Blockdiagramm eines digitalen Signalprozessors konfiguriert gemäß dem Stand der Technik. Eine arithmetische Logikeinheit (ALU = arithmetic logic unit) 16 ist an eine ALU-Registerbank 17 gekoppelt und eine Multiplizier-Akkumulier-Schaltung (MAC = multiply accumulate circuit) 26 ist an die MAC-Registerbank 27 gekoppelt. Der Datenbus 20 koppelt die MAC-Registerbank 27, das ALU-Register 17, und den (Onchip) Datenspeicher 10. Ein Befehlsbus 22 koppelt oder verbindet die MAC-Registerbank 27, (Onchip)-Befehlsspeicher 12, MAC-Registerbank 27 und ALU-Registerbank 17. Ein Befehlsdecodierer 18 ist mit dem MAC 26 und ALU 16 gekoppelt und in einigen Systemen des Standes der Technik ist der Befehlsdecodierer 18 direkt mit dem Befehlsspeicher 12 gekoppelt. Der Datenspeicher 10 ist auch an das Dateninterface 11 gekoppelt und der Befehlsspeicher 12 ist auch an das Befehlsinterface 13 gekoppelt. Das Dateninterface 11 und das Befehlsinterface 13 tauschen Daten und Befehle mit dem "Offchip"- Speicher 6 aus. Während des Betriebs werden die Befehle im Instruktions- oder Befehlsspeicher 12 durch den Befehlsdecodierer 18 dekodiert. Darauf ansprechend erzeugt der Befehlsdecodierer 18 interne Steuersignale, die an die ALU 16 und die MAC 26 angelegt werden. Die Steuersignale veranlassen typischerweise, die ALU 16 dazu, Daten zwischen der ALU-Registerbank 17 und dem Datenspeicher 10 oder dem Befehlsspeicher 12 auszutauschen. Auch veranlassen die Steuersignale die MAC 26 zum Austausch von Befehlsdaten zwischen MAC-Registerbank 27 und Befehlsspeicher 12 oder Datenspeicher 10. Zudem veranlassen die Steuersignale die ALU 16 und die MAC 26 verschiedene Operationen auszuführen, und zwar ansprechend auf und basierend auf den Daten gespeichert in der ALU-Registerbank 17 bzw. der MAC-Registerbank 27.
  • In einem beispielhaften Betrieb kann der Befehlsspeicher 12 Koeffizientendaten enthaften, und zwar zur Verwendung durch die ALU 16 und die MAC 26 und der Datenspeicher 10 kann zu verarbeitende Daten (Signaldaten) enthalten. Die Koeffizientendaten können zur Implementierung eines Frequenzfilters unter Verwendung des DSPs verwendet werden, was übliche Praxis ist. Wenn die Filterung ausgeführt wird, werden sowohl die Signaldaten vom Datenspeicher 10 als auch die Koeffizientendaten vom Befehlsspeicher 12 in das MAC-Register 27 eingelesen. Zusätzliche Befehlsdaten innerhalb des Befehlsspeichers 12 werden auch an den Befehlsdecodierer 18 angelegt, und zwar entweder durch den Befehlsdatenbus 22 oder durch eine direkte Verbindung. Die zusätzlichen Befehlsdaten spezifizieren den durch die MAC 26 auszuführenden Betrieb. Die durch den MAC 26 erzeugten Ergebnisse werden typischerweise in den Datenspeicher 10 zurück eingelesen.
  • Viele Verarbeitungsineffektivitäten ergeben sich bei dieser bekannten Art des Verarbeitens bzw. des "Processing". Diese Verarbeitungsineffektivität umfassen beispielsweise den Bus- oder Zugriffsstau bzw. Konkurrenz zum Befehlsspeicher 12, der Befehlsdaten sowohl an das MAC-Register 26 und den Befehlsdecodierer 18 liefern muss, und auch Bus- oder Zugriffskonkurrenz zum Datenspeicher 10, der sowohl Signaldaten auslesen und Ausgangsdaten ein schreiben muss. Zudem muss in vielen Fällen eine zusätzliche Verarbeitung der Ausgangsdaten durch die ALU 16 ausgeführt werden. Dies erschwert den Zugriff zum Datenspeicher 10 weiter und schafft daher eine Konkurrenz oder Verstopfung für den Datenbus 20, da die Ausgangsdaten von der MAC-Registerbank 27 in den Datenspeicher 10 eingelesen und dann zum ALU-Register 17 ausgelesen werden müssen. Dieser Lese- und Schreibbetrieb wird über den Bus 20 ausgeführt und verbraucht daher zusätzliche Buszyklen. Derartige Ineffektivitäten reduzieren die Verarbeitungsperformance des DSPs.
  • US-A-5,710,914 beschreibt ein digitales Signalverarbeitungsverfahren oder System zum Implementieren von in einer Reihe angeordneten (pipelined) Lese- und Schreiboperationen. Das System weist eine Programmsteuereinheit auf, einen Speicher, einen Datenverarbeitungseinheit und einen dedizierten oder zugeordneten Bus zum Schreiben der verarbeiteten Daten von der Datenverarbeitungseinheit zum Speicher. Durch Verwendung des zugewiesenen Schreibbusses geht das System einen beträchtlichen Weg zur Vermeidung der Busverstopfung in einem fünfstufigen Pipelinebetrieb, wobei Hohl-Decodier-Lese-Ausführ- und Schreiboperationen vorkommen.
  • US-A-5,293,611 beschreibt einen digitalen Signalprozessor, der eine Multiplizier-und-Addier-Funktion zur Digitalfilterrealisierung verwendet. Der Prozessor besitzt einen Bypass-Signalpfad zur Übertragung von Daten ohne die Intervention irgendeines Busses, der sich zwischen den zwei Anschlüssen des Daten-RAMs erstreckt. Im Laufe der Mulitplizier-und-Addier-Verarbeitung können aus einer vorbestimmten Adresse des Daten-RAMs auszulesende Tastdaten-Items auf einen internen Bus übertragen werden und können gleichzeitig in die nächste Adresse des Daten-RAMs eingeschrieben werden.
  • Foley P. beschreibt das Multimedia-Verarbeiten (processing) unter Verwendung eines einzigen Mediaprozessors, eines eine hohe Bandbreite besitzenden RAMBUS RDRAM als Mediaspeicher und eine VLIW SIMD interne Architektur, und zwar in der folgenden Druckschrift: The MPACTZ media processor redefines the multimedia PC", Digest of Papers of Compeon (Computer Socie ty Conference) 1996, Technologies fort he Information Superhighway Satata Clara, Feb 25 – 28, 1996 CONF. 41, 311–318.
  • US-A-55 22 083 beschreibt ein Multiprozessorsystem, bei dem jeder Prozessor eine Registerbank und Zugriff besitzt zu einer ersten, zweiten und dritten Speicherbank über einen globalen Bus und über einen örtlichen oder lokalen Bus. Globaler Bus und lokaler Bus können gleichzeitig verwendet werden, um Daten von den ersten und zweiten Speicherbänken zum Prozessor zu liefern und einer der Busse kann dazu verwendet werden, das Ergebnis zurück in die dritte Speicherbank einzuschreiben.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung sieht eine Verbesserung der Leistungsfähigkeit und der Brauchbarkeit eines DSPs vor, und zwar durch Zuwendung zu den oben angegebenen Problemen und Nachteilen und auch durch das Vorsehen weiterer Merkmale und Verbesserungen, die in der Anmeldung beschrieben sind.
  • Die vorliegende Erfindung sieht ein neues und verbessertes Verfahren, sowie eine Schaltung zur digitalen Signalverarbeitung vor.
  • Gemäß einem ersten Aspekt der vorliegenden Erfindung ist ein digitaler Signalprozessor vorgesehen, und zwar zur Verarbeitung von Signalen ansprechend auf Befehlsdaten, wie dies im Anspruch 1 beansprucht ist.
  • Gemäß einem zweiten Aspekt ist ein Verfahren zur Verarbeitung von Daten nach Anspruch 17 vorgesehen. Verschiedene Ausführungsbeispiele der Erfindung sind in den abhängigen Ansprüchen erläutert.
  • Kurze Beschreibung der Zeichnungen
  • Die Merkmale, Ziele und Vorteile der vorliegenden Erfindung ergeben sich deutlicher aus der detaillierten Beschreibung von Ausführungsbeispielen der Erfindung, und zwar in Verbindung mit den Zeichnungen, in denen gleiche Bezugszeichen Entsprechendes identifizieren. Die Zeichnungen zeigen im Einzelnen:
  • 1 Ein Blockdiagramm eines digitalen Signalprozessors konfiguriert gemäß dem Stand der Technik;
  • 2 Ein Blockdiagramm eines digitalen Signalprozessors ausgebildet gemäß der Erfindung;
  • 3 Ein Blockdiagramm der Verbindungen zwischen den Eingangsanschlüssen und den Registern der Registerbank;
  • 4 Ein Blockdiagramm der Verbindung zwischen dem Register und den Ausgangsanschlüssen der Registerbank
  • 5 Ein Diagramm eines Satzes von Befehlen variabler Länge, gespeichert in dem Speicherplatz bzw. dem Speicherstelle gemäß einem Ausführungsbeispiel der Erfindung;
  • 6 Ein Flussdiagramm, welches den Betrieb der Befehlsholeinheit veranschaulicht (instruction fetch unit);
  • 7 Ein Blockdiagramm der Befehlsholeinheit konfiguriert gemäß einem Ausführungsbeispiel der Erfindung;
  • 8 Ein Blockdiagramm der MAC-Einheit, und zwar konfiguriert gemäß einem Ausführungsbeispiel der Erfindung;
  • 9 Ein Blockdiagramm der Befehlshierarchie, verwendet in einem Ausführungsbeispiel der Erfindung,
  • Detaillierte Beschreibung der bevorzugten Ausführungsbeispiele
  • Die vorliegende Erfindung sieht ein neues und verbessertes Verfahren sowie eine Schaltung zur digitalen Signalverarbeitung vor. In der gesamten Anmeldung werden verschiedene Bezüge auf Signale, Befehle und Daten vorgenommen. Diese Signale, Befehle und Daten sind vorzugsweise durch elektrische Spannungen, Ströme, Stromspeicherungen einschließlich geladener optischer oder magnetischer Teilchen oder irgendwelche Kombinationen davon, wie dies im Allgemeinen bekannt ist, repräsentiert. Die Verwendung verschie dener chemischer und biologischer Verbindungen zur Repräsentierung derartiger Signale, Befehle und Daten ist im Allgemeinen in Übereinstimmung mit der Verwendung der vorliegenden Erfindung, obwohl dies nicht bevorzugt wird, und zwar infolge der Schwierigkeit der Verwendung, Steuerung und Manipulation solcher Dinge.
  • Zudem wird auf verschiedene Aspekte, vorteilhafte Wirkungen, Merkmale und Vorteile der Erfindung hingewiesen (worauf hier kollektiv als Aspekte hingewiesen wird, falls nicht im Besonderen darauf Bezug genommen wird). In einigen Ausführungsbeispielen der Erfindung können diese unterschiedlichen Aspekte alleine realisiert werden, ohne das Vorhandensein irgendeines anderen Aspekts der Erfindung. In anderen Ausführungsbeispielen der Erfindung könnten jedoch zwei oder mehr Aspekte der Erfindung zusammen realisiert werden, um synergetische und unerwartete Vorteile zu erlangen, die größer sind als die durch die Ausführungsbeispiele der Erfindung erhalten werden, die nur einen Aspekt der zwei oder mehr kombinierten Aspekte der Erfindung realisiert.
  • I. DSP-OPERATIONS- UND BEFEHLSSPEICHERUNG
  • 2 ist ein Blockdiagramm eines Teils einer digitalen Signalprozessor (DSP)-Schaltung konfiguriert gemäß einem beispielhaften Ausführungsbeispiel der Erfindung. Datenspeicher 102104 sind an Datenbusse A, B bzw. C gekoppelt, und zwar über Adressen-Erzeugungseinheiten (AGU= Address Generation Unit) 105 bis 107 und zum Dateninterface 100. Die Datenbusse A, B, C sind mit Ausgangsanschlüssen (Ports) PO1, PO2 bzw. PO3 der Registerbank 120 gekoppelt und ferner mit Eingangsanschlüssen (Ports) PI1, PI2 bzw. PI3 der Registerbank 120 und zwar durch Multiplexer 122126. Vorzugsweise lesen und schreiben die Datenbusse A, B und C Daten zwischen den Datenspeicher 102104 und den Registern innerhalb der Registerbank 120.
  • Die Verwendung von drei Datenbussen und drei Datenspeichern gestatten es, dass mehr Daten zwischen den Registerbanken und den Datenspeichern ausgetauscht werden können, ohne dass eine Busstau oder Verstopfung erzeugt wird. Beispielsweise können drei Holvorgänge gleichzeitig von den drei Speichern 102104 ausgeführt werden und zwar durch Verwendung der drei Datenbusse A, B und C. In ähnlicher Weise können drei Schreibvorgänge gleichzeitig ausgeführt werden, sowie jede Kombination der drei Hol- und Schreibvorgängen.
  • Durch das Hinzufügen eines vierten Datenbusses könnten sogar eine größere Anzahl der Vorgänge ausgeführt werden und dies entspricht einigen Ausführungsbeispielen der Erfindung. Die Verwendung von nur drei Datenbussen hat jedoch besondere Vorteile, da drei Busse die Ausführung von vielen Aufgaben erleichtern, die üblicherweise durch eine DSP ausgeführt werden, wie beispielsweise das Filtern. Somit liefert das Hinzufügen eines vierten Datenbusses nicht die gleiche inkrementalen Ausführungsverbesserung wie das Hinzufügen eines dritten Datenbusses und erfordert den gleichen Umfang an zusätzlicher Schaltungsfläche. Durch das Hinzufügen eines vierten Datenbusses ergeben sich inkremental weniger Vorteile als durch das Hinzufügen eines dritten Datenbusses. So wird in vielen Ausführungsbeispielen der Erfindung die Verwendung von nur drei Datenbussen bevorzugt.
  • Die Ausgangsanschlüsse PO4, PO5 und PO6 der Registerbank 120 sind mit der Mehrfach-Akkumulier- (MAC)-Einheit 128 verbunden und deren Ausgang ist ihrerseits mit dem Eingangsanschluss PI4 der Registerbank 120 gekoppelt. Die Ausgangsanschlüsse PO7 und PO8 der Registerbank 120 sind mit einer arithmetischen Logikeinheit (ALU) 130 gekoppelt, wobei deren Ausgang mit einem Eingangsanschluss PI5 der Registerbank 120 verbunden ist.
  • Der Befehlsspeicher 152 ist mit einer Befehlsholeinheit 156 und einem Befehlsinterface 150 gekoppelt. Der Befehlsdecodierer 158 ist mit der Befehlsholeinheit 156 gekoppelt und mit dem Sofort- oder Immediate Bus Im1, Sofort- oder Immediate Bus Im2 und Sofort- oder Immediate-Bus Im3 und auch mit dem Sofort- oder Immediate-Bus ImALU. Die Sofort- oder Immediate-Busse Im1, Im2, und Im3 sind mit Multiplexern 122, 124 und 126 gekoppelt. Der Sofort- oder Immediate-Bus ImALU ist mit der ALU 130 gekoppelt. Zusätzlich zu den oben beschriebenen Datenkopplungen ist der Decodierer 158 mit verschiedenen Untersystemen gekoppelt, dargestellt durch Steuerverbindungen (nicht gezeigt zur Vereinfachung der Zeichnung).
  • Die Registerbank 120 enthält acht (8) Register die mit L0–L3 und D0 bis D3 bezeichnet sind. Die Register L0–L3 sind vierzig (40) Bit breite Register auf die auch in sechzehn Bitfragmenten über hohe Wortregister (high word registers) L0h bis L3h und niedrige Wortregister (low word register) L01 bis L31 zugegriffen werden kann. Die Register D0 bis D3 sind zweiunddreißig (32) Bit breit, auf die in sechzehn Bitfragmenten über Sub- bzw. Unterregister R0–R7 zugegriffen werden kann. Im Allgemeinen werden die Register und Unterregister einfach als "Register" bezeichnet, wobei die spezielle Natur der Register durch die bestimmte eigene Registernummer vorgesehen wird.
  • Ein Aspekt der Erfindung wird dadurch realisiert, dass einige Register mit mehreren Eingangs- und Ausgangsanschlüssen gekoppelt sind, wodurch auf die zugegriffen werden kann. In einem Ausführungsbeispiel ist dieser Mehrfachanschluss vorgesehen durch die Verwendung von Multiplexern, gekoppelt mit dem Eingang eines jeden Registers und mit jedem Ausgangsanschluss. Andere Verfahren für Mehrfachanschlüsse sind klar und konsistent mit der Verwendung einiger Aspekte der Erfindung, einschließlich beispielsweise der Verwendung von Datenbussen und adressierbaren Speichern. Es wird jedoch die Verwendung von Multiplexern in einigen Ausführungsbeispielen bevorzugt, da sie schnellen und steuerbaren Zugriff auf die verschiedenen Register und Anschlüsse gestatten.
  • Andere Aspekte der Erfindung werden in Ausführungsbeispielen der Erfindung realisiert, die Sofort- oder Immediate-Datenbusse verwenden, wobei dies der Fall in dem beispielhaften Ausführungsbeispiel, welches hier vorgesehen ist, der Fall ist. Beispielsweise können Daten, die in den Befehlsdaten enthalten sind, in die Registerbank 120 eingelesen werden, ohne dass ein Interface zu den Speichern 104106 benötigt wird. Auf diese Weise sind die zusätzlichen Daten von dem Befehlsverarbeitungssystem verfügbar ohne Interface mit den Datenspeicher, wodurch eine Busverstopfung weiter vermindert wird.
  • 3 ist ein Blockdiagramm, welches die Verbindungen zwischen dem Registersatz innerhalb der Registerbank 120 und dem Eingangsanschlusssatz PI1 bis PI5 zeigt. Die Register sind definiert als L0h – L3h, L01 – L31 und R0 bis R7. Ein Register L0 enthält die Register L0h und L01. Im Zusammenhang mit den 3 und 4 sind die Register L0h – Lh3 24 Bits und die Register und L01 – L31 und R0 bis R7 sind 16 Bits, wodurch die Register L0 – L3 40 Bit breit sind. In ähnlicherweise weisen die Eingangsanschlüsse PI3 -PI5 Eingangsanschlüssen PI3 – PI5h von 24 Bits und PI3l – PI5l von 16 Bit für eine Gesamtzahl von 40 Bits auf. Die Eingangsanschlüsse PI1 und PI2 bestehen nur aus 16 Bits und wenn sie zum Schreiben an Register L0h – L3h verwendet werden, schreiben sie nur bis zu den am wenigsten signifikanten 16 Bits von den verfügbaren 24 Bits.
  • Wie in 3 gezeigt, empfangen einige Register Daten von allen Eingangsanschlüssen, während andere Register nur Daten von einigen oder einem Teil der Eingangsanschlüsse empfangen. Insbesondere empfangen sämtliche Register L0 – L3 Daten von allen Eingangsanschlüssen P1 bis PI15 von Multiplexern 500514 mit 16 Bit Eingangsanschlüssen verfügbar zum Schreiben der sowohl höheren als auch niedrigeren Register mit Registern L0 bis L3. Somit empfangen die Register L0 bis L3 eine Eingangsgröße von irgendeinem Bus A bis C (entsprechend den Eingangsanschlüssen PI0 bis PI3) und von der MAC-Einheit 128 und der ALU 130 (entsprechend den Eingangsanschlüssen PI4 bis PI5). Die Register R0 – R7 empfangen Eingangsdaten von und Bus A–C über Multiplexer 516 – 530. Keines der Register R0 – R7 empfängt jedoch Eingangsdaten von der MAC-Einheit 128 (Eingangsanschluss PI4). Zusätzlich empfangen die Register R0 – R3 Eingangsdaten von der ALU-Einheit 130 über Multiplexer 516, 518, 524 und 526.
  • Das in der 3 gezeigte Ausführungsbeispiel hat verschiedene Vorteile. Insbesondere sieht es hinreichend Anschlussmöglichkeiten vor zwischen den Eingangsanschlüssen und den Registern um die üblichsten Operationen zu erleichtern, aber die gesamte Anschlussmöglichkeit wird auf einem Minimum gehalten, um den gesamten Schaltungsbereich, erforderlich für die Implementierung der Schaltung, zu reduzieren. Beispielsweise ist der Ausgang der MAC-Einheit 128 nur mit langen Registern L0 – L3 gekoppelt. Dies ist vorteilhaft, da das Ergebnis der Multiplizier- und Akkumulieroperationen im Allgemeinen 32 Bits übersteigt, so dass der Anschluss des Ausgangs der MAC-Einheit 128 an die Register D0 bis D3 nur von minimalem Vorteil ist. In einem weiteren Beispiel kann die ALU-Einheit 130 ausgangsseitig mit den Registern L0 bis L3 und R0 bis R3 verbunden sein. Dies erhöht die Flexibilität, da Daten von der ALU-Einheit 130 an verschiedene Register geschrieben werden können, was zweckmäßig ist, da die ALU-Einheit 13 eine größere Anzahl von verschiedenen Operationen (Vorgängen) ausführt, was wiederum zweckmäßig ist, um Daten an eine größere Anzahl von Registern auszugeben. Die ALU-Einheit 130 ist jedoch nicht mit sämtlichen Registern gekoppelt und dadurch werden unnötige oder übermäßige Anschlussmöglichkeiten (connectivity) vermieden.
  • 4 ist ein Blockdiagramm, welches die Kopplung der Ausgangsanschlüsse der Registerbank 120 mit den Registern veranschaulicht, wenn dies gemäß einem Ausführungsbeispiel der Erfindung ausgeführt ist. Wie gezeigt, ist der Ausgangsanschluss PO1, der an den BUS A ausgibt über Multiplexer 540 an die Registern L0h – L3h, L01 – I31 und R0 – R7 angeschlossen, die alle verfügbaren Register aufweisen, wenn auf sie als Unterregister zugegriffen wird. In ähnlicher Weise ist der Ausgangsanschluss P02, der zum BUS B ausgibt, über Multiplexer 542 an die Register L0h – L3h, L01 – L31 und R0 – R7 angeschlossen. Der Ausgangsanschluss PO3, der an den 40 Bit breiten BUS C ausgibt, ist durch Multiplexer 530 an die Register L0 – L3 und D0 – D3 angeschlossen, die alle verfügbaren Register enthalten, wenn auf sie als volle Register zugegriffen wird.
  • Der Ausgangsanschluss (output port) PO4, der mit dem 40-Bit Eingang der MAC-Einheit 128 gekoppelt ist, ist über Multiplexer 532 an die Register L0 – L3 angeschlossen. Da die durch den MAC 128 akkumulierten Werte die Tendenz besitzen groß zu sein, aufgrund der ausgeführten Multiplizier- und Akkumulieroperationen sieht die Kopplung des Ausgangsanschlusses PO4 zu nur dem 40 Bit "langen" Registern L0 – L3 eine optimale Kopplungsanordnung vor, da die Nützlichkeit die sich aus den zusätzlichen Kopplungen an die Register D0 – D3 ergibt, niedrig ist, und zwar unter Berücksichtung, dass die Akkumulation der verschiedenen Multipliziervorgänge typischerweise 32 Bits ü-bersteigen wird.
  • Der Ausgangsanschluss PO5, der mit einem 16 Bit Eingang der MAC-Einheit 128 gekoppelt ist, ist durch Multiplexer 534 mit den Registern L0h – L3h, R0, R2, R4 und R6 gekoppelt. Der Ausgangsanschluss PO6, der mit dem zweiten 16 Bit Eingangsanschluss der MAC-Einheit 128 gekoppelt ist, ist mit den Registern L0h – L3h, L01 – L31 und R0 – R7 gekoppelt. Durch Koppeln eines sechzehn Bit-Eingangs der MAC-Einheit 128 mit sämtlichen verfügbaren Registern, während der zweite sechzehn Bit-Eingangsanschluss mit einem Subset der verfügbaren Register gekoppelt ist, wird ein brauchbarer Kompromiss erreicht. Insbesondere dann, wenn der Registerraum begrenzt ist, kann mindestens ein Teil von Daten, die verarbeitet werden sollen in irgendeinem verfügbaren Register platziert werden. Durch Begrenzen der Anzahl der Register, die mit dem anderen Eingang verbunden sind, wird jedoch die Gesamtmenge der Anschlussschaltungen reduziert, was das Vorsehen weiterer Funktionen und Merkmale erleichtert, wie beispielsweise höherer Anschlussmöglichkeiten unter den anderen Registern, Eingangsanschlüssen und Ausgangsanschlüssen.
  • Der Ausgangsanschluss PO7, der mit einem Eingang der ALU 130 gekoppelt ist, ist durch Multiplexer 546 mit den Registern L0 – L3, L03h – L3h und R0 – R3 gekoppelt, wobei L0h, L03h und R0 – R3 in Verbindung mit einem Satz von logischen Nullen ausgeben oder ihre Ausgabe machen. Das heißt, die Register L0h – L03h und R0 – R3 werden ausgegeben zu den Bits 31 – 16 (Bits nummeriert 0 – 39) Bits des PO7, mit Bits 0 – 15 auf die logische Null eingestellt und Bits 39 – 32 sind Vorzeichen erstreckt unter Verwendung von Bit 31. Der Ausgangsanschluss PO8, der mit einem weiteren Eingang der ALU 130 gekoppelt ist, ist auch durch Multiplexer 548 mit den Registern L0 – L3 gekoppelt, und Registern R0 – R7 in Verbindung mit einem Satz von logischen Nullen. Die Kopplung der Eingänge der ALU 130 auf diese Art und Weise gestattet die Ausführung logischer Operationen an allen verfügbaren langen Registern L0 – L3, und deshalb an großer Zahlen, was für viele Arten von Signalverarbeitungsvorgängen, wie beispielsweise Normalisierung und Skalierung nützlich ist. Zusätzlich können die arithmetischen Vorgänge zwischen den Registern R0 – R7 und L0h – L3h und R0 – R7 ausgeführt werden, die einen hohen Pegel an Flexibilität vorsehen und zwar hinsichtlich der verwendbaren Registersätze, wobei gleichzeitig die Anzahl der notwendigen Anschlüsse begrenzt wird und damit der erforderliche Schaltungsfläche. Es ist klar, dass die verfügbaren logischen und arithmetischen Operationen bzw. Vorgänge nicht auf das oben Beschriebene beschränkt sind.
  • Die Verwendung von Registern, auf die sowohl durch die mehrfachen Datenbusse als auch die mehrfachen Verarbeitungseinheiten zugegriffen werden kann, sieht verschiedene Vorteile vor. Beispielsweise liefern die Register ein Interface zwischen den Datenbussen und den Verarbeitungseinheiten, was die Notwendigkeit reduziert, jeden Datenbus zu jeder Verarbeitungseinheit zu führen. Die Reduzierung der Datenbusführung oder "Routing" spart Schaltbereiche und reduziert die Chipkosten.
  • Ferner, gestattet die Kopplung von mindestens einigen (einen Satz) Registern mit Mehrfachverarbeitungseinheiten dass Mehrfachoperationen an den gleichen Daten durchgeführt werden können, und zwar durch Verwendung von Mehrfachverarbeitungseinheiten ohne dass die Daten über den Datenbus gelesen und in den Speicher geschrieben werden müssen. Dies spart Buszyklen ein und reduziert daher den Busstau. Das Befehlsverarbeitungs-Pipelining wird auch erleichtert, da Daten, die durch eine erste Verarbeitungseinheit während eines ersten Befehlszyklus verarbeitet wurden dann weiter durch ei ne zweite Verarbeitungseinheit verarbeitet werden können, und zwar während eines zweiten Verarbeitungszyklus innerhalb des gleichen Registers.
  • Typischerweise erfordern nicht alle Daten die Verarbeitung durch Mehrverarbeitungseinheiten; so kann auf andere Register (anderer Satz) durch nur eine Verarbeitungseinheit zugegriffen werden oder durch weniger als die Gesamtzahl der Verarbeitungseinheiten, wo mehr als zwei Verarbeitungseinheiten vorhanden sind. Die Verwendung dieses anderen Registersatzes reduziert die Anzahl von Anschlüssen und daher die Schaltungsfläche auf welche Weise eine optimale Balance zwischen der Registeranschlussmöglichkeit und der Schaltungsfläche bzw. dem Schaltbereich (und daher zwischen der Leistung und Effizienz) vorgesehen wird.
  • Ferner wird in einem Ausführungsbeispiel das "Pipelining weiter durch die Verwendung von Zwei-Phasen getakteten Registern innerhalb der Registerbank 120 verbessert. Die Zwei-Phasen getakteten Register werden auf einer ersten Phase des Takts gelesen und sodann auf einer zweiten Phase des Taktes eingeschrieben, und zwar innerhalb des gleichen vollen Takts (Verarbeitungs "= processing")-Zyklus. Somit können während eines speziellen Verarbeitungszyklus bereits durch eine erste Verarbeitungseinheit, wie beispielsweise die MAC 128, verarbeitete Daten während der ersten Taktphase ausgelesen werden und durch eine zweite Verarbeitungseinheit, wie beispielsweise bei ALU 130, innerhalb des verbleibenden Teils des Verarbeitungszyklus weiterverarbeitet werden.
  • Zusätzlich, werden während der zweiten Phase des Verarbeitungszyklus neue gerade durch die MAC 128 verarbeitete Daten in das gleiche Register geschrieben, auf welche Weise eine vollständige Pipeline-Verarbeitung zwischen zwei Verarbeitungseinheiten während eines Verarbeitungszyklus (processing cycle) gestattet wird. Wiederum werden diese Operationen ohne Leiten der Daten über irgendeinen der internen Busse ausgeführt und daher wird die Busverstopfung vermieden.
  • Wiederum unter Bezugnahme auf die 2, sei bemerkt, dass während des Betriebs die Befehlsholeinheit 156 binäre Befehle aus dem Befehlsspeicher 152 entnimmt oder wenn im Instruktions- oder Befehlsspeicher 152 nicht verfügbar, aus einem extern angeordneten Speicher. Der extern angeordnete Speicher kann viele Formen, wie sie dem Stand der Technik bekannt sind, einnehmen, wie beispielsweise folgende: ein dynamischer und statischer Zufallzugriffspeicher (DRAM und SRAM) oder Abwandlungen davon, magnetische oder optische Hard-Disc-Speicher oder irgendein anderes Speichermedium, welches dem Stand der Technik bekannt ist. In dem beispielhaften Ausführungsbeispiel der Erfindung haben die Befehle eine variable Länge und die Befehlsholeinheit bestimmt die Länge des Befehls und wie viele zusätzliche Befehlsdaten während jeder Verarbeitungs- oder Taktzyklus zu holen sind. Zudem werden die Befehle in aufeinander folgenden Speicherstellen des internen Speichers und des externen Speichers gespeichert. Der Betrieb der Holeinheit 156 und die Speicherung der Befehlsdaten innerhalb des Speichers und des externen Speichers werden unten im Einzelnen beschrieben.
  • Der Befehlsdecodierer 158 empfängt die Befehle, die durch die Befehlsholeinheit 156 entnommen wurden und übersetzt die Befehle in Steuersignale, die an eines oder mehrere der Untersysteme angelegt werden, die den DSP bilden, und zwar einschließlich Datenspeicher, Registerbank, MAC und ALU. Zusätzlich gilt: Der Befehlsdecodierer 158 kann unmittelbare Daten, die innerhalb der Empfangsbefehle enthalten sind zu dem geeigneten System leiten, und zwar über Zwischenbusse Im1, Im2, Im3 oder ImALU. Die unmittelbaren Daten sind typischerweise numerische Werte, gespeichert innerhalb der Befehlsdaten, die dazu verwendet werden, um Operationen an den Daten auszuführen, die in den Datenspeichern 102106 gespeichert sind oder die eine Adresse spezifizieren oder modifizieren.
  • Vorgänge bzw. Operationen, die durch den DSP der 2 ausgeführt werden, schließen das Laden der Daten aus einem Datenspeicher in einen Registerplatz über einen der Datenbusse ein. Die Daten können auch von einem Register in einen Datenspeicher eingeschrieben werden. Auch kann die MAC 128 oder die ALU 130 Operationen an einem oder mehreren Register innerhalb der Registerbank gespeicherten Daten ausführen, wobei die Ergebnisse typischerweise in ein Register innerhalb der Registerbank 120 zurück geschrieben werden.
  • Die DSP-Architektur, die oben beschrieben wurde, sieht zahlreiche Vorteile vor. Beispielsweise erleichtert die Verwendung von drei Datenbussen die ununterbrochene "Pipeline"-Verarbeitung der Daten. Während einer exemplarischen Filterung durchgeführt durch den DSP, werden die zu filternden Daten (Signaldaten) in einen Datenspeicher gespeichert und die Koeffizienten, die auf diese Daten angewandt werden sollen, werden in dem anderen Datenspeicher gespeichert. Das Speichern der Signaldaten und der Koeffizientendaten in zwei schmäleren Speichern wird bevorzugt, da die Ergebnisse der Operationen typischerweise mehr Bits als die Operanden erfordern. Die Koeffizienten- und Signaldaten werden sodann in die Registerbank 120 eingelesen und dann durch die MAC-Einheit 128 multipliziert und akkumuliert. Die Ergebnisse dieser Operationen können in einem zweiten Register innerhalb der Registerbank 120 gespeichert werden oder in die Registerbank überschrieben werden, in der die Eingangsdaten zuvor gespeichert wurden. Jedwede Ergebnisse werden dann typischerweise aus dem Register über den dritten Bus (BUS C) in den breiteren (Speicher C) Datenspeicher geschrieben.
  • Da die Ausgangsdaten in einen dritten Speicher über einen dritten Bus geschrieben werden und die Eingangsdatensätze aus den ersten und zweiten Datenspeichern über erste und zweite Datenbusse gelesen werden, tritt nur ein geringer oder kein Speicherzugriffskonflikt oder Busverstopfung auf. Auf diese Weise kann die Verarbeitung der Daten ununterbrochen fortschreiten, was die Notwendigkeit reduziert, irgendwelche Speicheruntersysteme (Speichersubsystem = memory sub systems) oder Datenbusse mit höheren Raten als die internen Busse oder Untersysteme zu takten. Dies reduziert den Stromverbrauch, wobei die Verarbeitungsgeschwindigkeit beibehalten oder vergrößert wird.
  • Zudem erleichtert das Durchlaufen lassen der Daten durch den DSP ohne Unterbrechung die "Pipeline"-Verarbeitung der Daten, wo eine Anzahl von unterschiedlichen Datenwerten unterschiedlich in unterschiedlichen Stufen innerhalb des DSP zu irgendeiner gegebenen Zeit verarbeitet wird. Auch gilt Folgendes: Kombiniert mit der Verwendung paralleler Befehle, wie unten beschrieben, kann signifikante Verarbeitungsflexibilität erreicht werden, und zwar in Kombination mit dieser effizienten, in hohem Maße "Pipeline"-Verarbeitung, auf welche Weise eine außerordentlich vielseitiges, effizientes und leistungsfähiges DSP-System erhalten wird.
  • Es sei bemerkt, dass die Verwendung von Mehrfachbussen die Fähigkeit erhöht, Daten um den DSP in verschiedenen, zusätzlichen Wegen zu bewegen, was den Buskonflikt reduziert. Beispielsweise können zu dividierende Daten als Eingangsdaten vom Speicher C über Datenbus C geliefert werden, mit dem Divisor geliefert durch einen anderen Speicher oder Bus, wie beispielsweise der Speicher A oder Datenbus A. Das Ergebnis kann dann in dem verbleibenden Speicher (Speicher B) über den verbleibenden Bus (Datenbus B) gespeichert werden.
  • In einer weiteren beispielhaften Operation erleichtert durch das Vorsehen von Mehrfach-Datenbussen und Speichern, werden durch die MAC-Einheit 130 zu akkumulierende Daten über einen ersten Speicher und einen ersten Bus (beispielsweise Speicher A und Datenbus A) geliefert. Nachdem ein Satz von Akkumulationen ausgeführt ist, können die resultierenden Daten in Speicher C über Datenbus C eingeschrieben werden. Gleichzeitig werden Daten, die logisch verschoben werden sollen, vom Speicher C über Datenbus C an ALU-Einheit 130 geliefert, und zwar während der Verarbeitungszyklen, wo der Datenbus C nicht Resultatsdaten von der MAC-Einheit 128 führt, was während des größten Teils der Zeit der Fall ist, wobei diese Resultatdaten nur verfügbar sind, nachdem ein Satz von Akkumulationsoperationen ausgeführt ist. Die logisch verschobenen Daten werden gleichzeitig in den Speicher B über Datenbus B eingeschrieben. Auf diese Weise erleichtert die Verwendung der Mehrfachdatenbusse und Speicher im Allgemeinen und insbesondere in Ver bindung mit Mehrfachverarbeitungseinheiten die Ausführung von Mehrfachoperationen und zwar durch Vorsehen von mehr Möglichkeiten zur Bewegung der Daten innerhalb des DSP.
  • Wie oben bemerkt, wird ein weiterer Aspekt der Erfindung durch die Verwendung von Registern realisiert, auf die durch die Mehrfachverarbeitungseinheiten zugreifbar ist, beispielsweise die MAC-Einheit 128 und die ALU-Einheit 130. Register, auf die durch Mehrfachverarbeitungseinheiten (multiple processing units) zugegriffen werden kann, gestatten, dass auf die Daten, die durch Verarbeitungseinheiten verarbeitet werden müssen, zugegriffen werden kann, und zwar ohne Bewegung der Daten über irgendeinen der internen Datenbusse. Beispielsweise können Daten in ein Register durch eine erste Verarbeitungseinheit geschrieben werden, und sodann weiter durch die zweite Verarbeitungseinheit verarbeitet werden, die auch auf dieses Register zugreifen kann. Dies vermindert weiter die Busverstopfung (den Busstau) und Überlastung und erhält dadurch einen hohen Datendurchgang aufrecht.
  • Zusätzlich gilt: Bei Kombination mit der Verwendung von parallelen Operationsbefehlen und paralleler Verarbeitungsfähigkeit, wie dies im Einzelnen unten beschrieben wird, wird die Fähigkeit hoch-pipelined Mehrfachoperations-Datenverarbeitung auszuführen, weiter verbessert. Im Gegensatz dazu, verwendet das typische "Pipelining" die Stapelung oder Staffelung der unterschiedlichen Phasen (d.h. Holen, Decodieren, Verarbeiten) eines Satzes von Operationen derart, dass die Verarbeitungszeit zwischen dem Start jedes Befehls reduziert wird. Das Mehrfachoperations-Pipelining liefert den zusätzlichen Vorteil, dass Daten unterschiedliche Operationen durchlaufen, wo diese Operationen gleichzeitig an unterschiedlichen Datensätzen ausgeführt werden. Dieses Mehrfachoperations-Pipelining erhöht die Anzahl der Befehle, die pro Verarbeitungszyklus ausgeführt werden, über das konventionelle Befehls-Pipelining hinaus.
  • Die Synergie der oben beschriebenen Architektur wird ferner durch das folgende exemplarische Verarbeiten (processing) illustriert. In einem Beispiel der Filteroperation (wie dies auch oben beschrieben wurde) vergrößern sich die durch MAC 26 erzeugten Ergebnisse und Resultate in ihrer Größe (sowohl hinsichtlich des absoluten Wertes als auch der Zahl der Bits, die verwendet werden, um den Wert darzustellen) wenn die Anzahl von Produkten über die die Akkumulation ausgeführt wird, wächst. Schließlich muss das Resultat skaliert oder "normalisiert" werden, was typischerweise eine logische Verschiebungsoperation durch die ALU-Einheit 130 erfordert.
  • In dem beschriebenen System kann die Skalieroperation gleichzeitig mit den Multiplikations- und Akkumulationsoperationen des Filterns durchgeführt werden. Während eines Verarbeitungszyklus, in dem derartiges, simultanes Verarbeiten durchgeführt wird, werden die nicht verarbeiteten Signaldaten und Filterkoeffizienten aus den Datenspeichern 102 und 103 in die Register innerhalb der Registerbank 120 (wie beispielsweise L0h und L01) eingelesen. Gleichzeitig liest die MAC-Einheit 128 die zuvor in diesen Registern (L0h und L01) gespeicherten Werte und führt eine Multiplikations- und Akkumulationsoperation aus, wobei die Ausgangsgröße in ein zweites Register (beispielsweise L1) geschrieben wird. Ebenfalls gleichzeitig liest die ALU-Einheit 130 die zuvor in dem zweiten Register (L1) gespeicherten Daten aus und führt den Skalierungsvorgang aus und schreibt den skalierten Wert in ein drittes Register (beispielsweise L2) ein. Ebenfalls während des gleichen Verarbeitungszyklus wird der vorherige Wert gespeichert in dem dritten Register (D0) in den Datenspeicher 104 unter Verwendung von Bus C 112 geschrieben. Es ist klar, dass die speziellen Operationen sich entsprechend der speziellen auszuführenden Aufgabe verändern können. Ferner ist folgendes klar: Die Verwendung von hochparallelen Befehlen, die die Ausführung von Mehrfachbefehlen gestatten, erleichtern weiter die hohen "pipelined" Mehrfachbefehlsoperationen bzw. Arbeitsweisen. Die hochparallelen Befehle gestatten die Spezifizierung der unterschieden Operationen, die während jedes Verarbeitungszyklus "pipelined" werden müssen.
  • Unter Verwendung der Zweiphasen-Lese-Schreiboperationen, wovon oben ein Beispiel geliefert wurde, kann diese Verarbeitung insgesamt während eines einzigen Verarbeitungszyklus ausgeführt werden, wo die Daten von jedem Register während der ersten Taktphase ausgelesen werde, durch die Verarbeitungseinheiten verarbeitet werden und die Ergebnisse über die alten Daten in die Register während der zweiten Taktphase geschrieben werden. Es ist klar, dass der gleiche Wert nicht allen Schritten in diesem Prozess während eines einzigen Taktzyklus unterliegt, sondern vielmehr ein Satz von Werten wird durch den DSP "pipelined", wobei sich jeder zum nächsten Schritt bewegt, wenn die Verarbeitung ausgeführt wird.
  • Viele andere Operationen werden durch die verschiedenen Aspekte der vorliegenden Erfindung erleichtert. Beispielsweise ist das "Vocoding" der Prozess des Kodierens von Sprachdaten. Das Vocoding erfordert viele unterschiedliche Arten von Operationen, die ausgeführt werden müssen, wobei einige von diesen unabhängig sind und daher gleichzeitig ausgeführt werden können. Die Verwendung von Mehrfachdatenbussen und Mehrfachverarbeitungseinheiten erleichtert die Durchführung dieser Operationen.
  • Weitere Vorteile sind vorgesehen bei der Verwendung eines gesonderten Befehlsspeichers und Befehlsdecodierers. Beispielsweise werden gleichzeitig mit der oben beschriebenen Datenverarbeitung, Befehle aus dem Befehlsspeicher 152 durch Befehlsholer 156 ausgelesen, der seinerseits den Befehlsdecodierer 158 veranlasst, Steuersignale zu erzeugen, um den Betrieb der verschiedenen anderen Untersysteme innerhalb des DSP (Anschlüsse sind aus Klarheitsgründen und Vereinfachung der Zeichnung nicht gezeigt) zu steuern. Wiederum müssen die Datenbusse keine Befehlsdaten tragen und daher können die Signaldaten ohne Unterbrechung von den Befehlsdaten bewegt oder verarbeitet werden. Auf diese Weise wird die Leistungsfähigkeit weiter verbessert, und zwar durch Trennen der Befehlsverarbeitung von der Datenverarbeitung, wodurch ausgeschlossen wird, Datenbuszyklen für die Befehlsdatenbewegung zu verbrauchen.
  • 5 ist eine Tabelle, welche die Packung eines Befehlsatzes mit variabler Länge innerhalb eines Teils des adressierbaren Speicherplatzes des Be fehlsspeichers 152 der 2 veranschaulicht, und zwar gemäß einem Ausführungsbeispiel der Erfindung. Bei einigen Ausführungsbeispielen der Erfindung können die eine variable Länge besitzenden Befehle auch wie in 2 gezeigt, innerhalb des externen Speichersystems gespeichert werden, um zusätzliche Speichereffizienzen zu realisieren. Beispielsadressen sind in der linken Spalte gezeigt, wobei jede Adresse zu einem 32 Bit Datenwort weist, und zwar gezeigt in den mittleren und rechten Spalten des Speichers 275. Die mittlere Spalte repräsentiert ein 16 Bit Sub-Wort hoher Ordnung und die am weitesten rechts gelegene Spalte repräsentiert ein 16 Bit aufweisendes Sub-Wort niedriger Ordnung von jedem Datenwort. Die eine hohe und niedrige Ordnung besitzenden Sub- oder Unterworte sind nicht einzeln in dem bevorzugten Ausführungsbeispiel der Erfindung adressierbar, um die Menge der erforderlichen Adressen-Logik zu reduzieren.
  • Innerhalb des Speichers 275 sind Befehle mit variabler Länge A–L in der gezeigten gepackten Konfiguration gespeichert. Der Befehl A ist ein 48 Bit Befehl, wobei die ersten Doppel-Bytes A(1) und A(2) in dem Adresswort 0×0000 gespeichert sind und das dritte Doppel-Byte A(3) ist in dem Subwort höherer Ordnung der Adresse 0×0001 gespeichert. Der Befehl B, der dem Befehl A folgt, ist ein 32 Bit Befehl, wobei das erste Doppel-Byte B(1) in dem Wort niedriger Ordnung der Adresse 0×0001 gespeichert ist und zweite Doppel-Byte B(2) in dem Subwort höherer Ordnung der Adresse 0×0002 gespeichert ist. Der Befehl C ist ein 16-Bit Befehl bei dem das erste und einzige Doppel-Byte C(1) in dem Subwort unterer Ordnung der Adresse 0×0002 gespeichert ist.
  • Von dem Speicherplatz (storage location) der Befehle A – C ist es klar, dass dies die Größe oder Menge des Speichers 275 reduziert, die notwendig ist um einen Befehlssatz zu speichern und zwar durch Speicherung von Teilen unterschiedlicher Befehle innerhalb des gleichen Adressenwortes. Beispielsweise, wird das dritte Doppel-Byte A(3) des Befehls A zusammen mit dem ersten Doppel-Byte B(1) des Befehls B gespeichert.
  • Durch Speichern der Befehle mit variabler Länge über die Wortgrenzen hinaus oder insbesondere an aufeinander folgenden Stellen des Speicheradressenplatzes wird die Größe des Befehlsspeichers, der erforderlich ist, um eine gegebene Anzahl von Befehlen zu speichern reduziert. Das Reduzieren der Größe des Befehlsspeichers reduziert die Größe und die Kosten der Form, die notwendig ist, um dem DSP eine gegebene Größe an Befehlsspeicherfähigkeit (caching); schnelle Speicherung in einem kleinen Pufferspeicher, zu erteilen. Dieses Packen der Befehle wird ferner durch Plazieren eine variable Länge besitzenden Befehle D – L innerhalb des Speichers 275, wie in 3 gezeigt, illustriert.
  • Es ist ferner klar, dass das Packen aller Befehle an aufeinanderfolgenden Stellen (LOCATIONS), wie oben beschrieben, bei einigen Ausführungsbeispielen der Erfindung nicht notwendig ist. Beispielsweise packen unterschiedliche Ausführungsbeispiele der Erfindung nur einen wesentlich Teil (beispielsweise 90% oder mehr) der Befehle an aufeinander folgenden Stellen innerhalb des Speicherplatzes (memory space). In einem anderen Ausführungsbeispiel der Erfindung wird nur ein signifikanter Teil (beispielsweise zwischen 25 und 50%) der Befehle vorteilhafterweise in aufeinanderfolgenden Speicherstellen gepackt. Andere Ausführungsbeispiele der Erfindung können andere Prozentsätze an gepackten Befehlen verwenden.
  • Auch ist die Verwendung von aufeinander folgenden Stellen nicht notwendig. Die Befehle müssen einfach in einen Gesamtspeicherplatz platziert werden, der nicht wesentlich größer ist als die Gesamtgröße oder Menge der Befehlsdaten. Dies wird vorzugsweise dadurch erreicht, dass man die Befehle an benachbarten Stellen innerhalb des Speicherplatzes platziert, wobei jedoch die Befehle durch den gesamten Speicherplatz verschoben werden könnten, solange der Befehl in der beabsichtigten Ausführungsordnung ausgelesen werden kann. Der Fachmann erkennt, dass diese Art des vorbestimmten Hin- und Herschiebens als ein Umordnen bzw. "Remapping" des Speicherplatzes bezeichnet werden kann, dass dieses "Remapping" typischerweise den Betrieb der Erfindung nicht beeinflusst, sondern lediglich eine im Allgemeinen unerwünschte Komplexität zufügt.
  • In ähnlicher Weise ist es vorzuziehen, das Packungsschema über einen großen Befehlssatz hinweg zu verwenden. Beispielsweise ist die Verwendung des Packungsschemas über mindestens zehn Befehle in einigen Ausführungsbeispielen der Erfindung bevorzugt.
  • Zudem gilt Folgendes: Das spezielle Packungsschema, welches in dem beispielhaften Ausführungsbeispiel der Erfindung verwendet wird, ist in einigen anderen Ausführungsbeispielen der Erfindung nicht notwendig. Beispielsweise können einige andere Ausführungsbeispiele der Erfindung Befehle in nicht aufeinander folgenden Speicherplätzen besitzen. Vielmehr können die Befehle durch kleine Mengen oder Größen an Speicherplatz getrennt sein, einschließlich der Verwendung eines Befehlstrennkodes (instruction separator code). Vorzugsweise ist die kleine Menge oder Größe an Speicherplatz kleiner als die Speicherplatzgröße, die notwendig ist, um die Befehlsgrenzen an Speicherplatzgrenzen zu halten. Das oben beschriebene Packen ist jedoch in vielen Fällen bevorzugt, und zwar wegen seiner Einfachheit, Vollständigkeit und Effizienz. Im Allgemeinen kann sich der gewählte Vorteil zwischen der Vollständigkeit des Packens und der Komplexität des Packungsschemas bei unterschiedlichen Ausführungsbeispielen der Erfindung unterscheiden.
  • Auch wie dies oben eingeschlossen wurde, verwenden einige Ausführungsbeispiele der Erfindung das Packungsschema nur bei Teilen der Befehle, aber nicht beim gesamten Satz verfügbarer Befehle. Beispielsweise können die Befehlspackungen nur an Befehlsätzen ausgeführt werden, die dazu verwendet werden, eine bestimmte Aufgabe oder Subroutine auszuführen.
  • Es sei bemerkt, dass die Kombination hochgepackter Befehlsspeicher mit der Verwendung eine variable Länge besitzenden Befehle die Speicheranforderungen des DSPs weiter reduzieren, da die eine variable Länge besitzenden Befehle nur die Menge an Daten verbrauchen, die notwendig ist, um die ge wünschten Operationen anzufordern und der hochgepackte Befehlsspeicher hält den Gesamtspeicher gleich dem der durch den eine variable Länge besitzenden Befehlssatz verbraucht wird und daher auf einem Minimum. Die reduzierte Speichergröße reduziert die Chipgröße und die Kosten.
  • Zusätzlich zu dem Vorteil der verminderten DSP-Größe und der daher verminderten DSP-Kosten sieht die Verwendung von hochgepackten Befehlen und eine variable Länge besitzenden Befehlen zusätzliche unerwartete Vorteile vor, und zwar bei Kombination mit anderen Merkmalen der oben beschriebenen Architektur. Beispielsweise durch die Reduzierung der Größe des Befehlsspeichers wird zusätzliche Schaltungsfläche verfügbar gemacht, und zwar für die Verwendung von drei Datenbussen innerhalb des DSPs, was die oben beschriebenen Vorteile vorsieht, und zwar einschließlich nicht unterbrochener stark "pipelineartiger" Datenverarbeitung und deren Fähigkeit Mehrfachoperationen gleichzeitig innerhalb des DSPs auszuführen. Auf diese Weise bringt die Kombination der dicht gepackten Befehle mit der Mehrfachbusarchitektur die zusätzlichen unerwarteten Vorteile einer erhöhten Leistungsfähigkeit und Effizienz.
  • Die Fähigkeit Befehle variabler Länge innerhalb aufeinander folgenden Stellen des Speicherplatzes zu speichern wird auch möglich gemacht, durch Vorsehen eines DSPs , das Befehle mit variabler Länge gespeichert in einer derartigen Konfiguration holen und verarbeiten kann. 6 ist ein Flussdiagramm des Betriebs der Befehlsholeinheit 146 beim Holen von Befehlen aus dem Befehlsspeicher 152 mit einem Ausführungsbeispiel der Erfindung. Die Verarbeitung (processing) beginnt am Schritt 200 und am Schritt 202 wird ein erster Befehlsdatensatz aus dem Befehlsspeicher 152 ausgelesen. In dem examplarischen Ausführungsbeispiel der Erfindung werden zwei 32 Bit Worte oder 64 Bits von Befehlsdaten am Schritt 202 entnommen.
  • Am Schritt 204 wird der erste Befehl, der in den 64 Bit von entnommenen Befehlsdaten enthalten ist durch Befehlsdecodierer 158 verarbeitet. In dem exemplarischen Ausführungsbeispiel der Erfindung kann der Befehl 16, 32 oder 48 Bits lang sein. Die Befehlslänge wird durch einen Satz von Kopf- oder Headerbits bestimmt, der in jedem Befehl enthalten ist und der die Befehlslänge, wie unten im Einzelnen beschrieben anzeigen. Verschiedene andere Verfahren zur Spezifizierung der Befehlslänge sind offensichtlich, und zwar einschließlich der Verwendung von Codes, die zwei Befehle demarkieren oder trennen oder Verwendung eines "Superheader" bzw. Superkopfbefehls, der die Länge einiger Befehlssätze, die folgen spezifiziert. Die Verwendung von Kopfbits ist in einigen Fällen bevorzugt, da die Befehlslängeninformation in enger Nachbarschaft zu dem Befehl gehalten wird, wodurch die Notwendigkeit reduziert wird, Zustandsinformationen über die Befehlsverarbeitung zu speichern oder aufrecht zu erhalten.
  • Nachdem der erste Befehl, der innerhalb der 64 Bit entnommenen Befehlsdaten enthalten ist, verarbeitet ist, wird beim Schritt 206 bestimmt, ob 48 Bits oder mehr nicht verarbeiteter Befehlsdaten in den 64 Bits von entnommenen Befehlsdaten verbleiben. Wenn 48 Bits oder mehr verarbeitete Befehlsdaten verbleiben, so wird der nächste Befehl enthalten innerhalb der verbleibenden 48 Bits von nicht verarbeiteten Daten wiederum am Schritt 204 verarbeitet.
  • Wenn weniger als 48 Bits nicht verarbeiteter Befehlsdaten in den entnommenen Befehlsdaten am Schritt 206 verbleiben, so werden zusätzliche Befehlsdaten vom Befehlsspeicher 152 geladen. Verschiedene Verfahren zum Laden zusätzlicher Befehle werden ins Auge gefasst. In einem Ausführungsbeispiel der Erfindung werden hinreichende zusätzliche Befehlsdaten von dem Befehlsspeicher geladen, um die Menge an nicht verarbeiteten Daten gespeichert in der Befehlsholeinheit auf 48 Bits zurück zu bringen. Die Sicherstellung, dass 48 Bits nicht verarbeitete Daten innerhalb der Befehlsholeinheit gespeichert sind, stellt sicher, dass mindestens ein vollständiger Befehl für den Befehlsdecodierer 158 verfügbar ist.
  • In einem bevorzugten Ausführungsbeispiel der Erfindung entnimmt die Holeinheit eine variable Datenmenge, wenn weniger als 48 Bits nicht verarbeiteter Daten verbleiben, und zwar abhängig von der speziellen Menge an Daten, die verarbeitet wurde. Insbesondere dann, wenn die Menge an verarbeiteten Daten gleich einem Datenwort (32 Bits) ist oder dieses übersteigt, wird ein zusätzliches Datenwort (32 Bits) von neuen Befehlsdaten entnommen. Wenn die Datenmenge, die zuvor verarbeitet wurde, gleich zwei Datenworten (64 Bits) ist oder dies übersteigt, werden zwei neue Datenworte durch die Befehlsholeinheit entnommen.
  • Die Bestimmung der entnommenen Datenmenge basierend auf der Anzahl von Worten, die verarbeitet wurden, wird bevorzugt, dass dies eine hinreichende Menge an nicht verarbeiteten Daten für den Befehlsdecodierer 158 verfügbar hält, wobei auch ein effizienterer Wortlängenzugriff zu den Speicherbanken gestattet wird, die den Befehlsspeicher aufbauen oder bilden. Sobald zusätzliche verarbeitete Befehlsdaten am Schritt 206 entnommen sind, wird der nächste Befehl verarbeitet, und zwar innerhalb der gesamten Länge von nicht verarbeiteten Befehlsdaten, die nunmehr verfügbar sind.
  • 7 ist ein Blockdiagramm der Befehlsholeinheit 156 und des Befehlsspeichers 152 konfiguriert gemäß einem Ausführungsbeispiel der Erfindung. Der Befehlsspeicher 152 weist eine geradzahlige Speicherbank 302 (RAM0) und eine ungeradzahlige Speicherbank 300 (RAM1) auf, deren jede 32 Bit Datenworte liest und schreibt. Die Speicherbanken sind deshalb als geradzahlig und ungeradzahlig bezeichnet, da sie beide innerhalb des gleichen Adressplatzes adressiert sind, wobei aber geradzahlige Adressen an die geradzahlige Speicherbank 302 und ungeradzahlige Adressen an die ungeradzahlige Speicherbank 300 gerichtet sind.
  • Speicherbänke, die andere Wortgrößen einschließlich 8, 16, 24, 48 und 64 Bit-Worte lesen und schreiben, können in alternativen Ausführungsbeispielen der Erfindung verwendet werden. Zusätzlich können unterschiedliche Anzahlen von Speicherbänken verwendet werden, und zwar einschließlich 1 bis 8 Speicherbänke(n). Die Verwendung von zwei Speicherbänken mit 32 Bit-Worten wird jedoch bevorzugt, da dies die Gesamtkomplexität reduziert, während auch gestattet wird, dass die Befehlsdaten in verwaltbaren Stücken oder Teilen adressiert werden.
  • Die Control- oder Steuerlogik 304 veranlasst, dass die Datenworte aus den Speicherbänken 300 und 302 zu den Befehlsregistern 306 und 307 gelesen werden. Die speziellen Speicherstellen, die gelesen werden sind durch die Adresszeilen 310 und 314 spezifiziert und das Lesen des Befehls wird durch die "Enable" bzw. Befähigungszeilen 332, 315, 316 und 318 gesteuert. Die 32 Bit Ausgangsgrößen der Befehlsregister 306 und 307 werden in 16 Bit-Teilen an die Eingänge A, B, C und D des Rotators 308 angelegt. Der Rotator 308 gibt 48 Bit an Befehlsdaten 324 aus. Die 48 Bit Befehlsdaten 324 weisen Folgendes auf: Drei der vier (3:4) Eingänge A, B, C und D, wobei jeder Eingangssatz 16 Bit enthält, wie dies im Einzelnen unten beschrieben ist.
  • Während des Betriebes lädt die Steuerlogik 304 Befehlsdaten von den Befehlsspeicherbanken 300 und 302, und zwar entsprechend dem Verfahren, was unter Bezugnahme auf 5 beschrieben wurde. Insbesondere lädt die Steuerlogik 304 als erstes eine Gesamtmenge von 64 Bits von nicht verarbeiteten Befehlsdaten in die Befehlsregister 306 und 307, und zwar durch Lesen eines 32 Datenwortes aus sowohl der geradzahligen Speicherbank 302 als auch der ungeradzahligen Speicherbank 300. Wenn ein 16 Bit-Befehl verarbeitet wird, so werden keine neuen Daten geladen, da die Befehlsregister 306 und 307 noch immer 48 Bit von nicht verarbeiteten Befehlsdaten enthalten. Wenn sodann ein 32 Bit Befehl verarbeitet ist, so wird das Befehlsregister 306 mit einem 32 Bit Wort zusätzlicher Befehlsdaten geladen, da weniger als 48 Bit nicht verarbeiteter Befehlsdaten bleiben. Das Laden des 32 Bit Befehlswortes platziert wiederum 48 Bit von nicht verarbeiteten Befehlsdaten in den Registern 306 und 307, und zwar mit 16 nicht verarbeiteten Bits in Register 307 und den nächsten 32 in Register 306. Wenn sodann ein 48 Bit Befehl verarbeitet ist, verbleiben keine nicht verarbeiteten Befehlsdaten, so dass beide Register 306 und 307 mit 32 Bit Worten von Befehlsdaten geladen werden, was 64 Bit von nicht verarbeiteten Befehlsdaten bedeutet, was größer ist als die notwendigen 48 Bit von Befehlsdaten. Obwohl das Laden von vollen 64 Bit von Befehlsdaten nicht besonders notwendig ist, ist es zweckmäßig, da es gestattet, zwei 32 Bit Wortbefehlsspeicher und Register zu verwenden, die in der Industrie üblich sind. Die Verwendung anderer Verfahren des Aufrechterhaltens hinreichender Mengen an nicht bearbeiteten Befehlsdaten ist konsistent mit der Verwendung einiger Aspekte der vorliegenden Erfindung.
  • Sobald 64 Bit neuer Befehlsdaten in die Befehlsregister 306 und 307 eingeladen sind, konfiguriert die Steuerlogik 304 den Rotator 308 unter Verwendung von Steuersignalen 320 zur Ausgabe der nächsten 48 nächster Bits von Befehlsdaten, empfangen an Eingängen A, B, C und D, basierend auf 1) dem Ort der Befehlsdaten innerhalb des Befehlsadressenraums, 2) dem Satz von Befehlsdaten, die verarbeitet wurden und 3) der Länge des vorherigen verarbeiteten Befehls. Insbesondere ist der Rotator 308 konfiguriert zur Ausgabe des Satzes von 48 Bits von Befehlsdaten, die als nächstes in der Reihe sind verarbeitet zu werden, und zwar mit den am nächsten in der Reihe sich befindlichen Bits von diesen Befehlsdaten in der signifikantesten oder am weitesten links gelegenen Position.
  • Beispielsweise besteht beim Laden der ersten zwei Worte, oder 64 Bit, von Befehlsdaten in Register 306, 307, wenn die Befehlsdaten im geradzahligen Befehlsregister 307 die nächsten in der Reihe sind, die Ausgangsgröße des Rotators 308 aus den Befehlsdaten, die am Eingang A, B und C (ABC) in dieser Reihenfolge empfangen wurden. Wenn die Befehlsdaten in dem ungeradzahligen Befehlsregister 306 als nächstes in der Reihe sind, so ist der Rotator 308 derart konfiguriert, die an den Eingängen C, D und A (CDA) in dieser Ordnung auszugeben.
  • Wenn die Befehle verarbeitet werden, werden neue Befehlsdaten in die Datenregister 306 und 307, wie oben beschrieben, eingeladen und der Rotator 308 ist derart konfiguriert, dass er die Ausgabe der als nächstes in der Reihe befindlichen Befehlsdaten am Ausgang 324, basierend auf der Größe des zuvor verarbeiteten Befehls, fortsetzt. Die Größe des zuvor verarbeiteten Befehls wird zu der Steuerlogik 304 durch die Kopfdaten 322 übertragen, die eine Kopie der ersten fünf Bits der Ausgangsgröße 324 sind. Wie oben bemerkt, ist irgendein vorbestimmtes Verfahren zur Spezifizierung der Befehlslänge zur Steuerlogik 304 konsistent mit der Ausführung der vorliegenden Erfindung, obwohl die Verwendung der ersten fünf Bits bevorzugt wird, da dies gestattet, dass die Befehlslänge direkt aus den Befehlsdaten bestimmt wird.
  • In einem exemplarischen Ausführungsbeispiel der Erfindung ist die Größe des vorherigen Befehls in zwei Bits von Zustandsinformation I1 und I0 gemäß der Tabelle 1 codiert.
  • Figure 00290001
    Table 1. Full instruction formats.
  • Figure 00290002
    Tabelle 1. Volle Befehlsformate.
  • Zusätzlich wird die Konfiguration des Rotators 308 durch zwei ausgewählte Bits S1 und S0 gesteuert, die die Steuerung 320 bilden, und die in Tabelle 2 gezeigt, codiert ist.
  • Figure 00300001
    Table 2. Rotator select control bits and output.
  • Figure 00300002
    Tabelle 2. Rotatorauswahlsteuerbits und Ausgangsgröße.
  • Folgendes sollte klar sein: wenn der Zustand von S1 und S0 inkrementiert wird, so wird die Ausgangsgröße des Rotators 308 nach links rotiert, oder "barrel-shifted". Die Linksrotation erfolgt derart, dass jede Eingangsgruppe (A, B, C und D) nach links am Ausgang verschoben wird. Die Eingangsgruppe, die in der am weitesten links gelegenen Position die Ausgangsgröße war, wird entfernt. Die zuvor nicht als Ausgangsgröße gewertete Eingangsgruppe wird darauffolgend an der am weitesten rechts gelegenen Position ausgegeben. Der Zustand von S1 und S0 und daher die Konfiguration des Rotators 308 wird aktualisiert oder rotiert (rotatiert), und zwar durch eine Größe die sich entsprechend den Befehlen verschiedener Längen verändert. Insbesondere wird der Wert (I1 I0), der die Länge des Befehls der verarbeitet wird repräsen tiert, zu den Steuerbits S1 und S0 hinzuaddiert und jedweder Übertragswert wird weggelassen. Das heißt, Folgendes gilt: S1(t + 1), S0(t + 1) = S1(t), (S0(t) + I0, I1 (1)
  • Für den Abzweig (branch) oder Rücksetzzustand werden die Werte von S1 und S0 zurückgesetzt, und zwar basierend auf dem speziellen Befehl gemäß der Verarbeitung, Abzweigung (branches) oder Rücksetzungen (resets) und daher die Gleichung (1) nicht verwendet werden. Die verschiedenen Verfahren zur Verarbeitung von Abzweig (branch), Rücksetz- und Anhalte (stall)-Befehlen sind im Stand der Technik bekannt und da diese Verarbeitung für die Erfindung nicht besonders relevant ist, wird sie hier nicht weiter beschrieben.
  • In einer exemplarischen Verarbeitung fängt der Rotator 308 mit einer Ausgangsgröße von ABC an und wählt die Bits S1 und S0 bei 00 aus. Wenn ein 16 Bitbefehl empfangen wird, so werden die entsprechenden Befehlslängenbits von I1 und I0 von 01 dem S1 und S0 hinzuaddiert, was ein S1 und S0 von 01 ergibt, was einer Ausgangsgröße 324 vom Rotator 308 des BCD entspricht. Eine Ausgangsgröße des BCD ist der nächste in der Reihe befindliche Satz von Befehlsdaten, nachdem die ersten 16 Bits von Befehlsdaten (Eingang A) verarbeitet sind.
  • Wenn der nächste Befehl ein 32 Bitbefehl ist, so wird eine Befehlslänge I1 und I0 von 10 zu dem aktuellen S1 und S0 Zustand von 01 hinzuaddiert, was 11 ergibt. Die resultierende Ausgangsgröße ist DAB, was den nächsten 48 Bits von Befehlsdaten entspricht, die nicht verarbeitet sind, und zwar konfiguriert mit den nächsten in der Reihe sich befindenden Befehlsdaten, empfangen am Eingang D, positioniert in der signifikantesten oder am weitesten links gelegenen Position. Zuvor sind die Befehlsdaten von den Eingängen B und C verarbeitet worden. Es sei bemerkt, dass während der Verarbeitung des vorherigen 32 Bitbefehls neue Daten in das Befehlsregister 307 gemäß den Befehlsdaten eingeladen werden, die in dem oben beschriebenen Prozess geladen wurden.
  • Wenn sodann ein 48 Bitbefehl verarbeitet wird, so wird der Zustand der Auswahlbits S1 und S0 durch eine Befehlslänge I1 und I0 auf 11 erhöht, was ein S1 und S0 von 10 ergibt, wobei der Übertrag weggelassen wird, was den Rotator 308 konfiguriert CDA auszugeben. Eine Ausgangsgröße des CDA entspricht den nächsten 48 Bits von Befehlsdaten, die zu verarbeiten sind, und zwar mit den am nächsten in der Reihe sich befindenden Bits, konfiguriert in der am meisten signifikanten Position. Zuvor wurden die Befehlsdaten am Eingang D, A und B verarbeitet. Es sei wiederum bemerkt, dass neue Befehlsdaten in das Register 306 eingelesen werden, und zwar während der Verarbeitung des vorhergehenden Befehls. Die oben beschriebene Logik zur Durchführung der assoziierten Befehlsdatenverarbeitung wird für Beispielszwecke vorgesehen und die Verwendung anderer Logik zur Durchführung der oben beschriebenen Befehlsdatenverarbeitung ist offensichtlich und konsistent mit der Verwendung der Erfindung.
  • Somit konfiguriert im exemplarischen Ausführungsbeispiel die Steuer- oder Controllogik den Rotator 308, um die nächsten 48 Bits von Befehlsdaten auszugeben, die von den Befehlsregistern 306 und 307 empfangen wurden, und zwar mit den nächsten zu verarbeitenden Befehlsbits, angeordnet in der am weitesten links gelegenen Position. Der Fachmann erkennt das Vorlegen der Befehlsdaten an der Befehlsverarbeitungseinheit 158 in irgendeiner vorbestimmten Anordnung, wodurch der nächste Satz von Befehlsdaten, die verarbeitet werden sollen, identifizierbar ist, auch konsistent ist mit der Verwendung der Erfindung.
  • Wie oben erwähnt, zeigt der Rotator 308 zusätzlich zur Ausgabe der nächsten 48 Bits von nicht verarbeiteten Befehlsdaten auch die Größe des nächsten Befehls, der verarbeitet werden soll, der Steuerlogik 304 an. Insbesondere gibt der Rotator 308 eine zusätzliche Kopie der nächsten 5 Bits von Befehlsdaten, die verarbeitet werden sollen, zur Control- oder Steuerlogik 304 aus. Im bevorzugten Ausführungsbeispiel der Erfindung wird die Länge des Befehls durch die ersten fünf (5) Bits des Befehls spezifiziert.
  • 8 ist ein Blockdiagramm der MAC Einheit 128 und zwar bei Konfigurierung gemäß einem Ausführungsbeispiel der Erfindung. Der Schieber nach rechts (Rechtsschieber) 900 empfängt die zu akkumulierende 40 Bit Eingangsgröße und verschiebt den Wert um entweder 0 oder 16 Bit, wobei die Ausgangsgröße an einen Eingang des Multiplexers 901 angelegt wird. Der andere Eingang des Multiplexers 901 empfängt den Wert 0×8000. Der Multiplizierer 902 empfängt zwei 16 Bitwerte, die zusammen mit den Vorzeichenbits vom Befehlsdecoder 158 multipliziert werden sollen, und zwar für eine Gesamtzahl von 17 Bit für jeden Eingang.
  • Die Ausgangsgröße des Multiplizierers 902 wird durch Schiebe links (Linksschieber) 904 empfangen, der die Ausgangsgröße um 0, 1, 2 oder 3 Bits verschiebt, wie dies durch den Befehlsdecodierer 158 bestimmt ist. Der Addierer/Subtrahierer 906 empfängt die Ausgangsgröße des Multiplexers 901 und des Linksschiebers 904. Der Addierer/Subtrahierer 906 führt die Addition oder Subtraktion der zwei Eingangswerte aus, und zwar wie befohlen, durch den Befehlsdecodierer 158 und gibt das Ergebnis aus, welches an den Registerbankeingangsanschluss PI4 in dem exemplarischen Ausführungsbeispiel der Erfindung angelegt wird.
  • Die Verwendung einer Schiebe-nach-rechts-16-Einheit 900 innerhalb der MAC Einheit 128 in einigen Ausführungsbeispielen der Erfindung, sieht eine zusätzliche Brauchbarkeit gegenüber anderen Bauarten der MAC Einheiten vor. Insbesondere erleichtert die Verwendung der Schiebe-nach-rechts-16-Einheit 900 die Ausführung von Doppelgenauigkeitsoperationen in einer reduzierten Anzahl von Taktzyklen. Um beispielsweise eine Doppelpräzisionsoperation auszuführen, bei der eine 32 Bitzahl (A) mit einer 16 Bitzahl (B) multipliziert wird, werden die niedrigen 16 Bits (A1) der 32 Bitzahl als erstes mit der 16 Bitzahl (B) während des ersten Taktzyklus multipliziert, was einen Zwischenwert I ergibt, der in der Registerbank 120 gespeichert wird.
  • Während eines zweiten Taktzyklus wird der Zwischenwert I in die Schieberechts-16-Einheit 900 eingegeben und um 16 Bits nach rechts verschoben. Zusätzlich werden die 16 Bitzahl C und die hohen 16 Bits der 32 Bitzahl A (Ah) multipliziert und das Ergebnis wird zu dem nach rechts geschobenen Zwischenwert I von der Schiebe-rechts-16-Einheit 900 addiert. Auf diese Weise wird eine doppelt genaue Multiplikation in zwei Taktzyklen anstelle von drei ausgeführt. Im Allgemeinen machen Doppelgenauigkeitsoperationen es erforderlich, dass eine oder mehrere Variablen relativ zu den anderen Variablen verschoben werden, und insofern wird die Anzahl von Zyklen, die notwendig sind um die Doppelgenauigkeitsoperation auszuführen reduziert, wenn gestattet wird, dass der Schiebeschritt während des gleichen Taktzyklus ausgeführt wird, wie eine der Multiplikations- oder Akkumulationsoperationen.
  • Normalerweise währen drei Taktzyklen erforderlich, da die erste Multiplikationsoperation, die Verschiebeoperation und die zweite Multiplizieroperation typischerweise einen Taktzyklus erfordern. Die Verwendung der Schiebeschaltung reduziert daher die Anzahl der erforderlichen Taktzyklen für die Durchführung der, eine doppelte Präzision oder Genauigkeit aufweisenden Multiplikation. Andere Verarbeitungen oder Operationen mit doppelter Genauigkeit, die unterschiedlich bemessene Operanden verwenden, werden auch durch die Verwendung der Rechtsschiebeeinheit 900 erleichtert.
  • III. Befehlskonfiguration
  • A. Übersicht
  • 9 ist ein Blockdiagramm, welches die Befehlshierarchie veranschauchlicht, die in dem exemplarischen Ausführungsbeispiel der Erfindung verwendet wird. Der Block 402 zeigt die variable Länge vollständiger Befehle, die 16, 32 oder 48 Bits aufweisen, welche die Verarbeitung oder Operation des DSP steuern. Die eine variable Länge besitzenden Befehle werden ihrerseits von Befehlsfragmenten gebildet, und zwar einschließlich allgemeiner Befehlsfragmente und Speicherbewegungs- und Programmfluss (MMPF = memory move and program flow)-Befehle, wie dies im Block 403 gezeigt ist. Die allgemeinen Befehlsfragmente, die in dem exemplarischen Ausführungsbeispiel der Erfindung verwendet werden, umfassen die folgenden: MAC8, MAC16, ALU8, ALU16, DMOV16, DMOV24 und DL40 Befehlsfragmente. Die MMPF Befehlsfragmente umfassen: OneMem11, TowMem19, TwoMov19 und ThreeMem24 Befehlsfragmente. Die MMPF Befehlsfragmente werden gebildet durch die MMPF Befehlssubfragmente, die im Block 406 gezeigt sind. Die MMPF Befehlssubfragmente weisen folgendes auf: LD()9, LD(B), ST(A), ST(B), LS(C), DMOVA, DMOVG und PF8. Die verschiedenen vollen Befehlen, Befehlsfragmente und Befehlssubfragmente werden im Einzelnen unten beschrieben.
  • B. Volle Befehle
  • In dem bevorzugten Ausführungsbeispiel der Erfindung wird die DSP unter Verwendung voller Befehle, die Längen von 16, 32 und 48 Bits aufweisen, gesteuert. Die vollen Befehle werden ihrerseits gebildet durch Kombination von einem oder mehreren Befehlsfragmenten. Die vollen Befehle sind derart konfiguriert, dass die darauffolgende Speicherung innerhalb des Befehlsspeichers 152 und die Verarbeitung durch die DSP gestattet ist. Das Format und die Konfiguration der vollen Befehle werden unten beschrieben, und zwar gefolgt von dem Format und der Konfiguration der Befehlsfragmente. Während des Betriebs verarbeitet der DSP einen vollen Befehl in jedem Taktzyklus. Auf diese Weise können Mehrfachverarbeitungen oder Mehrfachoperationen während der Verarbeitung jedes vollen Befehls ausgeführt werden, und zwar mit bestimmten Operationen, bestimmt durch den speziellen Satz von ausgewählten Befehlsfragmenten.
  • Das Format der drei vollen Befehle, die in dem exemplarischen Ausführungsbeispiel der Erfindung verwendet werden, sind in der Tabelle 3 gezeigt.
  • Figure 00360001
    Table 3. Full instruction formats.
  • Figure 00360002
    Tabelle 3. Volle Befehlsformate.
  • Der fünf (5) Kopfteil, der für jeden vollen Befehl verwendet wird, zeigt die Länge des vollen Befehls an und einige zusätzliche Information hinsichtlich der Inhalte des vollen Befehls. Das Format des Kopfteils, welches in dem exemplarischen Ausführungsbeispiel der Erfindung verwendet wird, ist in Tabelle 4 enthalten.
  • Figure 00370001
    Table 4. Full instruction header formats.
  • Figure 00370002
    Tabelle 4. Voller Befehl, Kopfformmate.
  • Jeder volle Befehl (16, 32 und 48 Bit lang) enthält einen oder mehrere Befehlsfragmente. Die Tabelle 5 ist eine Liste der verfügbaren Befehlsfragmente in dem exemplarischen Ausführungsbeispiel der Erfindung. Eine detailliertere Beschreibung des Formats und der Verarbeitung der Befehlsfragmente wird nach der Diskussion der vollen Befehle geliefert.
  • Figure 00370003
    Table 5. Instruction fragments.
    • *indicates the field can be nop'ed using a certain bit pattern.
  • Figure 00380001
    Tabelle 5. Instruktionsfragmente
    • *zeigt an, dass das Feld verneint (nop'ed) werden kann unter Verwendung eines bestimmten Bitmusters.
  • Die Tabellen 6 bis 8 sehen verschiedene Kombinationen von Befehlsfragmenten vor, die innerhalb der 49, 32 und 16 Bitvollbefehle in Übereinstimmung mit dem exemplarischen Ausführungsbeispiel der Erfindung verwendet werden können. Obwohl andere Kombinationen von Befehlsfragmenten mit der Verwendung und dem Betrieb der Erfindung konsistent sind, werden gewisse Merkmale der hier offenbarten Kombination bevorzugt, wie dies unten im Einzelnen diskutiert ist. Zu dem sei bemerkt: wo alle oder ein Teil der vollen Befehle als "reserved" (reserviert) dargestellt sind, wird keine spezielle Befehlskombination spezifiziert oder in dem beschriebenen Ausführungsbeispiel verwendet, aber die zukünftige Verwendung dieser Vollbefehlskombinationen wird ins Auge gefasst.
  • Die Tabelle 6 sieht das Formatieren für 16 Bitvollbefehle vor, und zwar bei Ausführung gemäß dem exemplarischen Ausführungsbeispiel der Erfindung, was hier beschrieben ist. Der Vollbefehl weist fünf (5) Kopfteile, gefolgt von elf (11) Befehlsbits auf.
  • Figure 00390001
  • Note:
    • The 16-bit NOP is obtained using the NOP in MAC8.
  • Table 6. 16-bit full instruction format.
    • 11 0
      Header 11 Inst. Bits
      Kopfteil 11 Befehlsbits
  • Bemerkung:
    • das 16 Bit NOP wird unter Verwendung des NOP in MAC8 erhalten.
  • Tabelle 6. 16 Bitvollbefehlsformat.
  • Die Kopfteilbits zeigen die Länge des Befehls an und auch einige Information hinsichtlich der Art des Befehls. Für ein Kopfteil von 00000 werden die am wenigsten signifikanten drei hinteren Bits (tail bits) dazu verwendet, um die ausgeführte Operation weiter zu spezifizieren. Insbesondere zeigen die Endbits (tial bits) von 000 an, dass die verbleibenden acht Bits ein MAC8 Befehlsfragment enthalten. Die Endbits von 001 zeigen an, dass die verbleibenden acht Bits ein ALU8 Befehlsfragment enthalten. Für andere End- oder Tailbitskombinationen sind keine Befehle spezifiziert.
  • Für einen Kopfteil von 00001 enthalten die verbleibenden elf (11) Bits ein OneMem11 Befehlsfragment. Durch Vorsehen eines 16 Bit Vollbefehls, der ALU, MAC oder Speicherbewegungsoperationen auszuführen gestattet, können die üblichsten Operationen oder Arbeitsweisen mit dem kürzesten vollen Befehl ausgeführt werden. Da der kürzeste Befehl die geringste Menge von Speicher zum Zwecke der Speicherung benötigt, reduziert die Verwendung des 16 Bit Vollbefehls, wie beschrieben, die Menge oder Größe des Befehlsspeichers der notwendig ist, um einen bestimmten oder speziellen Satz von Operationen auszuführen. Somit werden die Gesamtgröße des DSP und daher die Kosten und der Leistungsverbrauch auch reduziert.
  • Der 16 Bitbefehl wird typischerweise dann verwendet, wenn die Bedingungen derart sind, dass nur eine oder eine reduzierte Anzahl von Operationen ausgeführt werden kann. Typischerweise kann die Größe des Instruktionsbefehls, der notwendig ist, um nur eine Operation zu spezifizieren, reduziert werden und somit die Verwendung des Halbwortes oder 16 Bitbefehls zur Durchführung oder Ausführung einer Operation. Zusätzlich kann der 16 Bitbefehl für eine MAC, ALU und Speicherbewegungs- oder Programmflussoperation verwendet werden, die fast alle Operatioen, von denen erwartet wird, dass sie durchgeführt werden können, umfasst.
  • Tabelle 7 veranschaulicht die Befehlsfragmentkombinationen (instruction fragment combinations) und die zugehörige Formatierung eines 32 Bitvollbefehls (full instruction) bei Konfigurierung gemäß einem Ausführungsbeispiel der Erfindung.
  • Figure 00400001
    Table 7. 32-bit full instruction format. Tabelle 7. 32 Bitvollbefehlsformat.
  • Wie oben erwähnt, zeigen die fünf Kopfbits die Länge des Vollbefehls an und auch die spezielle Kombination von Befehlsfragmenten. Beispielsweise zeigt ein Kopfteil von 00010 an, dass die verbleibenden 27 Instruktionsbits ein ThreeMem 27 Befehlsfragment enthalten, und ein Kopfteil (header) von 00011 zeigt an, dass die verbleibenden 27 Befehlsbits ein ALU8 Befehlsfragment enthalten, und zwar gefolgt von einem TwoMem19 Befehlsfragment.
  • Für ein Kopfteil von 01111 zeigen die am wenigsten signifikanten End- oder Tailbits ferner die Kombination von Befehls- oder Instruktionsfragmenten. Beispielsweise zeigen für ein am wenigsten signifikantes End- oder Tailbit von 0 die nächsten zwei am wenigsten signifikanten Bits an, ob die verbleibenden 24 Bits ein DMOV24, ein ALU16 gefolgt von einem MAC8, oder MAC16 gefolgt von einem ALU8 Befehlsfragmenten enthalten. Andere End- oder Tailbitszustände, wie beispielsweise ein am wenigsten signifikantes Endbit von 1 spezifizieren reservierte Kombinationen.
  • Der 32 Bitbefehl gestattet, dass viele der am häufigsten durchgeführten Operationen gleichzeitig durchgeführt werden, was das "Pipelining" erleichtert und auch die Befehlsgröße reduziert. Es ist beispielsweise üblich, zwei Fetch- oder Hohloperationen auszuführen, und eine Multiplizier-/Akkumulieroperation für derartige Anwendungen wie beispielsweise Filtern. Der 32 Bitbefehl gestattet, dass derartige Sätze von Operationen in einer "Pipeline"-Art ausgeführt werden, wobei ein voller 48 Bit Instruktionsraum oder -platz nicht erforderlich ist.
  • Zudem gestattet der 32 Bitbefehl die gleichzeitige Ausführung von MAC und ALU Operationen und auch einen Programmsprung (program jump) und Aufrufoperationen (call operations) und zwar ohne die Verwendung der größten Befehlsgröße.
  • Die Tabelle 8 veranschaulicht die Befehlsfragmentkombinationen und das Format für 48 Bitvollbefehle bei Durchführung gemäß einem Ausführungsbeispiel der Erfindung.
  • Figure 00420001
    Table 8. 48-bit full instruction format. Tabelle 8. 48 Bitvollinstruktions- oder Befehlsformat.
  • Die fünf Kopfteilbits (header bits) spezifizieren die Länge des Befehls (instruction) und auch die spezielle Befehlsfragmentkombination. Beispielsweise zeigen Kopfbits von 00100 an, dass die 43 verbleibenden Befehlsbits Folgendes aufweisen: DMOV24, MAC8 und OneMem11 Instruktions- oder Befehlsfragmente. Die Kopfbits von 10011 zeigen an, dass die verbleibenden 43 Bits Folgendes aufweisen: ALU16, MAC8 und TwoMem19 Befehlsfragmente.
  • Für Kopfbits von 11111 zeigen die drei am wenigsten signifikanten End- oder Tailbits ferner die Befehlsfragmente an, die in den verbleibenden Instruktionsbits enthalten sind. Beispielsweise zeigen die Tailbits von 000 an, dass die verbleibenden 40 Befehlsbits Folgendes enthalten: MAC16 und DMOV24 Instruktionsbefehle. Die Tail- oder Endbits 001 zeigen an, dass die verbleienden 40 Instruktionsbits Folgendes enthalten: MAC8, ALU8 und DMOV24 Instruktionsfragmente. Die Tailbits 110 zeigen an, dass die verbleibenden 40 Instruktionsbits ein DL40 Instruktionsfragment enthalten.
  • Die in 48 Bitvollbefehlen vorgesehenen Instruktionsfragmentkombinationen gestatten die Ausführung von vielen Operationen gleichzeitig und daher schneller als wenn dies in Serie ausgeführt würde. Beispielsweise können mehrere 48 Bitvollbefehle gestatten, dass ALU Operationen, MAC Operationen und Speicheroperationen alle gleichzeitig ausgeführt werden. Die Speicheroperationen umfassen Folgendes: Lade-, Speicher- und Datenbewegungsoperationen und oftmals wird gestattet, dass auf Mehrfachspeicherstellen (mulitple memory locations) sogleich zugegriffen werden kann.
  • Der 48 Bitbefehl gestattet die Ausführung von Mehrfachoperationen in Kombination mit ALU Operationen und Datenhohl- (fetch) und Programmflussoperationen und zwar alles in einer Pipeline Art und Weise. Dies kann zweckmäßig sein zur Filterung bei Kombination mit Skalieroperationen, die oftmals ausgeführt werden und zwar durch Durchführung einer MAC Operation, gefolgt von einer ALU (z.B. Verschieben) Operation. Andere Anwendungen, die MAC und ALU Operationen verwenden, umfassen das Kombinieren von drei oder mehr Datenströmen. Der 48 Bitbefehl, insbesondere in Verbindung mit der Verwen dung der Drei-Bus-Architektur, erleichtert das "Pipelining" der Operationen in diesen Fällen.
  • Dies erhöht in effektiver Weise die Anzahl von Operationen, die in einem einzigen 49 Bitvollbefehl ausgeführt werden, und zwar auf fünf (MAC, ALU, FETCH1, FETCH2 und STORE (Speicher)). Die Fähigkeit zur gleichzeitigen Ausführung von Mehrfachbefehlen in dem DSP wird im Allgemeinen weiter verbessert durch die Verwendung eines DSP mit mehrfachen internen Bussen zur Kopplung der verschiedenen Bearbeitungssysteme innerhalb der DSP. Ein unterschiedlicher Satz von Daten kann bewegt und gleichzeitig darauf zugegriffen werden, während der Verwendung unterschiedlicher Busse.
  • Die Veränderung der Länge des Befehls, basierend auf der Anzahl von Operationen, die durchgeführt werden können, erhöht weiter die Effizienz mit der der Befehlsspeicher verwendet wird. Irgendeine spezielle Aufgabe hat Perioden, wo Mehrfachoperationen gleichzeitig ausgeführt werden können und andere Perioden, wo weniger oder nur eine Operation ausgeführt werden kann. Durch Einstellen der Länge des Befehls entsprechend der Anzahl von Operationen, die gleichzeitig ausgeführt werden können, wird die Größe des Befehlsspeichers reduziert.
  • Bei Kombination mit der Verwendung einer dichten Befehlspackung, wovon ein beispielhaftes Verfahren oben beschrieben wurde, wird der erforderliche Befehlsspeicher weiter reduziert. Die Verwendung von eine variable Länge besitzenden Befehlen oder dichtgepackten Befehlen, oder von beidem, erleichtert die Verwendung einer Mehrfach-Bus-Architektur und einer Mehrfachzugriffsregisterbank und zwar dadurch, dass man mehr Schaltungsfläche für die Implementierung dieser Merkmale verfügbar macht. Somit gilt Folgendes: die Kombination dieser Aspekte der Erfindung kombinieren sich in synergistischer Weise, um gleichzeitig die Vorteile einer verbesserten Performance und einer verbesserten Effizienz vorzusehen.
  • C. Befehlsfragmente (Instruction Fragments)
  • Wie oben erwähnt, weisen Vollbefehle einen Satz von einem oder mehreren Instruktionsfragmenten, gruppiert zusammen in vordefinierten Arten, auf. Der Satz von verfügbaren Befehlsfragmenten in dem beispielhaften Ausführungsbeispiel der vorliegenden Erfindung ist in Tabelle 5 gezeigt. Die Befehlsfragmente und die Kombinationen, die verfügbar gemacht werden unter Verwendung der Vollbefehle, vorgesehen in dem exemplarischen Ausführungsbeispiel der Erfindung, sind designiert oder bestimmt um zu gestatten, dass der Satz von Operationen, der am wahrscheinlichsten ausgeführt werden kann, kombiniert wird derart, dass die Menge oder Größe des Befehlsspeichers, der notwendig ist um eine gegebene Operation auszuführen, reduziert wird. Eine Diskussion der Operation und des Formats der verschiedenen Instruktionsfragmente verwendet in dem exemplarischen Ausführungsbeispiel der Erfindung folgt.
  • C1. Befehlsfragment Nomenklatur (Instruction Fragment Nomenclature)
  • In der gesamten folgenden Diskussion der Befehlsfragmente und Subfragmente werden die folgenden Abkürzungen verwendet, um auf die Register, gelistet in den Tabellen 9 und 10 unten, Bezug zu nehmen. Zusätzlich sind die speziellen Bitcodes (mappings) verwendet in dem exemplarischen Ausführungsbeispiel der Erfindung links gezeigt.
  • Figure 00460001
  • Notes:
    • L3 does not have conditionals.
  • Table 9. Instruction fragment nomenclature and codes.
  • Bemerkungen:
    • L3 hat keine Bedingungen (conditionals).
  • Tabelle 9. Befehlsfragment Nomenklatur und Codes.
  • Figure 00470001
    • regA consists of all the registers that can be loaded from/stored to A memory.
    • regB consists of all the registers that can be loaded from/stored to B memory.
    • regC consists of all the registers that can be loaded from/stored to C memory.
  • Table 10. Instruction fragment nomenclature and codes.
    • regA besteht aus allen Registern, die geladen werden können von/gespeichert zum A Speicher.
    • regB besteht aus allen Registern, die geladen werden können von/gespeichert zum B Speicher.
    • regC besteht aus allen Registern, die geladen werden können von/gespeichert zum C Speicher.
  • Tabelle 10. Instruktions- oder Befehlsfragment Nomenklatur und Codes.
  • C.2 Befehlsfragment Beschreibung
  • Der Satz von Befehlsfragmenten weist zwei Typen auf: MAC Instruktionsfragmente: MAC8 und MAC16. Die MAC8 Befehlsfragmente unterstützen signierte-nicht signierte und signierte-signierte Mehrfachtypen, wobei die Ergebnisse in den Akkumulatoren L0 oder L1 gespeichert werden. Das MAC8 Befehlsfragment erhält die Instruktion oder den Befehl RAM und zwar dadurch, dass eine MAC Operation gestattet wird, unter Verwendung eines 16 Bitvollbefehls, und für viele Parallelbefehlskombinationen, die erfordern, dass die MAC Operationen in 32 Bitbefehl codiert werden, anstelle von 48 Bitbefehlen. Im Allgemeinen entspricht die Verarbeitung, ausgeführt in einem MAC8 Befehl der folgenden Gleichung:
  • Figure 00480001
  • Wie in der Gleichung (2) gezeigt, gestattet das MAC8 Befehlsfragment, dass die Inhalte der Register L0 oder L1 mit dem Produkt der Register R0, R2. R4 und R6 und R0, R1, R3 und R5 summiert werden, oder direkt auf das Produkt der Register gesetzt werden. Zudem können signierte oder nicht-signierte Mehrfache spezifiziert sein. Durch Begrenzen der Anzahl der Register für die die MAC Operationen unter Verwendung eines MAC8 Befehls ausgeführt werden können, kann die Länge des Befehls auf 8 Bits gehalten werden, was gestattet, dass die MAC Operationen unter Verwendung eines kürzeren 8 Bit Befehlsfragments ausgeführt werden.
  • Die spezielle durch den MAC8 Befehl ausgeführte Operation wird durch die Werte der acht Bits spezifiziert, die den Befehl ausmachen, wie dies in Tabelle 11 gezeigt ist.
  • Figure 00490001
    Table 11. MAC8 instruction fragment format. Tabelle 11. MAC8 Befehlsfragmentformat.
  • SU/SS spezifiziert signierte oder nicht-signierte Multiplizität "Multiply". Die Codes für die Spezifikation verschiedener Operationen innerhalb des MAC8 Befehlsfragments sind in Tabelle 12 angegeben.
  • Figure 00490002
    Table 12. MAC8 instruction fragment codes. Tabelle 12. MAC8 Befehlsfragmentscodes.
  • Auf diese Weise platziert ein MAC8 Befehl von 0×99 Stellen die Summe der Inhalte des Registers L0 mit dem unsignierten Produkt der Register R0 und R3 in Register L0.
  • Das MAC16 Befehlsfragment sieht zusätzliche Flexibilität vor, und zwar durch Gestatten, dass zusätzliche Register in dem Multiplizier-Akkumuliervorgang bzw. der Multiplizier-Operation verwendet werden. Gleichung (3) gibt die Operationen an, die unter Verwendung des MAC16 Befehlsfragment ausgeführt werden können.
  • Figure 00500001
  • Beispielsweise kann jeder Akkumulator (L0 – L3) als eine Bestimmung (destination) verwendet werden, obwohl nicht alle Kombinationen von Akkumulatoren in Multiplizier-Akkumulierinstruktionen gestattet sind. Das CPS Feld signalisiert, dass ein Coprozessor eine bestimmte Operation parallel ausführen soll. Die spezielle, durch den MAC16 Befehl auszuführende Operation wird durch die Werte der 16 Bits spezifiziert, die den Befehl, wie in Tabelle 13 zu sehen, ausmacht.
  • Figure 00500002
    Table 13. MAC16 instruction fragment format Tabelle 13. MAC16 Instruktionsfragmentformat.
  • Die Codes zur Spezifizierung verschiedener Operationen innerhalb des MAC16 Befehlsfragments sind in Tabelle 14 aufgelistet.
  • Figure 00510001
  • Notes:
    • The instruction L0=R0*R0(SU)<<0 is decoded as a NOP. mtype 11 is used as RND for straight multiplies and shift accumulator right by 16 for signed-signed multiply/accumulate instructions.
    • MAC instructions with mtype SU and macOp1 = macOp2 are illegal.
  • Table 14. MAC16 instruction fragment codes.
  • Bemerkungen:
    • Der Befehl L0=R0*R0(SU)<<0 wird decodiert und zwar als NOP.
    • mtype11 wird als RND für unmittelbare Vielfache verwandt und verschiebe-Akkumulator-nach rechts um 16 für signierte-signierte Multiplizier/Akkumulierbefehle.
    • MAC Befehle mit mtype SU und macOp1 = MacOp2 sind illegal.
  • Tabelle 14. MAC16 Befehlsfragmentcodes.
  • Das MAC16 Befehlsfragment gestattet Linksverschiebungen (left shifts) bis zu 3 und kann Rundungsoperationen während direkter (straight) Vielfacher (multiplies Multiplikationen) ausführen (no accumulate = keine Akkumulation), und zwar erfolgt die Rundung nach der Verschiebung. Wenn eine Akkumulation ausgeführt wird, kann der hinzuzufügende Akkumulator heruntergeshiftet werden, und zwar um 16, parallel mit einer signierten-signierten Multiplikation. Das CPS Bit ist das Coprozessor Strobe Bit zur Anzeige, dass Daten verwendet in der MAC Operation zu einem Coprozessor gesandt werden sollten.
  • Es sei bemerkt, dass das MAC8 Instruktionsfragment einen Subsatz von Operationen ausführt, die durch den MAC16 ausgeführt werden können. Der spezielle Satz von Befehlen (instructions), ausgewählt für das MAC8 Befehlsfragment sind die am üblichsten ausgeführten, von dem Satz von Operationen, der durch Verwendung des MAC16 Befehlsfragments ausgeführt werden kann. Dies spart Programmspeicher dadurch, dass gestattet wird, dass die Mehrheit der MAC Operationen unter Verwendung des MAC8 Instruktionsfragments ausgeführt wird.
  • Das 8 Bit ALU8 Befehlsfragment weist die ALU Operationen auf, die am üblichsten parallel mit den MAC Operationen (MAC8 und MAC16) ausgeführt werden können, die keine unmittelbaren Daten enthalten. Alle ALU8 Verschiebe- oder Shiftoperationen sind arithmetische Verschiebungen, die ein internes Schieberegister (SR) verwenden, um Befehlscodierbits zu sparen. Die unter Verwendung des ALU8 Instruktionsfragments ausgeführten Operationen sind in Tabelle 15 gezeigt.
  • Figure 00530001
    • LS is load source (L0 – L3) and LD is load destination (L0 – L3).
  • Table 15. ALU8 instruction fragment operations.
    • NOP (needed for parallel combinations) = NOP (erforderlich für parallele Kombinationen.
    • Determine Block normalization factor = Bestimme Blocknormalisationsfaktor.
    • Copy accumulator (no saturation) = Copy Akkumulator (keine Sättigung). Shift accumulator) = Schiebeakkumulator.
    • Shift and round accumulator = Schiebe- und Rundungsakkumulator.
    • Accumulate shifted accumulator = Akkumulierer verschoben in Akkumulator.
    • Add or substract accumulators = Addiere oder Subtrahiere Akkumulatoren.
    • Add/subtract accs result free (seet flags) = Addiere/Subtrahiere Akkumulatorresultat frei (Setzte Flaggen bzw. Zeichen).
    • LS ist eine Lastquelle (load source) (L0 – L3) und LD ist die Lastbestimmung (Iod destination) (L0 – L3).
  • Tabelle 15. ALU8 Befehlsfragmentoperationen.
  • Die speziellen, durch das ALU8 Befehlsfragment ausgeführten Operationen werden durch die Werte der acht Bits spezifiziert, die das Befehlsfragment, wie in Tabelle 16 gezeigt, bilden.
  • Figure 00530002
    Table 16. ALU8 instruction fragment format. Tabelle 16. ALU8 Befehlsfragmentformat.
  • Die speziellen Codes, die zur Spezifizierung der unter Verwendung des ALU8 Instruktionsbefehls verwendet werden, sind in Tabelle 17 enthalten.
  • Figure 00540001
  • Note:
    • The all-zeros instruction L0=DETNORM(L0) is decoded as a NOP.
    • Instructions where LD=DETNORM(LD) are illegal.
    • The ALU8 clear accumulator instruction is LD=LD–LD.
  • Table 17. ALU8 instruction fragment codes.
    • Sign = Vorzeichen
  • Bemerkung:
    • Der aus lauter Nullen bestehende Befehl L0=DETNORM(L0) wird als ein NOP decodiert.
    • Instruktionen, wo LD=DETNORM(LD) ist, sind illegal.
    • Der ALU8 "clear" oder Löschakkumulatorbefehl ist LD=LD–LD.
  • Tabelle 17. ALU8 Instruktionsfragmentcodes.
  • Das ALU16 Befehlsfragment gestattet, sowohl arithmetische als auch logische Verschiebungen (shifts). Die durch das ALU16 Befehlsfragment ausgeführten speziellen Operationen sind in Tabelle 18 angegeben.
  • Das Zeichen << signifiziert eine arithmetische Verschiebung, wohingegen das Zeichen << eine logische Verschiebung signifiziert.
  • The notation << signifies an arithmetic shift, while <<< signifies a logical shift.
  • Figure 00550001
    • The instuction L0=SET(L0) is decoded as a NOP.
  • Table 18. ALU16 instruction fragment operations.
    • Immediate = unmittelbar
    • For parallel combinations = für parallele Kombinationen
    • Conditionally copy accumulator = konditionell Kopierakkumulator
    • Conditionally add/subtract accs. = konditionell Additions-/Subraktionszugriff
    • Normalize accumulator = Normalisierakkumulator
    • Absolute value of accumulator = Absolutwert des Akkumulators
    • Negate accumulator = negiere Akkumulator
    • Invert accumulator (1's complement) = Invertierungsakkumulator (1's Complement).
    • Create bit mask = Schaffe Bitmaske
    • Create inverted bit mask = Schaffe invertierte Bitmaske.
    • Shift [& round] acc. = Verschiebe [und runde] Akkumulator.
    • Shift and add accs. = Verschiebe und addiere Akkumulatoren.
    • Add regs. = Addiere Register
    • Add immediate = Addiere unmittelbar
    • Load immediate = Lade unmittelbar
    • Load SR with immediate sum = Lade SR mit unmittelbarer Summe
    • Load SR immediate = Lade SR unmittelbar
    • Der Befehl L0=SET(L0) wird als NOP decodiert.
  • Tabelle 18. ALU16 Befehlsfragmentoperationen
  • Das Format des ALU16 Instruktions- oder Befehlsfragments ist in Tabelle 19 gezeigt.
  • Figure 00570001
    Table 19. 16-bit ALU instruction fragment format and codes. Tabelle 19. 16-Bit ALU Instruktionsfragmentformat und Codes.
  • Die speziellen, durch das ALU16 Befehlsfragment ausgeführten Operationen sind durch die Werte der Bit spezifiziert, die das Instruktionsfragment wie in Tabelle 20 gezeigt, bilden.
  • Figure 00580001
  • Notes:
    • The all zeros instruction L0=SET(L0); is decoded as a NOP.
    • For BIT instructions (h,i,j), the assembler encodes immediate6 by appending a zero sign bit with immediate5 (this simplifies decoding).
  • Table 20. ALU16 instruction fragment codes.
    • Arithmetic Shift = arithmetische Verschiebung
    • Logical Shift = logische Verschiebung
    • Reserverd = reserviert
  • Bemerkungen:
    • Der lauter Nullen enthaltende Befehl L0=SET(L0) wird als NOP decodiert.
    • Für BIT Befehle (h,i.j) codiert der Assembler immediate 6, d.h. unmittelbar 6 und zwar durch eines Nullvorzeichenbits mit immediate5 (dies vereinfacht das Decodieren).
  • Tabelle 20. ALU16 Befehlsfragmentcodes.
  • Das DMOV16 Befehlsfragment ist ein 16 Bitbefehlsfragment zur Ausführung einer unterschiedlichen Datenbewegung, Dateneingabe und Datenausgabeoperationen, wie in Tabelle 21 angegeben.
  • Figure 00590001
  • Table 21. DMOV16 instruction fragment operations.
    • Load Loop Counter Immediate (push) = Lastschleifenzähler unmittelbar (Schub)
    • Load Modify Register Immediate = Lastmodifizierregister unmittelbar
    • Load Circular Length Register Immediate = Lastzirkularlängenregister unmittelbar
    • Inport Operation = Eingabeoperation
    • Outport Operation = Ausgabeoperation
    • Outport Value on Bus A = Ausgabewert auf Bus A
    • Outport Value on Bus B = Ausgabewert auf Bus B
  • Tabelle 21. DMOV16 Befehlsfragmentoperation.
  • Das Format und die Codes, die verwendet werden um die Operation auszuführen, die unter Verwendung des DMOV16 Befehlsfragments verfügbar sind, sind in Tabelle 22 angegeben.
  • Figure 00600001
  • Notes:
    • The instruction LC=0 is decoded as a NOP.
    • mmediate10 is signed, immediate9 and immediate11 are unsigned.
  • Table 22. DMOV16 instruction fragment format.
  • Reserved (all zeros) = Reservier (alle Nullen)
  • Bemerkungen:
    • Der Befehl LC=0 wird als NOP decodiert.
    • immediate10 ist signiert, immediate9 und immediate 11 sind nicht signiert.
  • Tabelle 22. DMOV16 Befehlsfragmentformat.
  • Der Befehl OUTPORTA(port_addr) liest den Wert auf Abus und gibt ihn an den designierten Port oder Anschluss aus. Durch Lesen eines Wertes aus dem Speicher A gleichzeitig kann dieser Befehl dazu verwendet werden, um einen Wert direkt vom Speicher A zum Port zu schicken. OUTPORTB(port_addr) arbeitet in ähnlicher Weise.
  • Das DMOV24 Befehlsfragment ist ein 24 Bit Befehlsfragment zur Ausführung unterschiedlicher Lade/Speicherregister direkt (load/store register direct) oder Laderegister unmittelbar (load register immediate) Operationen gemäß Tabelle 23.
  • Figure 00620001
    • Start Registers are located in the AGU units.
  • Table 23. DMOV24 instruction fragment operations.
    • Load Address Register immediate = Lastadressenregister unmittelbar
    • Load Circular Star Register immediate = Lastzirkularstartregister unmittelbar
    • Loop until end address = Schleife bis Endadresse Function Call = Funktionsruf
    • [Conditional] [Delayed] Jump = Konditionell, verzögert Sprung Start Register sind in den AGU Einheiten angeordnet.
  • Tabelle 23. DMOV24 Befehlsfragmentoperationen.
  • Tabelle 24 sieht das Format und einige Codes vor, die verwendet werden, um die verschiedenen Operationen auszuführen, die unter Verwendung des DMOV24 Befehlsfragments verfügbar sind, und zwar gemäß dem exemplarischen Ausführungsbeispiel der Erfindung.
  • Figure 00630001
  • Table 24. DMOV24 instruction fragment format and codes.
  • Bemerkungen:
    • Adresse 14 und Adresse 17 sind nicht signiert, immediate16 ist signiert.
  • Tabelle 24. DMOV24 Befehlsfragmentformat und Codes.
  • Es sei bemerkt, dass für DMOV24 und auch andere Befehlsfragmente einige Operationen zweimal codiert sind. Beispielsweise codieren die Formate, angegeben in Reihen bzw. Zeilen (i) und (j) den gleichen Arbeitsvorgang bzw. Operation, wobei das eine die Verwendung des unmittelbaren bus Im1 und die andere die Verwendung des unmittelbaren bus Im2 spezifiziert. Das zweifache Codieren gestattet, dass das Befehlsfragment mit einer größeren Verschiedenheit von anderen Befehlsfragmenten kombiniert wird, die die Verwendung des Immediate bus1 oder Immediate bus2 auch erfordern können.
  • Das 40 Bit Dual Last- oder Loadbefehlsfragment (DL40) ist ein 40 Bit Befehlsfragment zur Durchführung von unmittelbaren Lade (load) oder Adressenlade (address load operations) Operationen. Die Bestimmung der speziellen in dem exemplarischen Ausführungsbeispiel durchgeführten erfindungsgemäßen Operationen sind in Tabelle 25 gezeigt.
  • Figure 00640001
    Table 25. DL40 instruction fragment format. Tabelle 25. DL40 Befehlsfragmentformat.
  • Das Format des DL40 Befehlsfragments für jede Operation ist in Tabelle 26 vorgesehen.
  • Figure 00650001
  • Table 26. DL40 instruction fragment format and codes:
  • Bemerkungen.
    • Address14 ist unsigniert, immediate16 und immediate32 sind signiert.
  • Tabelle 26. DL40 Instruktionsfragmentformat und Codes.
  • Wie in Tabelle 5 gezeigt, sind vier Arten von Speicherbewegungs- und Programmflussbefehlsfragmenten in dem exemplarischen Ausführungsbeispiel der Erfindung vorgesehen, wobei eine Liste in der Tabelle 27 angegeben ist.
  • Figure 00660001
  • Table 27. Memory move and program flow instruction fragments.
  • Tabelle 27. Speicherbewegungs- und Programmflussbefehlsfragmente.
  • Jedes Speicherbewegungs-und Programmflussbefehls (MMPF)-Fragment weist einen Satz von MMPF Subfragmenten, angegeben in Tabelle 28, auf.
  • Instruction Subfragments
    Figure 00660002
  • Table 28. Combination data move and program flow instruction subfragments.
    • Instructions Subfragments = Instruktions- oder Befehlssubfragmente
    • Load Memory A indirect = Lade Speicher A indirekt
    • Store Memory A indirect = Speicher Speicher A indirect
    • Load Memory B indirect = Lade Speicher A indirect
    • Store Memory B indirect = Speichere Speicher B indirect
    • Load/Store Memory C indirect = Lade/speichere Speicher C indirect
    • Bus A Register Move = Bus A Register Bewegung
    • Bus B Register Move = Bus B Register Bewegung
    • 8-bit Program Flow = 8-Bit Programmfluss
  • Tabelle 28. Kombinationsdatenbewegungs- und Programmflussbefehlsflussfragmente
  • Das Format und die Operation der MMPF Befehlsfragmente sind zuerst diskutiert und zwar gefolgt von einer detaillierten Diskussion des Formats und der Operation der MMPF Subfragmente.
  • Ein OneMem11 MMPF Befehlsfragment wird dazu verwendet, um Einzelspeicherlade- und Speicheroperationen, Datenbewegungsoperationen und Programmflussoperationen auszuführen. In dem hier vorgesehenen exemplarischen Ausführungsbeispiel werden acht unterschiedliche Operationen unter Verwendung des OneMem11 MMPF Befehlsfragments ausgeführt, und zwar mit der speziellen Operation, angedeutet oder angezeigt durch die ersten drei Bits von elf Bitfragmenten, wie in Tabelle 29 gezeigt, welche die Operationen listenmäßig angibt, die unter Verwendung eines OneMem11 Datenbewegungsbefehlsfragments ausgeführt werden können.
  • Figure 00670001
    Table 29. OneMem11 instruction fragment format. Tabelle 29. OneMem11 Befehlsfragmentformat.
  • Das TwoMem19 MMPF Befehlsfragment ist ein 19 Bit Befehlsfragment, das acht unterschiedliche Informationen von Speicherlade- und Speicherungsoperationen, wie in Tabelle 30 angegeben, auszuführen gestattet.
  • Figure 00680001
    Table 30. TwoMem19 instruction fragment format. Tabelle 30. TwoMem19 Befehlsfragmentformat.
  • Das TwoMov19 MMPF Befehlsfragment ist ein 19 Bit Befehlsfragment, das acht unterschiedliche Kombinationen von Speicherlade- und Speicheroperationen gestattet, und zwar zusammen mit Datenbewegungsoperationen, wie in Tabelle 31 gezeigt.
  • Figure 00680002
  • Table 31. TwoMov19 instruction fragment format.
    • Reserved = reserviert
  • Tabelle 31. TwoMov19 Befehlsfragmentformat.
  • Das ThreeMem27 MMPF Instruktionsfragment ist ein 27 Bit Instruktionsfragment, das acht unterschiedliche Kombinationen gestattet, und zwar von Speicherlade, Speicherungs- und Datenoperationen, die ausgeführt werden können, und zwar ist dies in Tabelle 32 gezeigt.
  • Figure 00690001
    Table 32. ThreeMem27 instruction fragment format. Tabelle 32. ThreeMem27 Instruktionsfragmentformat.
  • Gleichung (4) sieht die Operationen vor, die durch das LD(A) Instruktions- oder Befehlssubfragment ausgeführt werden.
  • Figure 00690002
  • Tabelle 33 sieht das Format des LD(A) Befehlsubfragments gemäß dem exemplarischen Ausführungsbeispiel der Erfindung vor.
  • Figure 00690003
    Table 33. LD(A) instruction subfragment format. Tabelle 33. LD(A) Instruktionsbefehlsformat.
  • Gleichung (5) liefert die Operationen, durchgeführt durch das LD(B) Instruktionssubfragment.
  • Figure 00700001
  • Table 34 provides the format the LD(B) instruction subfragment in accordance with the exemplary embodiment of the invention.
  • Tabelle 34 sieht das Format des LD(B) Instruktionssubfragments gemäß dem exemplarischen Ausführungsbeispiel der Erfindung vor.
  • Figure 00700002
    Table 34. LD(B) instruction subfragment format. Tabelle 34. LD(B) Instruktions- oder Befehlssubfragmentformat.
  • Gleichung (6) sieht die Operationen vor, die durch das ST(A) Befehlssubfragment ausgeführt werden.
  • Figure 00700003
  • Tabelle 35 sieht das Format ST(A) Instruktionssubfragment gemäß dem exemplarischen Ausführungsbeispiel der Erfindung vor.
  • Figure 00700004
    Table 35. ST(A) instruction subfragment format. Tabelle 35. ST(A) Instruktions- oder Befehlssubfragmentformat.
  • Gleichung (7) sieht die Operation, ausgeführt durch das ST(B) Instruktionssubfragment vor.
  • Figure 00710001
  • Tabelle 36 sieht das Format des ST(B) Instruktionssubfragments gemäß dem exemplarischen Ausführungsbeispiel der Erfindung vor.
  • Figure 00710002
    Table 36. ST(A) instruction subfragment format. Tabelle 36. ST(A) Instruktionssubfragmentformat.
  • Tabelle 37 listet die Operation, ausgeführt durch das DMOVA Instruktionssubfragment.
  • Figure 00720001
  • Table 37. DMOVA instruction subfragment operations.
    • NOP for Parallel Instructions = NOP für Parallelbefehle
    • Tight Loop (Single-Instruction Loop) = Enge Schleife (Einzelbefehlsschleife)
    • Move Data Register = bewege Datenregister
    • Move Address Register to Date Register = Bewege Adressenregister zu Datenregister
    • Move Data Register to AGU Register = Bewege Datenregister zu AGU Register
    • Move Address Register = Beewege Adressenregister
    • Conditional for Parallel Instructions = Wahlweise für Parallelbefehle
  • Tabelle 37. DMOVA Befehlssubfragmentoperationen.
  • Tabelle 38 sieht das Format des DMOVA Instruktions- oder Befehlssubfragments entsprechend dem exemplarischen Ausführungsbeispiel der Erfindung vor.
  • Figure 00730001
  • Notes:
    • The instruction R0=R0 is decoded as a NOP.
    • The instruction R1=R1 is decoded as TLOOP.
    • The instruction A0=A0 is decoded as AM0=R0.
    • The instruction A1=A1 is decoded as AM0=R1.
    • The instruction A2=A2 is decoded as AM0=R2.
    • The instruction A3=A3 is decoded as AM0=R3.
    • The instruction B0=B0 is decoded as AM1=R0.
    • The instruction B1=B1 is decoded as AM1=R1.
    • The instruction B2=B2 is decoded as AM1=R2.
    • The instruction B3=B3 is decoded as AM1=R3.
  • Table 38. DMOVA instruction subfragment format.
  • Bemerkungen:
    • Der Befehl R0=R0 ist decodiert als NOP.
    • Der Befehl R1=R1 ist decodiert als TLOOP.
    • Der Befehl A0=A0 ist decodiert als AM0=R0.
    • Der Befehl A1=A1 ist decodiert als AM0=R1.
    • Der Befehl A2=A2 ist decodiert als AM0=R2.
    • Der Befehl A3=A3 ist decodiert als AM0=R3.
    • Der Befehl B0=B0 ist decodiert als AM1=R0.
    • Der Befehl B1=B1 ist decodiert als AM1=R1.
    • Der Befehl B2=B2 ist decodiert als AM1=R2.
    • Der Befehl B3=B3 ist decodiert als AM1=R3.
  • Tabelle 38. DMOVA Befehlssubfragmentformat.
  • Auf diese Weise wird dadurch, dass man MMPF Befehlsfragmente vorsieht, die einen oder mehrere Befehlssubfragmente enthalten können, die Anzahl von Operationen, die unter Verwendung eines vollen Befehls ausgeführt werden können, weiter erhöht. Beispielsweise kann ein voller Befehl arithmetisch und MAC Operationen zusammen mit einem Satz von bis zu drei Speicherbewegungs- und Programmflussoperationen ausführen. Die Fähigkeit so viele Operationen unter Verwendung eines einzigen Befehls ausführen zu können, reduziert weiter die Anzahl der Befehle die notwendig sind, um eine gegebene Operation auszuführen, und daher wird der gesamte Befehlsspeicher, der erforderlich ist, an der DSP vermindert. Das Reduzieren des Befehlsspeichers vermindert die Formgröße und daher die Kosten und den Leistungsverbrauch des DSP, was den DPS geeigneter macht für eine große Verschiedenheit von Anwendungsfällen einschließlich der mobilen drahtlosen Telefonie.
  • Auf diese Weise wurde ein System und ein Verfahren zur Steuerung eines DSP beschrieben, und zwar unter Verwendung eines hochparallelen, eine variable Länge besitzenden Befehlssatzes. Die vorstehende Beschreibung bevorzugter Ausführungsbeispiele ist vorgesehen, um jeden Fachmann in die Lage zu versetzen, die vorliegende Erfindung anzuwenden. Die verschiedenen Modifikationen dieser Ausführungsbeispiele, die dem Fachmann ohne weiteres gegeben sind, und die allgemeinen Prinzipien, die hier definiert werden, können auch bei anderen Ausführungsbeispielen, ohne erfinderisch tätig werden zu müssen, verwendet werden. Beispielsweise gilt Folgendes: obwohl das System und das Verfahren im Zusammenhang mit einem DSP beschrieben wurden, sind verschiedene Aspekte auch allgemein bei Computersystemen und Vorrichtungen anzuwenden.
  • Nachdem nunmehr die Erfindung unter Bezugnahme auf bevorzugte Ausführungsbeispiele beschrieben wurde, ist so leicht zu erkennen, dass die in Rede stehenden Ausführungsbeispiele lediglich Beispiele sind und dass Modifikationen und Abwandlungen dem Fachmann, ohne den Rahmen der durch die Ansprüche definierten Erfindung zu verlassen, bekannt ist.

Claims (32)

  1. Ein digitaler Signalprozessor zum Verarbeiten von Signalen und zwar ansprechend auf Instruktions- bzw. Befehlsdaten, wobei der Signalprozessor Folgendes aufweist: eine Registerbank (120) zum Speichern von zu verarbeitenden Daten; eine erste Speicherbank (102) zum Speichern erster Daten; eine zweite Speicherbank (103) zum Speichern zweiter Daten; eine dritte Speicherbank (104) zum Speichern dritter Daten; einen ersten Datenbus (108) zum Einlesen der ersten Daten in ein erstes Register in der Registerbank (120); ein zweiter Datenbus (110) zum Einlesen der zweiten Daten in ein zweites Register in der Registerbank (120); eine erste Verarbeitungseinheit (128, 130) zum Verarbeiten von zu verarbeitenden Daten in dem ersten Register und dem zweiten Register und zum Schreiben eines Ergebnisses in ein drittes Register in der Registerbank (120); und einen dritten Datenbus (112) zum Schreiben des Ergebnisses in die dritte Speicherbank (104) von dem dritten Register, wobei die ersten, zweiten und dritten Datenbusse gleichzeitig betrieben werden können, um Daten zwischen der Registerbank bzw. den ersten, zweiten und dritten Speicherbänken auszutauschen.
  2. Digitaler Signalprozessor nach Anspruch 1, der ferner Folgendes aufweist: eine zweite Verarbeitungseinheit (130) zum Erzeugen eines weiterverarbeiteten Ergebnisses durch Verarbeiten des genannten Ergebnisses und zum Speichern des genannten Ergebnisses in ein viertes Register in der Registerbank (120), wobei der dritte Datenbus (112) ferner zum Schreiben des genannten weiterverarbeiteten Ergebnisses von dem vierter Register in den dritten Speicher (104) ist.
  3. Digitaler Signalprozessor nach Anspruch 1, wobei der dritte Datenbus (112) breiter ist als der erste Datenbus (108) und der zweite Datenbus (110).
  4. Digitaler Signalprozessor nach Anspruch 2, wobei ein erster Satz von Registern bzw. erster Registersatz in der Registerbank (120) sowohl in die erste Verarbeitungseinheit (128) als auch die zweite Verarbeitungseinheit (130) schreiben kann und ein zweiter Satz von Registern bzw. zweiter Registersatz in der Registerbank (120) in eine aus der Gruppe der ersten Verarbeitungseinheit (128) und der zweiten Verarbeitungseinheit (130) schreiben kann.
  5. Digitaler Signalprozessor nach Anspruch 2, wobei ein erster Satz von Registern bzw. erster Registersatz in der Registerbank (120) sowohl von der ersten Verarbeitungseinheit (128) als auch der zweiten Verarbeitungseinheit (130) lesen kann und ein zweiter Satz von Registern bzw. zweiter Registersatz in der Registerbank (120) von einer aus der Gruppe der ersten Verarbeitungseinheit (128) und der zweiten Verarbeitungseinheit (130) lesen kann.
  6. Digitaler Signalprozessor nach einem der vorhergehenden Ansprüche, wobei die Befehlsdaten Befehle variabler Länge aufweisen, wobei die Befehle variabler Länge eine variable Anzahl von Befehlsfragmenten beinhalten, wobei der digitale Signalprozessor ferner Folgendes aufweist: eine Befehlsabrufeinheit (156) zum Abrufen von Befehlsdaten und zwar ausreichend für mindestens einen kompletten Befehl mit maximaler Länge, wobei die Befehlsdaten die Befehle variabler Länge beinhalten; einen Befehlsdecoder (158) zum Decodieren des Befehls und zum Erzeugen von Steuersignalen.
  7. Digitaler Signalprozessor nach Anspruch 1, wobei der erste Datenbus (108) ferner zum Schreiben von Daten ist, und zwar zwischen der ersten Speicherbank (102) und der Registerbank (120); der zweite Datenbus (110) ferner zum Schreiben von Daten ist, und zwar zwischen der zweiten Speicherbank (103) und der Registerbank (120); der dritte Datenbus (112) ferner zum Schreiben von Daten ist, und zwar zwischen einer dritten Speicherbank (104) und der Registerbank (120), wobei der erste Datenbus (108), der zweite Datenbus (110) und der dritte Datenbus (112) gleichzeitig in Betrieb sind.
  8. Digitaler Signalprozessor nach Anspruch 7, der ferner Folgendes aufweist: eine Befehlsabrufeinheit (156) zum Abrufen von Befehlen mit variabler Länge, wobei die Befehle einen Satz von Operationen anfordern; ein Befehlsdecoder (158) zum Decodieren der Befehle mit variabler Länge und zum Bewirken, dass der Satz von Operationen ausgeführt wird.
  9. Digitaler Signalprozessor nach Anspruch 7, der ferner Folgendes aufweist: eine zweite Verarbeitungseinheit (130) zum Verarbeiten von Daten in der Registerbank (120) und zwar gleichzeitig mit der ersten Verarbeitungseinheit (128).
  10. Digitaler Signalprozessor nach Anspruch 1, wobei der erste Bus (108) schmäler als der dritte Bus (112) ist.
  11. Digitaler Signalprozessor nach Anspruch 1, der ferner ein Steuersystem aufweist und zwar zum Steuern des ersten Datenbusses (108), des zweiten Datenbusses (110) und des dritten Datenbusses (112).
  12. Digitaler Signalprozessor nach Anspruch 2, wobei die erste Verarbeitungseinheit (128) eine Multiplizier-Akkumulier-Einheit ist und die zweite Verarbeitungseinheit (130) eine arithmetisch logische Einheit ist.
  13. Digitaler Signalprozessor nach Anspruch 2, wobei die Verarbeitungseinheiten (128, 130) betreibbar sind, um Daten von jedem Datenbus (108, 110, 112) zu Empfangen.
  14. Digitaler Signalprozessor nach Anspruch 2, wobei ein erster Satz der Register betreibbar ist zum Schreiben von Daten sowohl an die erste Verarbeitungseinheit (128) als auch die zweite Verarbeitungseinheit (130); und ein zweiter Satz der Register betreibbar ist zum Schreiben von Daten an die erste Verarbeitungseinheit (128), aber nicht an die zweite Verarbeitungseinheit (130).
  15. Digitaler Signalprozessor nach Anspruch 1, wobei die erste Verarbeitungseinheit (128) Folgendes aufweist: eine Multiplizier-Akkumulier-Einheit und der digitale Signalprozessor ferner aufweist: eine Schiebeeinheit (900, 904), die an einen Eingang der Multiplizier-Akkumulier-Einheit (128, 900 bis 906) gekoppelt ist, und zwar zum Schieben von Eingangsdaten in eine erste Konfiguration und zum Durchleiten der Eingangsdaten in eine zweite Konfiguration.
  16. Digitaler Signalprozessor nach Anspruch 15, wobei die Schiebeeinheit (900, 904) die Eingangsdaten schiebt, und die Multiplizier-Akkumulier-Einheit (128, 900 bis 906) die Multiplizier-Akkumulier-Operationen während eines einzelnen Verarbeitungszykluses durchführt.
  17. Ein Verfahren zum Verarbeiten von Daten, das Folgendes aufweist: Empfangen erster Daten von einer ersten Speicherbank (102) über einen ersten Datenbus (108); Speichern der ersten Daten in einem ersten Register (120); Empfangen zweiter Daten von einer zweiten Speicherbank (103), und zwar über einen zweiten Datenbus (110); und Speichern des zweiten Datenwerts in einem zweiten Register (120); Erzeugen (128) eines Ergebnisses unter Verwendung der ersten Daten und der zweiten Daten; Speichern des Ergebnisses in einem dritten Register (120); und Schreiben des Ergebnisses in eine dritte Speicherbank (104), und zwar über einen dritten Datenbus (112), wobei die ersten, zweiten und dritten Datenbusse gleichzeitig betreibbar sind, um Daten zwischen den Registern bzw. den ersten, zweiten und dritten Speicherbänken auszutauschen.
  18. Verfahren nach Anspruch 17, wobei die ersten Daten einen ersten Datenwert aufweisen; und die zweiten Daten einen zweiten Datenwert aufweisen.
  19. Verfahren nach Anspruch 17 oder 18, wobei der dritte Datenbus (112) breiter ist als der erste Datenbus (108).
  20. Verfahren nach Anspruch 17 oder 18, wobei der dritte Datenbus (112) breiter ist als der erste Datenbus (108) und der zweite Datenbus (110).
  21. Verfahren nach Anspruch 17, das ferner Folgendes aufweist: Erzeugen (128) des Ergebnisses unter Verwendung einer ersten Verarbeitungseinheit; Erzeugen (130) eines zweiten Ergebnisses aus dem ersten Ergebnis unter Verwendung einer zweiten Verarbeitungseinheit, die mit dem dritten Register (120) gekoppelt ist.
  22. Verfahren nach Anspruch 17 zum Betreiben eines digitalen Signalprozessors unter Verwendung Befehle variabler Länge, wobei die Befehle variabler Länge einen Satz mit Befehlsfragmenten besitzen, die jeweils eine Operation anfordern, wobei das Verfahren Folgendes aufweist: Einlesen vorher verarbeiteter Daten von einem der Register (120) in eine erste Verarbeitungseinheit (128), und zwar während einer ersten Taktphase von einem ersten Taktzyklus; Verarbeiten (128, 130) der vorher verarbeiteten Daten, und zwar basierend auf einem ersten Befehlsfragment von dem Satz von Befehlsfragmenten, und zwar während dem ersten Taktzyklus, doppelt verarbeitete Daten ergebend; Verarbeiten (128, 130) neuer Daten basierend auf einem zweiten Befehlsfragment von dem Satz mit Befehlsfragmenten, und zwar während dem ersten Taktzyklus, neu verarbeitete Daten produzierend; Schreiben der neu verarbeiteten Daten in das eine Register (120), und zwar während einer zweiten Phase von dem ersten Taktzyklus; und Schreiben der doppelt verarbeiteten Daten in ein zweites der Register (120), und zwar während der zweiten Phase von dem ersten Taktzyklus.
  23. Verfahren nach Anspruch 22, wobei die Verarbeitung (128, 130) der vorher verarbeiteten Daten durch eine erste Verarbeitungseinheit durchgeführt wird, und die Verarbeitung (128, 130) neuer Daten durch eine zweite Verarbeitungseinheit durchgeführt wird.
  24. Verfahren nach Anspruch 22, das ferner Folgendes aufweist: Einlesen von Befehlsdaten, die Befehle variabler Länge beinhalten; Bestimmen einer nächsten Befehlslänge; Decodieren einer Menge von Daten in den Befehlsdaten, die gleich der nächsten Befehlslänge ist.
  25. Verfahren nach Anspruch 17 zum Betreiben eines digitalen Signalprozessors, wobei das Verfahren ferner Folgendes aufweist: Einlesen verarbeiteter Daten von einem der Register (120) in eine erste Verarbeitungseinheit und zwar während einer ersten Taktphase von einem ersten Taktzyklus; Verarbeiten (128, 130) der verarbeiteten Daten unter Verwendung der ersten Verarbeitungseinheit, und zwar während des ersten Taktzyklus, weiterverarbeitete Daten ergebend; Verarbeiten (128, 130) anderer Daten in einer zweiten Verarbeitungseinheit während des ersten Taktzyklus, und zwar neu verarbeitete Daten produzierend; und Schreiben der neu verarbeiteten Daten in eines der Register (120), und zwar während einer zweiten Phase von dem ersten Taktzyklus.
  26. Verfahren nach Anspruch 25, das ferner Folgendes aufweist: Schreiben der weiterverarbeiteten Daten in ein zweites der Register (120), und zwar während der zweiten Phase von dem ersten Taktzyklus.
  27. Verfahren nach Anspruch 17 zum Steuern eines digitalen Signalprozessors unter Verwendung von in einem Speicher (152) gespeicherten Befehlen, wobei der Speicher einen Adressraum besitzt, wobei das Verfahren Folgendes aufweist: Herausschreiben eines ersten Datenworts aus dem Speicher, das einen ersten Teil eines ersten Befehls enthält; und Herausschreiben eines zweiten Datenworts aus dem Speicher, dass einen zweiten Teil des ersten Befehls und einen ersten Teil eines zweiten Befehls enthält.
  28. Verfahren nach Anspruch 27, wobei der erste Befehl aus einer Vielzahl von Befehlsfragmenten besteht, wobei jedes Befehlsfragment zum Durchführen einer bestimmten Operation ist.
  29. Verfahren nach Anspruch 27, wobei der erste Befehl und der zweite Befehl unterschiedliche Längen aufweisen.
  30. Verfahren nach Anspruch 27, wobei der erste Befehl und der zweite Befehl aus Sätzen mit Befehlsfragmenten bestehen, wobei jedes Befehlsfragment zum Durchführen einer bestimmten Operation ist.
  31. Verfahren nach Anspruch 30, wobei die Befehlsfragmente ein erstes Befehlsfragment und ein zweites Befehlsfragment beinhalten und das erste Befehlsfragment einen Satz mit Operationen anfordert, die ein Untersatz des durch das zweite Befehlsfragment durchgeführten Satzes mit Operationen ist.
  32. Verfahren nach Anspruch 31, wobei das erste Befehlsfragment kürzer als das zweite Befehlsfragment ist.
DE69925720T 1998-03-18 1999-03-04 Digitaler signalprozessor zur reduzierung des zugriffswettbewerbs Expired - Lifetime DE69925720T2 (de)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US4408998A 1998-03-18 1998-03-18
US4410898A 1998-03-18 1998-03-18
US4408798A 1998-03-18 1998-03-18
US4410498A 1998-03-18 1998-03-18
US09/044,088 US6496920B1 (en) 1998-03-18 1998-03-18 Digital signal processor having multiple access registers
US09/044,086 US6425070B1 (en) 1998-03-18 1998-03-18 Variable length instruction decoder
US44087 1998-03-18
US44089 1998-03-18
US44108 1998-03-18
US44104 1998-03-18
US44088 1998-03-18
US44086 1998-03-18
PCT/US1999/004887 WO1999047999A1 (en) 1998-03-18 1999-03-04 A digital signal processor

Publications (2)

Publication Number Publication Date
DE69925720D1 DE69925720D1 (de) 2005-07-14
DE69925720T2 true DE69925720T2 (de) 2006-03-16

Family

ID=27556460

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69925720T Expired - Lifetime DE69925720T2 (de) 1998-03-18 1999-03-04 Digitaler signalprozessor zur reduzierung des zugriffswettbewerbs

Country Status (12)

Country Link
EP (2) EP1457876B1 (de)
JP (4) JP2002507789A (de)
KR (3) KR100896674B1 (de)
CN (2) CN1279435C (de)
AR (5) AR026081A2 (de)
AT (1) ATE297567T1 (de)
AU (1) AU2986099A (de)
CA (1) CA2324219C (de)
DE (1) DE69925720T2 (de)
DK (1) DK1066559T3 (de)
HK (2) HK1035594A1 (de)
WO (1) WO1999047999A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1457876B1 (de) * 1998-03-18 2017-10-04 Qualcomm Incorporated Systeme und Verfahren zur Steuerung eines digitalen Signalprozessors mit Befehlen von variabler Länge, Verfahren zur Generierung und Speicherung von diesen Befehlen und Speicher zur Speicherung diesen Befehlen
JP4100300B2 (ja) * 2003-09-02 2008-06-11 セイコーエプソン株式会社 信号出力調整回路及び表示ドライバ
JP4661169B2 (ja) * 2003-11-14 2011-03-30 ヤマハ株式会社 ディジタルシグナルプロセッサ
JP4300151B2 (ja) * 2004-04-19 2009-07-22 Okiセミコンダクタ株式会社 演算処理装置
US7246218B2 (en) * 2004-11-01 2007-07-17 Via Technologies, Inc. Systems for increasing register addressing space in instruction-width limited processors
US7337272B2 (en) * 2006-05-01 2008-02-26 Qualcomm Incorporated Method and apparatus for caching variable length instructions
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
FR3021427B1 (fr) * 2014-05-22 2016-06-24 Kalray Structure de paquet d'instructions de type vliw et processeur adapte pour traiter un tel paquet d'instructions
WO2016016730A1 (en) * 2014-07-30 2016-02-04 Linear Algebra Technologies Limited Low power computational imaging
EP4116819A1 (de) * 2014-07-30 2023-01-11 Movidius Limited Vektorprozessor
WO2018012828A1 (ko) * 2016-07-13 2018-01-18 김태형 다기능 연산 장치 및 고속 푸리에 변환 연산 장치
JP7384374B2 (ja) * 2019-02-27 2023-11-21 株式会社ウーノラボ 中央演算処理装置
US11204768B2 (en) 2019-11-06 2021-12-21 Onnivation Llc Instruction length based parallel instruction demarcator

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4099229A (en) * 1977-02-14 1978-07-04 The United States Of America As Represented By The Secretary Of The Navy Variable architecture digital computer
US5293611A (en) * 1988-09-20 1994-03-08 Hitachi, Ltd. Digital signal processor utilizing a multiply-and-add function for digital filter realization
JP2791086B2 (ja) * 1989-03-15 1998-08-27 富士通株式会社 命令プリフェッチ装置
EP0436341B1 (de) * 1990-01-02 1997-05-07 Motorola, Inc. Verfahren zum sequentiellen Vorabruf von 1-Wort-, 2-Wort oder 3-Wort-Befehlen
US5295249A (en) * 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
JP2560889B2 (ja) * 1990-05-22 1996-12-04 日本電気株式会社 マイクロプロセッサ
JP2682761B2 (ja) * 1991-06-18 1997-11-26 松下電器産業株式会社 命令プリフェッチ装置
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
JPH06103068A (ja) * 1992-09-18 1994-04-15 Toyota Motor Corp データ処理装置
JPH06250854A (ja) * 1993-02-24 1994-09-09 Matsushita Electric Ind Co Ltd 命令プリフェッチ装置
JP3168845B2 (ja) * 1994-10-13 2001-05-21 ヤマハ株式会社 ディジタル信号処理装置
US5819056A (en) * 1995-10-06 1998-10-06 Advanced Micro Devices, Inc. Instruction buffer organization method and system
JP3655403B2 (ja) * 1995-10-09 2005-06-02 株式会社ルネサステクノロジ データ処理装置
US5710914A (en) * 1995-12-29 1998-01-20 Atmel Corporation Digital signal processing method and system implementing pipelined read and write operations
JP2806359B2 (ja) * 1996-04-30 1998-09-30 日本電気株式会社 命令処理方法及び命令処理装置
EP1457876B1 (de) * 1998-03-18 2017-10-04 Qualcomm Incorporated Systeme und Verfahren zur Steuerung eines digitalen Signalprozessors mit Befehlen von variabler Länge, Verfahren zur Generierung und Speicherung von diesen Befehlen und Speicher zur Speicherung diesen Befehlen

Also Published As

Publication number Publication date
JP6152558B2 (ja) 2017-06-28
AU2986099A (en) 1999-10-11
KR100835148B1 (ko) 2008-06-04
HK1035594A1 (en) 2001-11-30
AR026081A2 (es) 2002-12-26
JP2015028793A (ja) 2015-02-12
CN1523491A (zh) 2004-08-25
DK1066559T3 (da) 2005-10-03
HK1094608A1 (en) 2007-04-04
KR20010082524A (ko) 2001-08-30
AR026078A2 (es) 2002-12-26
AR026082A2 (es) 2002-12-26
CA2324219A1 (en) 1999-09-23
AR026080A2 (es) 2002-12-26
KR100896674B1 (ko) 2009-05-14
EP1457876A3 (de) 2006-11-02
JP2002507789A (ja) 2002-03-12
KR20060040749A (ko) 2006-05-10
EP1066559A1 (de) 2001-01-10
JP2010282637A (ja) 2010-12-16
CN1279435C (zh) 2006-10-11
KR100940465B1 (ko) 2010-02-04
JP5677774B2 (ja) 2015-02-25
CN1301363A (zh) 2001-06-27
CA2324219C (en) 2011-05-10
EP1457876B1 (de) 2017-10-04
EP1066559B1 (de) 2005-06-08
DE69925720D1 (de) 2005-07-14
WO1999047999A1 (en) 1999-09-23
KR20060040748A (ko) 2006-05-10
ATE297567T1 (de) 2005-06-15
AR026079A2 (es) 2002-12-26
EP1457876A2 (de) 2004-09-15
JP6300284B2 (ja) 2018-03-28
JP2016146189A (ja) 2016-08-12

Similar Documents

Publication Publication Date Title
DE69925720T2 (de) Digitaler signalprozessor zur reduzierung des zugriffswettbewerbs
EP0875031B1 (de) Prozessor zur bildverarbeitung
DE2724125C2 (de)
DE69907955T2 (de) Globale und locale registersegmentierung in einem vliw prozessor
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE60316151T2 (de) Zugriff zum breiten speicher
DE69729974T2 (de) Datenverarbeitungsschaltung, Mikrocomputer und elektronische Einrichtung
DE69928428T2 (de) Multiplizier-akkumulator-konfiguration zur effizienten planung in einem digitalen signalverarbeitungsrechner
DE3424962C2 (de)
US6425070B1 (en) Variable length instruction decoder
DE202013012281U1 (de) Speicherverbindungsnetzarchitektur für einen Vektorprozessor
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE69826404T2 (de) Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen
DE4403917C2 (de) Vorrichtung zum Berechnen einer Bit-Besetzungszählung
EP1599794B1 (de) Prozessor mit verschiedenartigen steuerwerken für gemeinsam genutzte ressourcen
DE10051611B4 (de) Verteiltes Multiplexerschema für eine Bi-Endian-Rotatorschaltung
DE19528760A1 (de) Bildverarbeitende Schaltung eines hohen Integrationsgrads
DE69728495T2 (de) Vliw-prozessor zur verarbeitung eines komprimierten instruktionsformats
DE112020004266T5 (de) Kompressionsunterstützungsanweisungen
DE3000012A1 (de) Schaltungsanordnung zur ausfuehrung eines uebertragungsbefehls in einer datenverarbeitungsanlage
DE69817990T2 (de) Inhaltsadressierter Fifospeicher mit und ohne Bereinigung seines Inhalts
DE19637369C2 (de) Digitaler Signalprozessor mit Multipliziereinrichtung und -Verfahren
DE69723804T2 (de) Prozessor mit befehlscachespeicher
EP0981079B1 (de) Programmierbare 1-Bit Datenverarbeitungsanordnung
DE3121174C2 (de) Schaltungsanordnung in einem Prozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition