DE69824193T2 - Datenverarbeitungseinheit mit der fähigkeit von digitaler signalverarbeitung - Google Patents
Datenverarbeitungseinheit mit der fähigkeit von digitaler signalverarbeitung Download PDFInfo
- Publication number
- DE69824193T2 DE69824193T2 DE69824193T DE69824193T DE69824193T2 DE 69824193 T2 DE69824193 T2 DE 69824193T2 DE 69824193 T DE69824193 T DE 69824193T DE 69824193 T DE69824193 T DE 69824193T DE 69824193 T2 DE69824193 T2 DE 69824193T2
- Authority
- DE
- Germany
- Prior art keywords
- register
- data
- units
- data processing
- words
- 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
Links
- 230000015654 memory Effects 0.000 claims description 80
- 239000000872 buffer Substances 0.000 claims description 42
- 238000010168 coupling process Methods 0.000 claims description 3
- 230000008878 coupling Effects 0.000 claims description 2
- 238000005859 coupling reaction Methods 0.000 claims description 2
- 238000000926 separation method Methods 0.000 claims 3
- 230000005540 biological transmission Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 9
- 239000003607 modifier Substances 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000000034 method Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000001464 adherent effect Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Executing Machine-Instructions (AREA)
Description
- Hintergrund der Erfindung
- Die vorliegende Erfindung betrifft eine Datenverarbeitungseinheit und insbesondere eine zentrale Datenverarbeitungseinheit (CPU), wie einen Mikrocomputer oder ein Mikrosteuergerät. Mikrosteuergeräte sind im Stand der Technik gut bekannt, und eine große Vielfalt derartiger Geräte von Geräten der unteren Preisklasse (z. B. ein 4/8-Bit-Steuergerät) bis zu Geräten der oberen Preisklasse (z. B. ein 32-Bit-Steuergerät) sind verfügbar. Im Allgemeinen werden Mikroprozessoren in zwei Gruppen aufgeteilt, nämlich Prozessoren für einen allgemeinen Zweck, wie Computer (CISC) mit einem komplexen Befehlssatz oder Computer (RISC) für einen reduzierten Befehlssatz, und spezielle Mikroprozessoren, die für spezielle Zwecke entworfen sind, wie digitale Signalverarbeitungsprozessoren (DSP).
- RISC- und CISC-Prozessoren sind gewöhnlich Prozessoren, die eine Vielzahl von Registern oder eine Registerdatei und einen einzelnen Speicher jedweder Art und Größe aufweisen und deshalb zum Verarbeiten jedweder Art von Daten entworfen sind. RISC- und CISC-Prozessoren sind nicht auf Erweiterungen begrenzt, jedoch es fehlt die Hochgeschwindigkeitsdatenverarbeitung der DSP-Prozessoren.
- DSP-Prozessoren weisen gewöhnlicherweise Akkumulatoren und einen speziellen Speicher, der in seiner Größe begrenzt ist, auf. Sie sind entworfen, um Daten schnell und präzise zu berechnen, z. B. für Prozessabtastsignale. Der Speicher ist oft in einen X-Speicher und einen Y-Speicher getrennt, um einen Zugriff auf zwei unterschiedliche Daten in einem Zyklus zu ermöglichen. Dieses ergibt vollständig nicht orthogonale Vorgänge, schwerwiegende Begrenzungen für einen Addressiermodus und ein derartiges Speichermodell ist definitiv nicht compilerfreundlich. Wenn spezifische Daten in dem "falschen" Speicher sind, müssen sie von dem X-Speicher in den Y-Speicher oder umgekehrt geladen werden. Das Fehlen einer Registerdatei erschwert es auch, einen derartigen Prozessor in "C" zu programmieren. Weiterhin macht die enge, fixierte Befehlsform es unmöglich, eine derartige Architektur zu erweitern.
- Andere Systeme verwenden Coprozessoren, um die Betriebsgeschwindigkeit zu erhöhen. Diese Coprozessoren teilen nicht irgendein Register der Haupt-Zentraldatenverarbeitungseinheit (CPU). Somit müssen die Register des Coprozessors durch die CPU geladen werden, was die Betriebsgeschwindigkeit signifikant herabsetzt und die Verwendung der Register begrenzt.
- EP-A-0 473 805 offenbart ein Computersystem mit einer 32 Bit arithmetischen und logistischen Einheit (ALU), die mit einem 64-Bit-Datenbus gekoppelt ist. Eine Anzahl von Registern für allgemeine Zwecke, die je 32 Bit aufweisen und die in zwei Gruppen organisiert sind, werden vorgesehen. Zwei 32-Bit-Datenworte, die auf dem Datenbus präsent sind, können übertragen werden und in zwei Gruppen von den Registern für allgemeine Zwecke gespeichert werden. Von dort können zwei Datenworte über zwei Operanden-Register zu der ALU übertragen werden.
- EP-A-0 679 991 offenbart einen Datenprozessor, der Operationen unter Verwendung von Operandendaten von unterschiedlichen Bit-Breiten durchführt. Dieses verbessert die parallele Durchführung mittels Partitionieren eines festen Bit-Breiten-Operanden in mehrere Teiloperandenfelder, unter Überprüfen der Datenabhängigkeiten, unter Kennzeichnen und Weiterleiten der Daten unabhängig voneinander in diesen Feldern. Die Operandenstruktur mit variabler Registerbreite unterstützt den Prozessor, um Datenabhängigkeiten zu analysieren, wenn Operanden durch einen Umordnungspuffer gekennzeichnet werden und mit Daten versorgt werden, wenn sie ohne Rücksicht auf die Art der Daten zur Verfügung stehen.
- WO-A-97/08 610 offenbart einen Prozessor, der einen ersten und einen zweiten Speicher aufweist, der erste, bzw. zweite gepackte Daten aufweist. Die jeweils gepackten Daten schließen vier Datenelemente ein. Eine Multiplizier-Addierschaltung ist mit den ersten und zweiten Speicherbereichen gekoppelt. Die Multiplizier-Addierschaltung umfasst vier Multiplizierer und zwei Addierer, wobei die Addierer mit den Multiplizierern entsprechend gekoppelt sind. Ein dritter Speicherbereich ist mit den Addierern verbunden. Der dritte Speicherbereich umfasst ein erstes und zweites Feld, um die Ausgabe der Addierer entsprechend als erste und zweite Datenelemente von dritten gepackten Daten zu sichern.
- Zusammenfassung der Erfindung
- Deshalb ist es eine Aufgabe der vorliegenden Erfindung, einen Datenprozessor mit DSP-Merkmalen und der Vielfältigkeit der CISC- und RISC-Prozessoren, ohne die Notwendigkeit eines Coprozessors vorzusehen.
- Diese Aufgabe wird erreicht durch eine Datenverarbeitungseinheit, umfassend: eine Registerdatei, einen Registerlade- und Speicherpuffer, verbunden mit der Registerdatei, einen ein zelnen Speicher und einen Bus, der mindestens eine erste und zweite Wortleitung aufweist, um einen Bus von doppelter Wortweite zu bilden, der mit der Registerlade und Speicherpuffer mit dem einzelnen Speicher gekoppelt ist. Die Registerdatei hat mindestens zwei Registersätze, wobei der erste Satz der Register mit einer der Wortleitungen gekoppelt sein kann und der zweite Satz der Register mit der jeweiligen anderen der Wortleitungen, einer Lade- und einer Speichersteuereinheit zum Übertragen der Daten von oder zu dem Speicher gekoppelt sein kann.
- In einer Ausführungsform hat die Lade- und Speichersteuereinheit Mittel, um zu Laden oder zu Steuern von zwei aufeinander folgenden Worten im Parallelverfahren von oder zu dem Speicher zu oder von dem ersten und zweiten Satz der Register. In einem anderen Ausführungsbeispiel kann ein Wort aus dem Speicher in zwei Halbworte getrennt werden, die dann in einem ersten Register aus einem ersten Registersatz und einem zweiten Register aus einem zweiten Registersatz gespeichert werden. Die Halbworte können in einer Hälfte eines Registers gespeichert werden, und die andere Hälfte des Registers kann mit Nullen oder mit Signaldaten aufgefüllt werden.
- In einer weiteren Ausführungsform weist der Bus eine Vielzahl von Wortleitungen auf, um einen vielfach wortweiten Bus zu bilden, und die Registerdatei weist eine Vielzahl von Registersätzen auf, wobei jeder der Registersätze mit einer der Wortleitungen aus der Vielzahl von Wortleitungen gekoppelt ist.
- Z. B. kann in einer 24-Bit-Datenverarbeitungseinheit auf 32-Bit-Halbworte oder 4/16-Viertelworte während eines einzelnen Zyklus zugegriffen werden. Die Lade- und Speichersteuerein heit der Datenverarbeitung kann deshalb Mittel aufweisen, eine Vielzahl von aufeinanderfolgenden Worten parallel von oder zu dem Speicher oder von der Vielzahl von Registersätzen zu laden oder zu speichern. Diese Mittel ermöglichen es, jedes Register von jedem der Registersätze mit irgendeinem Ort innerhalb des Speichers zu koppeln.
- In einer weiteren Ausführungsform kann die Lade- und Speichersteuereinheit der Datenverarbeitungseinheit Mittel zum Laden eines Wortes von dem Speicher aufweisen und es in eine Vielzahl von Teilworten trennen, wobei jedes Teilwort in einem der Register von jedem der entsprechenden Registersätze gespeichert wird.
- Eine Datenverarbeitungseinheit gemäß der vorliegenden Erfindung hat den Vorteil, eine Standardregisterdatei mit einem Daten- und Adressenregister zu verwenden. Somit kann ein Adressenregister verwendet werden, z. B. als einen Stapelzeiger, der eine unbegrenzte Stapelgröße ermöglicht, wobei digitale Signalprozessoren nur einen Hardwarestapel umfassen, der oft nur in seiner Größe begrenzt ist. Ein "C"-Code kann leicht in einen Maschinencode übersetzt werden, der orthogonale Operationen mit allen Registern ermöglicht. Keine konstante Bewegung eines Akkumulators zu dem Speicher ist notwendig, wie es für digitale Signalprozessoren der Fall ist. Wenn die Register wieder gebraucht werden können, ergibt das auch einen geringeren Stromverbrauch.
- Kurze Beschreibung der Zeichnungen
-
1 zeigt ein Basisblockdiagramm einer Registerdatei, die mit einem einzelnen Speicher und Ausführungseinheiten einer Datenverarbeitungseinheit gemäß der vorliegenden Erfindung gekoppelt ist, -
2 zeigt eine Ausführungsform der Verbindung zwischen der Registerdatei und einem einzelnen Speicher, -
3 zeigt eine erste Ausführungsform, die Operatoren und ihre Verknüpfung zu Registern der Registerdatei einschließen, -
4 zeigt eine zweite Ausführungsform, die Operatoren und ihre Verknüpfung zu Registern der Registerdatei einschließen, -
5 zeigt eine dritte Ausführungsform, die Operatoren und ihre Verknüpfung zu Registern der Registerdatei einschließen, -
6 zeigt die Bearbeitung der Merker und der Sättigungseinheit, -
7 zeigt den Speicherzugriff mit einem Kreispuffer Modus, -
8 zeigt eine Bit-Umkehradressen Modus und -
9 zeigt eine Anwendung einer Datenverarbeitungseinheit, zum Durchführen einer FIR-Filterfunktion. - Beschreibung der bevorzugten Ausführungsform
-
1 zeigt ein Basisdiagramm, das eine Speichereinheit1 einschließt, welche an eine Registerdatei2 gekoppelt ist. - Überall in der gesamten Anmeldung soll ein Wort 32 Bits bedeuten, ein Halbwort soll 16 Bits bedeuten und ein Byte bedeutet 8 Bits. Natürlich ist die vorliegende Erfindung nicht auf Ausführungsformen, die 32-Bit-Worte aufweisen, beschränkt, deshalb kann ein Wort jede beliebige Größe haben.
- Zum Koppeln der Registerdatei
2 mit dem Speicher1 , ist eine Puffer/Auswahllogik2a vorgesehen. In dieser Ausführungsform zeigt die Nummer2b die Register an. 16 Register D0 bis D15 sind vorgesehen, wobei jedes Register eine Bit-Breite eines Wortes aufweist, das z. B. 32 Bits hat. Die Register sind in zwei Gruppen, gerade und ungerade Register, organisiert. Die Register in diesem Beispiel sind Datenregister, aber es können auch entweder Adressen- oder Datenregister sein. Ein zweiter Registersatz kann in gleicher Weise für Adressenregister vorgesehen sein. Der Bus zwischen der Speichereinheit1 und der Puffer/Auswahllogik2a ist 64 Bits weit, wodurch zwei aufeinander folgende Worte in den Speicher1 adressiert werden können. Eine Lade-/Speichersteuereinheit2d adressiert die Speichereinheit1 und wählt die entsprechenden Register2b aus während eines Übertragens von der Registerdatei2 zu der Speichereinheit1 oder umgekehrt. Die Registerdatei2 umfasst weiterhin eine zweite Puffer/Auswahllogik2c , die eine Vielzahl von Durchführungseinheiten4 ,5 und6 damit verbindet. Ein zweiter Bus3 ist als eine Verknüpfung zwischen der Puffer/Auswahllogik2c und den Ausführungseinheiten4 ,5 und6 vorgesehen. Durch die jeweilige Puffer/Auswahllogik2a oder2c kann gleichzeitig auf zwei Registern, eines in jeder Gruppe, z. B. ein gerades und ein ungerades Register, zugegriffen werden. -
2 zeigt die Verbindung zwischen den Registern2b und dem Speicher1 in größerem Detail. Der Speicher1 ist in Dop pelworten organisiert, was einen Zugriff gleichzeitig auf zwei aufeinander folgende Worte ermöglicht, z. B. auf das Wort1e und das Wort1f oder auf das Wort1f und1g . Ein erster Satz von Datenausgabeleitungen1a , die in dieser Ausführungsform 32 Bits aufweisen, ist mit einer Multiplexer/Trenneinheit8 verbunden, welche diese Leitungen1a über die Abgleicheinheiten12 oder13 , entweder mit einem ungeraden Register D1, D3, D5 ... D15 oder mit einem geraden Register D2, D4, D6 ... D14, koppelt. Ein zweiter Satz der Datenausgangsleitungen1d ist mit einer Multiplexer/Trenneinheit9 verbunden, welche diese Leitung über Abgleicheinheiten13 oder12 entweder den geraden Registern D2, D4, D6 ... D14 oder mit den ungeraden Registern D1, D3, D5 ... D15 verbindet. In der anderen Richtung werden die ungeraden Register D1, D3, D5 ... D15 und die geraden Register D2, D4, D6 ... D14 jeweils mit einer Auswahl/Verkettungseinheit11 verbunden, die entweder eine der Registergruppen oder der Verkettungen von Halbworten mit jeder Registergruppe zu einem Wort auswählt. Das ausgewählte oder verkettete Wort wird einem dritten Multiplexer7 geliefert, der entweder mit dem ersten oder mit dem zweiten Satz der Dateneingangsleitungen1b und1c gekoppelt ist, welche den Speicher1 verbinden. - Die Datenverarbeitungseinheit gemäß der vorliegenden Erfindung unterstützt spezielle Befehle, die es erlauben, zwei Datenworte in einem Zyklus zu lesen. Verglichen mit einem DSP, der zwei separate Speichereinheiten aufweist, hat die Datenverarbeitungseinheit gemäß der Erfindung eine einzige Speichereinheit. Ein DSP mit zwei Speichereinheiten hat Daten von einem Speicher zu dem anderen zu transportieren, wenn sie in einem "falschen" Speicher gespeichert sind. Dieses ist nicht notwendig mit einer Datenverarbeitungseinheit gemäß der vorliegenden Erfindung. Der Zugriff zu zwei Datenworten ist nur insofern begrenzt, als dass die Datenworte in einer nacheinander folgenden Ordnung zu speichern sind. Unter Verwendung nur eines einzigen Speichers ist die Datenverarbeitungseinheit mit all den Vorteilen und der Vielseitigkeit eines RISC- oder CISC-Prozessors ausgestattet. Somit können Daten irgendwo in dem Speicher gespeichert werden, was sehr bequem ist, z. B. für ein "C"-Programmieren.
- Spezielle Instruktionen sehen einen – "Lade Doppelwort in ein Register"-Befehl vor. Das Doppelwort wird von dem Speicher in die Multiplexereinheiten
8 und9 über die Datenausgangsleitung1a und1d geladen. In diesem Modus arbeiten die Abgleicheinheiten12 und13 als Multiplexer, welche die Datenleitungen1a mit den ungeraden Registern oder mit den geraden Registern verbinden bzw. die Datenleitungen1d mit den geraden Registern, bzw. mit den ungeraden Registern. Die Datenverarbeitungseinheit kann eine spezielle Auswahleinheit aufweisen, die es ermöglicht, mit diesem Befehl irgendein Register in jeder Gruppe auszuwählen. Eine vereinfachte Ausführungsform wählt nur ein Register aus, und das zweite Register ist automatisch das Register, das benachbart zu dem ausgewählten ist. Z. B., wenn das gerade Register D4 ausgewählt ist, würde das benachbarte ungerade Register D5 sein, oder wenn das ungerade Register D7 ausgewählt würde, wäre das benachbarte gerade Register D6. Das Doppelwort in dem Speicher kann bei abgeglichenen Adressen angeordnet sein, z. B. das Wort1e und das nachfolgende Wort1f , oder es kann ein Zugriff auf eine nicht abgeglichene Adresse sein, wie das Wort1f und das nachfolgende1g . Die Multiplexer7 ,8 ,9 und10 gleichen die entsprechenden Daten ab und verteilen sie in die jeweiligen Register oder Speicherzellen. - Wie in dieser Ausführungsform erwähnt, kann der Speicher adressiert werden mit einer Adresse, die an den ersten Datenausgangsleitungen
1a (abgeglichen) oder an den zweiten Datenausgangsleitungen1d (nicht abgeglichen) starten. In dem Nachfolgenden wird eine vereinfachte Ausführungsform angenommen. Da immer nachfolgende Adressen verwendet werden, falls der Befehl, z. B. einschließt eine Quelladresse, welche die Ausgangsdatenleitungen1a adressiert und als Ziel das ungerade Register D9 anzeigt, wird die Speicherzelle1e über die Leitungen1a und die Einheiten8 und12 mit dem Register D9 gekoppelt, und die nachfolgende Speicherzelle1f wird über die Leitungen1d und die Einheiten9 und13 mit dem Register D8 gekoppelt. Wenn der Befehl eine Adressenquelle einschließt, welche die Ausgangsleitungen1d adressiert, und als Ziel das ungerade Register D9 anzeigt, wird die Speicherzelle1f über die Leitungen1d und die Einheiten9 und12 mit dem Register D9 gekoppelt, und die nachfolgende Speicherzelle1g wird über die Leitungen1a und die Einheiten8 und13 mit dem Register D8 gekoppelt. Wenn der Befehl eine Quellenadresse einschließt, welche die Datenausgangsleitungen1a adressiert und als Ziel ein gerades Register D2 anzeigt, wird die Speicherzelle1e über die Leitungen1a und die Einheiten8 und13 mit dem Register D2 gekoppelt, und die Speicherzelle1f wird über die Leitungen1d und die Einheiten9 und12 mit dem Register D3 gekoppelt. Wenn der Befehl eine Quellenadresse einschließt, welche die Datenausgangsleitungen1d adressiert und als Ziel gerade Register D2 anzeigt, wird die Speicherzelle1f über die Leitungen1d und die Einheiten9 und13 mit dem Register D2 gekoppelt, und die Speicherzelle1g wird über die Leitungen1d und die Einheiten9 und12 mit dem Register D3 gekoppelt. Wenn die Register frei auswählbar sind, arbeitet der Kopplungsprozess entsprechend. - Ein zweiter Typ eines Befehls, der gemäß der vorliegenden Erfindung ausgeführt werden kann, ist ein so genannter "Lade zwei Halbworte (gepackt)"-Befehl. Mit diesem Befehl wird ein Wort entweder der Datenleitungen
1a oder1d geladen und in Halbworte durch die Einheiten8 oder9 geteilt, die in den jeweiligen unteren Hälften eines Wortes platziert sind. Fakultativ können Einheiten12 und13 entweder Zeichen-erweiternd oder Null-erweiternd die jeweiligen Halbworte zu ganzen Worten erweitern. Mit anderen Worten werden in dieser Ausführungsform die 16-Bit-Halbworte erweitert zu 32 Bits. Die Einheit8 oder die Einheit9 trennt das Wort, das von den Leitungen1a oder1d empfangen wurde, in zwei Halbworte und verteilt sie über die Einheiten12 und13 zu den unteren Hälften der jeweiligen geraden oder ungeraden Register. Die Einheiten12 und13 können diese Halbworte erweitern zu Worten, entweder durch Auffüllen der oberen Hälften mit Nullen oder durch Zeichen, welche die oberen Hälften erweitern. Wenn ein Zeichen eines Halbwortes negativ ist, wird die obere Hälfte des jeweiligen Registers mit "1" oder sonst mit "0" aufgefüllt. Wenn die Einheiten12 und13 deaktiviert sind, werden die Halbworte in den unteren Hälften der jeweiligen geraden und ungeraden Register gespeichert, ohne ihre oberen Hälften zu ändern. In einer vereinfachten Version wird das am wenigsten signifikante gespeicherte Halbwort immer in einem geraden Register gespeichert, und das signifikanteste Halbwort wird in einem ungeraden Register benachbart zum geraden Register gespeichert. - Ein dritter Typ des Befehls, der gemäß der vorliegenden Erfindung durchgeführt werden kann, ist ein so genannter "Lade zwei gekennzeichnete Bruchstücke"-Befehl. Mit diesem Befehl wird ein Wort entweder von den Datenleitungen
1a oder1d geladen und in zwei Halbworte durch die Einheiten8 oder9 ge trennt, die in den oberen Hälften der jeweiligen Worte platziert sind. Fakultativ können Einheiten12 und13 die jeweiligen Halbworte durch Nullen auf Worte erweitern. Die Einheit8 oder die Einheit9 trennt die Worte, die von den Leitungen1a oder1d empfangen werden in zwei Halbworte, welche die oberen und unteren Hälften des Wortes repräsentieren und verteilt sie über die Einheiten12 und13 in die oberen Hälften der jeweiligen geraden und ungeraden Register. In den Einheiten12 und13 können diese Halbworte zu Worten erweitert werden, durch Auffüllen der unteren Hälfte mit "0". Wenn die Einheiten12 und13 deaktiviert sind, werden die Halbworte in den oberen Hälften des jeweiligen geraden und ungeraden Registers gespeichert, ohne ihre unteren Hälften zu ändern. In einer vereinfachten Version ist das am wenigsten signifikante Speicherhalbwort immer in einem geraden Register gespeichert, und das signifikanteste Halbwort ist in einem ungeraden Register benachbart zu dem geraden Register gespeichert. - Ein vierter Typ des Befehls, der gemäß der vorliegenden Erfindung durchgeführt werden kann, ist ein so genannter "Speicher zwei Halbworte (gepackt)"-Befehl. Mit diesem Befehl werden die unteren Halbworte eines geraden und eines ungeraden Registers an entweder eine Verkettungseinheit
11 oder14 geliefert. Die zwei Halbworte werden zu einem Wort kombiniert und in der Speichereinheit1 über den Multiplexer7 oder10 und über die Dateneingangsleitungen entweder1b oder1c gespeichert. - Ein fünfter Typ des Befehls, der gemäß der vorliegenden Erfindung ausgeführt werden kann, ist ein so genannter "Speicher gekennzeichnete Bruchstücke"-Befehl. Mit diesem Befehl werden die oberen Halbwörter eines geraden und eines ungera den Registers entweder einer Verkettungseinheit
11 oder14 zugeführt. Die zwei Halbworte werden kombiniert zu einem Wort in der Speichereinheit1 über den Multiplexer7 oder10 und über die Dateneingangsleitungen entweder1b oder1c gespeichert. - Schließlich ist ein sechster Typ des Befehls, der gemäß der vorliegenden Erfindung durchgeführt werden kann, ein so genannter "Speicher Doppelwort von Datenregistern"-Befehl. Mit diesem Befehl wird der Inhalt eines geraden oder ungeraden Registers entweder einer Multiplexereinheit
7 oder10 zugeführt und in der Speichereinheit über die Dateneingangsleitungen1b und1c gespeichert. Dieser Befehl arbeitet in der gleichen Weise wie ein "Lade Doppelwort zu einem Register"-Befehl, der oben beschrieben ist. Die Einheiten7 und10 arbeiten als Multiplexer, die den Inhalt von jedem Register entweder zu den Dateneingangsleitungen1b oder1c verteilen. Die Einheiten11 und14 sind deaktiviert, sodass die Einheiten7 und10 jeweils das volle gespeicherte Wort in einem geraden oder ungeraden Register ihrer Eingänge empfangen. - Das Prinzip des Anordnens des Speichers und der Registerdatei können leicht erweitert werden. Z. B., vier unterschiedliche Registersätze können bereitgestellt werden und das Adressieren des Speichers kann durch vier wortbreite Busse erweitert werden, was ein Laden und Speichern von vier aufeinanderfolgenden Worten gleichzeitig ermöglicht.
- Über die zweite Puffer/Auswahllogik
2c ist die Registerdatei mit einer Vielzahl von Ausführungseinheiten gekoppelt, wie mit einem Multiplizierakkumulator (MAC), einer Arithmetiklogikeinheit (ALU), einem komprimierenden Datenverschieber, einer Bitmanipulationseinheit usw. Die3 bis5 zeigen, wie diese Einheiten mit der Registerdatei verbunden sind und wie sie arbeiten. - In
3 werden zwei Register17 und18 , die 32 Bits als ein Wort aufweisen, mit zwei Operatoreinheiten15 und16 verbunden. Operatoreinheiten sind identisch und können irgendeine Funktion ausführen, die durch die jeweilige Ausführungseinheit vorgesehen ist. Z. B., können diese Operatoreinheiten Addierer, Multiplizierer, Verschieber irgendeiner Art von logischen Einheiten, wie Komperatoren, AND/OR-Operatoren, usw. sein. Als Eingang empfängt jeder Operator ein Halbwort, das in diesem Beispiel 16 Bit breit ist. Somit ist die obere Hälfte des Registers17 mit dem ersten Eingang der Operatoreinheit15 gekoppelt, und die untere Hälfte des Registers17 ist mit dem ersten Eingang der Operatoreinheit16 gekoppelt. Andererseits ist die obere Hälfte des Registers18 mit dem zweiten Eingang von der Operatoreinheit15 gekoppelt, und die untere Hälfte des Registers18 ist mit dem zweiten Eingang der Operatoreinheit16 gekoppelt. Die Operatoreinheiten umfassen mindestens eine Halbwortbreiteausgabe. Die Ausgabe der Operatoreinheit15 ist mit der oberen Hälfte des dritten Registers19 gekoppelt, und die Ausgabe der Operatoreinheit16 ist mit dem unteren Halbwort des Registers19 gekoppelt. -
4 zeigt einen zweiten Typ der gepackten arithmetischen oder logischen Operationen. Drei Register20 ,25 und26 sind in vier Teile geteilt. In dieser Ausführungsform enthält jedes Teil 8 Bits. Vier Operatoreinheiten21 ,22 ,23 und24 sind vorgesehen und zugehörig zu jeweils 8-Bit-Teile der Register20 ,25 und26 . Die vier Teile der Register20 und25 stellen die Eingangswerte für jede Operatoreinheit21 ,22 ,23 und24 bereit, während die Ausgangssignale jeder Operatorein heit21 ,22 ,23 und24 an die jeweiligen Teile der Register26 geliefert werden. -
5 zeigt eine Ausführungsform gemäß3 , worin jede Operatoreinheit ein Multiplizierer29 und30 ist. Die Multiplizierer29 und30 können z. B. 16 Bit Multiplizierer sein, die ein 32-Bit-Ergebnis erzeugen. Die oberen Halbworte von jedem Ergebnis werden dem Ergebnisregister19 zugeführt. - Alle Register sind Teil der Registerdatei und können irgendeinem geraden oder ungeraden Register zugewiesen werden. Alle drei Register können auch einem einzigen Register zugewiesen werden.
1 zeigt einen Bus3 und die jeweiligen Eingangs- und Ausgangsleitungen, die notwendig sind, um die jeweilige Durchführungseinheiten4 ,5 und6 mit den jeweiligen Eingangs- und Ausgangsdaten bereitzustellen. - Diese so genannten gepackten arithmetischen oder logischen Befehle verteilen in dieser Ausführungsform ein 32-Bit-Wort in mehrere identische Objekte, die dann erfasst, gespeichert und parallel verarbeitet werden können. Diese Befehle insbesondere ermöglichen die volle Entfaltung der 32-Bit-Worte der Datenverarbeitungseinheit gemäß der vorliegenden Erfindung in DSP-Anwendungen.
- In dieser Ausführungsform können zwei gepackte Formate angewandt werden. Das erste Format teilt die 32-Bit-Worte in zwei 16-Bit-Halbwortwerte. Das zweite gepackte Format teilt die 32-Bit-Worte in 4/8-Bit(Byte)-Werte.
- Das Laden und Speichern der gepackten Werte im Daten- oder Adressenregister wird durch die jeweiligen Lade- und Speicherbefehle, die oben beschrieben sind, unterstützt. Die ge packten Objekte können dann parallel verarbeitet werden durch einen Satz von speziellen gepackten arithmetischen Befehlen, die derartige arithmetische Operationen, wie Addition, Subtraktion, Multiplikation, Division, usw. durchführen. Z. B. ein Multiplikationsbefehl führt zwei 16-Bit-Multiplikationen parallel, wie in
6 gezeigt wird, durch. -
6 zeigt, wie Operationen Statusmerker in der CPU beeinflussen und wie eine Sättigung der unterschiedlichen Operationen erreicht werden kann. Der Operator40 schreibt seine Ergebnisse in irgendein Register42 . Eine Vergleichseinheit41 vergleicht das Ergebnis, das durch den Operator durchgeführt wird, und setzt entsprechende Merker in ein Merkerregister43 . Z. B. ein Trägerbit, ein Übertragbit, ein haftendes Übertragbit, ein fortgeschrittenes Übertragbit, ein haftendes fortschreitendes Übertragbit können zusätzlich zu anderen Merkern gesetzt werden. Ein fortgeschrittenes Übertragbit wird gesetzt, wenn ein arithmetischer Befehl "fast" einen Übertrag verursacht. Mit anderen Worten, die Vergleichseinheit vergleicht den Inhalt des Ergebnisregisters42 mit einem vorbestimmten Wert, der kleiner als die größte positive und/oder negative Zahl ist. Dieser Merker wird mit jedem arithmetischen Befehl aktualisiert. Ein haftendes Übertragbit wird parallel zu den Übertragbits gesetzt. Diese zwei Merker bleiben gesetzt, bis sie eindeutig durch einen entsprechenden Rücksetzbefehl zurückgesetzt werden. - Eine Addition wird auf individuellen gepackten Bytes oder Halbworten unter Verwendung der jeweiligen Additionsbefehle durchgeführt und sie können durch eine Sättigungseinheit
44 erweitert werden, die Übertrag oder Untertrag innerhalb der individuellen Bytes oder Halbworte ignoriert. Die Sättigungseinheit44 versieht jede Addition mit einer Funktion, die in dividuelle Bytes oder Halbworte bis zu dem positivsten Wert eines individuellen Übertrags oder bis zu dem negativsten Wert eines individuellen Untertrags sättigt. Z. B. kann die Vergleichseinheit41 den Inhalt des Ergebnisregisters42 mit einem vorbestimmten Sättigungswert vergleichen. Wenn der Inhalt größer ist als der vorbestimmte positive/negative Sättigungswert, wird dies der Sättigungseinheit44 angezeigt und die Sättigungseinheit44 setzt den Inhalt des Ergebnisregisters42 auf den jeweiligen positiven oder negativen Sättigungswert. Eine Sättigung kann für eine Vielzahl von arithmetischen Befehlen vorgesehen werden. - Viele DSP-bezogene Operationen benötigen das Handhaben eines so genannten Kreispuffers. Ein derartiger Puffer ist gewöhnlich durch einen Zeiger adressiert und die CPU muss dafür sorgen, wann immer der Zeiger das Ende des Puffers erreicht, ihn wieder auf den Anfang des Puffers zu setzen. Wenn die Länge des Kreispuffers unterschiedlich von irgendeiner Vielzahl von 2 Bytes ist, müssen einige Berechnungen durchgeführt werden, um den Beginn des Kreispuffers zu schalten. Wenn er eine Länge von 2n aufweist, ist mindestens ein Maskierungsbefehl notwendig, um den Zugriff des Puffers zu steuern. Die Datenverarbeitungseinheit gemäß der vorliegenden Erfindung stellt einen speziellen Mechanismus bereit, um die Kreispufferadressierung zu unterstützen.
-
7 zeigt einen Speicher1 , der über einen doppelwortbreiten Bus mit der Registerdatei2 gekoppelt ist. Die Datenverarbeitungseinheit umfasst Speichermittel31 , die eine Basisadresse31c speichert, eine Pufferlänge31a und einen Pufferindex31b . Diese Parameter können in einer zweiten Registerdatei, die das Adressenregister enthält, gespeichert werden, wobei die Basisadresse31c in einem Adressenregister ge speichert wird und die Pufferlänge31a und der Pufferindex31b in oberen und unteren Teilen eines zweiten Adressenregisters jeweils gespeichert werden. - Eine Kreispuffersteuereinheit
32 ist mit diesen Registern31a ,31b und31c gekoppelt. Eine Lade-/Speichersteuereinheit für den Kreispuffer33 ist mit der Steuereinheit32 und mit dem Speicher1 und der Registerdatei gekoppelt. Er hat auch Zugriff zu dem Pufferspeichermittel31 . Die Befehlsausführungseinheit der CPU ist mit der Nummer34 gekennzeichnet und empfängt bestimmte Steuereingaben, wie später erklärt wird. - Wichtigste Verwendung der Kreisadressierung ist ein Zugreifen auf Datenwerte im Kreispuffer, während eine Filterberechnung durchgeführt wird. Die Basisadresse
31c ist vorzugsweise in einem geraden Register der Adressenregisterdatei gespeichert, die ähnlich zu der Datenregisterdatei2 ist. Somit werden vorzugsweise die Parameter31a und31b in ungeraden Adressenregistern gespeichert, um einen Zugriff auf alle Parameter zur gleichen Zeit zu ermöglichen. Der Indexparameter31b kann durch einen Versatzfaktor inkrementiert werden. Die effektive Adresse wird durch die Kreispuffersteuereinheit32 definiert durch Addieren des Indexparameters31b zu dem Basisadressenparameter31c . Der Kreispuffer nimmt Speicherplätze ein, z. B. von Adressen "Basisadresse" + "Index". Die Kreispuffersteuereinheit32 inkrementiert automatisch das Indexregister31b durch die zugehörige Wortgröße, z. B. durch "1" für einen Wortzugriff und durch "2" für einen Doppelwortzugriff oder irgendeinen anderen Versatzfaktor und vergleicht das Indexregister31b mit dem Längenregister31a . Wenn beide gleich sind, wird der Index auf Null zurückgesetzt. Wenn ein Versatzfaktor addiert wird und der sich ergebende Index größer als die Länge ist, wird die Länge abgezogen von dem In dexparameter31b , um auf den korrekten Ort (Umhüllungsfunktion) zu zeigen. Somit umhüllt der automatische Mechanismus den Kreispuffer ohne zusätzliche Befehle. -
7 zeigt einen derartigen Kreispuffer, der aus Speicherzellen b1, b2 ... b8 besteht. Wenn die Kreispuffersteuereinheit startet auf den Puffer zuzugreifen, indem mit einem Startindex von "0" begonnen wird, wird auf die beiden ersten Zellen b1 und b2 und die nachfolgenden Zellen abgleichend zugegriffen, und keine weitere Steuerungsaktion ist notwendig. Wenn ein Startindex von z. B. "1" verwendet wird, oder der Versatzfaktor eine ungerade Zahl ist, muss ein Doppelwortzugriff, der bei dem Wort b8 beginnt, auf das Wort b1 als zweites Wort zugreifen. Das Wort b1 ist nicht fortlaufend in Bezug auf das Wort b8 gespeichert, wobei die Lade-/Speichersteuereinheit33 einen zweiten Befehl in die Befehlsausführungseinheit34 ausgibt, um während eines ersten Zyklus auf das Wort b8 und auf das Wort b1 während eines nachfolgenden Zyklus zuzugreifen. Nur in diesem Fall sind zwei Zugriffszyklen notwendig, um Daten zu laden oder zu speichern, welche die Grenze des Kreisspeichers überschreiten. Die Kreisspeicher sind gewöhnlich groß, und solche Zugriffe sind sehr rar, verglichen mit den "normalen" nicht grenzüberschreitenden Zugriffen. - Ein zweiter Adressiermodus ein sogenanntes Bitrückadressieren, wird in
8 gezeigt, das meistens in einer schnellen Fourier Transformation (FAT) verwendet wird. Wieder wird der Speicher1 mit der Registerdatei2 gekoppelt, wie in den vorhergehenden Figuren beschrieben. Die Datenverarbeitungseinheit umfasst Speichermittel35 , um die Bitrückparameter zu speichern, wie eine Basisadresse35c , einen Modifizierer35a und einen Index35b . Alle Parameter werden vorzugsweise in Adressenregistern, wie oben in Verbindung der Kreispufferadressierung beschrieben, gespeichert. Die Basisadresse wird vorzugsweise in einem geraden Speicherregister und die Modifizierer in dem oberen Teil und der Index in dem unteren Teil eines zweiten ungeraden Adressenregisters gespeichert, um einen parallelen Zugriff zu ermöglichen. - Die effektive Adresse wird durch die Nummer
39 angezeigt und automatisch mittels der Addierer36 ,38 und der Umkehrfunktionseinheit37 berechnet. Nach einem Zugriff auf den Speicher1 wird der Indexparameter35b nachinkrementiert mit dem Modifizierer35a mit Hilfe des Addierers3b . Der Index wird zu der Umkehrfunktionseinheit37 geführt, die das Bit n mit dem Bit (m – n) für n = 0, ... m austauscht; wobei m die Länge des Indexparameters35b anzeigt. Die Funktion, die durch die Einheit37 durchgeführt wird, ist einfach ein Spiegeln des Inhalts des Indexregisters35b an dem Zentrum des Registers. In einem 16-Bit-Register mit den Bits 0, ... 15 liegt das Zentrum zwischen dem Bit 7 und 8. Der umgekehrte Indexparameter wird dem Addierer38 zugeführt, der ihn mit der Basisadresse35c addiert. Das Ergebnis39 wird als Adresse für den Speicher1 verwendet und falls notwendig, an die physische Adresse der jeweiligen Speicherzelle übertragen. - Zum Illustrieren ist dann unter Verwendung eines 1024 Zeigers eines realen FFT mit 16 Bitwerten dann die Puffergröße 2048 Bytes. Ein Durchschreiten dieses Bereichs unter Verwendung eines Bitumkehrindexes würde die Sequenz von Byte-Indizes 0, 1024, 512, 1536, 256 ... ergeben. Diese Folge kann durch die Initialisierung des Index
35b auf Null und dem Modifizierer auf 0 × 0020 erhalten werden. - Im Allgemeinen wird der Wert des geforderten Modifizierers durch die Umkehrfunktion der Puffergröße/2 gegeben, wobei die Puffergröße in Bytes gegeben ist. Dieser Mechanismus spart Durchführungszeit und Speicherraum. Außerdem macht es einen FFT-Algorithmus viel leichter zu schreiben. Ohne einen Bitumkehradressiermodus würde es einen Durchgang mehr durch den Datensatz erfordern, um die FFT zu beenden. Die Anzahl der erforderten Extrazyklen ist proportional zu der Anzahl der Datenpunkte. Die Gesamterhöhung in der Zykluszahl hängt von dem Algorithmus, der zum Implementieren der Bitumkehrsoftware erforderlich, ab.
-
9 zeigt ein Blockdiagramm, das ein Beispiel einer Konfiguration einer Datenbearbeitungseinheit gemäß der vorliegenden Erfindung zeigt, um eine FIR-Filterfunktion durchzuführen. Ein Speicher1 enthält Daten 0 bis Daten N – 1 und Koeffizienten COE 0 bis COE N – 1. Der Speicher wird adressiert durch die Adressenregisterdatei45 , die entsprechende Zeiger enthält, und die mit einer Lade-/Speicheradressenarithmetik gekoppelt ist. Der Speicher1 ist auch verbunden über einen 64-Bit-Bus mit der Datenregisterdatei2 , die aktuelle Koeffizienten und Daten, die berechnet werden, enthält. Die Datenverarbeitungseinheit umfasst eine Vielzahl von Bussen47 ,48 ,49 und50 , die unterschiedliche Daten verarbeiten für die Durchführung in den unterschiedlichen arithmetischen Einheiten. Zwei Multiplizierer51 und52 werden vorgesehen, um zwei Multiplikationen parallel durchzuführen, deren Eingänge mit der Datenregisterdatei über den Bus47 gekoppelt sind. Weiterhin sind zwei 16-Bit-Addierer53 und54 vorgesehen, die über den Bus50 mit den Ergebnissen der Multiplizierer51 und52 gekoppelt sind. Der Bus48 ist mit den Ausgängen der Addierer53 und54 gekoppelt. Zwei zusätzliche Addierer55 und56 sind vorgesehen, deren Eingänge mit dem Bus48 gekoppelt sind und deren Ausgänge mit dem Bus49 gekoppelt sind. Der Bus47 , und deshalb die Datenregisterdatei2 , sind über unterschiedliche Leitungen mit Bussen48 und49 verbunden. Der Bus50 und der Bus49 sind zusätzlich mit dem Bus48 verbunden. - Beide Adressenmodi können in jeder Datenverarbeitungseinheit unabhängig von ihrem Speicherzugriffsmechanismus implementiert werden. Wie oben erwähnt, ist die vorliegende Erfindung nicht auf irgendeine Bitgröße beschränkt. Sie kann in eine Datenverarbeitungseinheit mit 16-Bit-Wortgrößen implementiert werden, bei der ein Halbwort durch 8 Bits geformt wird. Sie kann auch in eine Datenverarbeitungseinheit mit 64-Bit-Wortgröße implementiert werden, wo ein Halbwort durch 32 Bits und ein Viertelwort durch 16 Bits gebildet wird.
Claims (13)
- Datenverarbeitungseinheit mit: – einer Speichereinheit (
1 ), – mindestens einer Registerdatei (2 ) aufweisend: – eine Registerladung und einen Speicherpuffer (2b ) mit mindestens zwei Registersätzen (D0–D14; D1–D15), insbesondere Adressen- oder Datenregister, – eine erste Puffer/Auswahllogik (2a ) zum Verbinden der Registerladung und des Speicherpuffers (2b ) mit der Speichereinheit (1 ), wobei die erste Puffer/Auswahllogik (2a ) aufweist: – mindestens zwei Multiplexer/Trenneinheiten (8 ,9 ) zum Empfangen von Daten von der Speichereinheit (1 ), wobei jede Multiplexer/Trenneinheit (8 ,9 ) mit der Speichereinheit (1 ) über Datenausgangsleitungen (1a ,1d ) verbunden ist, – mindestens zwei Abgleicheinheiten (12 ,13 ), wobei jede Abgleicheinheit (12 ,13 ) mit einer der Multiplexer/Trenneinheiten (8 ,9 ), bzw. mit einem der Registersätze (D0–D14; D1–D15) verbunden ist, – mindestens zwei Auswahl/Verknüpfungseinheiten (11 ,14 ), wobei jede Auswahl/Verknüpfungseinheit (11 ,14 ) mit einem der Registersätze (D0–D14; D1–D15) jeweils verbunden ist, – mindestens zwei Multiplexer (7 ,10 ) zum Datenübertragen zu der Speichereinheit (1 ), wobei jeder Multiplexer (7 ,10 ) mit der Speichereinheit (1 ) mittels Dateneingabeleitungen (1b ,1c ) bzw. mit einer der Auswahl/Verknüpfungseinheiten (11 ,14 ) verbunden ist, – eine zweite Puffer/Auswahllogik (2c ) zum Koppeln der Registersätze (D0–D14; D1–D15) mit mindestens einer Ausführungseinheit (4 ,5 ,6 ), – eine Lade/Speichersteuereinheit (2d ), welche die Speichereinheit (1 ) und die Registersätze (D0–D14; D1–D15) verbindet. - Datenverarbeitungseinheit nach Anspruch 1, wobei die Datenverarbeitungseinheit mindestens eine Ausführungseinheit (
4 ,5 ,6 ) aufweist, die mit der zweiten Puffer/Auswahllogik (2c ) über mindestens einen Bus (3 ) verbunden ist, wodurch mindestens eine der Ausführungseinheiten (4 ,5 ,6 ) ein Addierer, ein Datenschieber, insbesondere ein komprimierender Datenverschieber (6 ), eine Logikeinheit, insbesondere ein Komparator, ein Vervielfacher (29 ,30 ), ein Vervielfachungsakkumulator (4 ), eine arithmetische Logikeinheit (5 ) oder eine Bitmanipulationseinheit (6 ) ist. - Datenverarbeitungseinheit nach Anspruch 1 oder 2, wobei die Lage/Speichersteuereinheit (
2d ) bestimmt ist, um die Speichereinheit (1 ) zu adressieren, und um die jeweiligen Register (2b ) während eines Datentransfers von den Registern (2b ) zu der Speichereinheit (1 ) oder während eines Datentransfers von der Speichereinheit (1 ) zu den Registern (2b ) auszuwählen. - Datenverarbeitungseinheit nach irgendeinem der Ansprüche 1 bis 3, wobei die Datenausgangsleitungen (
1a ,1d ) und/oder die Dateneingangsleitungen (1b ,1c ) Sätze von Wortleitungen sind, die insbesondere einen mehrere Worte weiten Bus bilden. - Datenverarbeitungseinheit nach Anspruch 4, wobei die Multiplexer/Trenneinheiten (
8 ,9 ) und die Abgleicheinheiten (12 ,13 ) dazu dienen, um jeden Registersatz (D0–D14; D1–D15) mit einem Satz von Wortleitungen jeweils zu koppeln, um einen abgeglichenen oder nicht abgeglichenen Mehrfachwortzugriff zu ermöglichen. - Datenverarbeitungseinheit nach irgendeinem der Ansprüche 1 bis 5, wobei mindestens eine der Multiplexer/Trenneinheiten (
8 ,9 ) dafür bestimmt ist, um Worte von der Speichereinheit (1 ) zu laden, und/oder um diese geladenen Worte in Halbworte oder in eine Vielzahl von Teilworten zu trennen. - Datenverarbeitungseinrichtung nach irgendeinem der Ansprüche 1 bis 6, wobei mindestens eine der Multiplexer/Trenneinheiten (
8 ,9 ) bestimmt ist, um die Worte oder die Halbworte oder die Teilworte durch die Abgleicheinheiten (12 ,13 ) in mindestens eines der Register (D0–D5), insbesondere in zwei benachbarte Register (D0–D5) zu verteilen. - Datenverarbeitungseinheit nach Anspruch 7, wobei mindestens eine der Abgleicheinheiten (
12 ,13 ) bestimmt ist, um die Halbworte, die durch die jeweiligen Multiplexer/Trenneinheiten (8 ,9 ) empfangen werden, in eine Hälfte eines Registers (D0–D15) zu laden und um die andere Hälfte des Registers (D0–D15) mit Nullen oder mit Einsen aufzufüllen, um ein vollständiges Wort zu bilden. - Datenverarbeitungseinheit nach irgendeinem der Ansprüche 1 bis 8, wobei mindestens eine der Abgleicheinheiten (
12 ,13 ) aktiviert ist, sodass Halbworte in der unteren oder oberen Hälfte des jeweiligen Registers (D0–D14; D1–D15) gespeichert werden. - Datenverarbeitungseinheit nach irgendeinem der Ansprüche 1 bis 4, wobei mindestens eine der Auswahl/Verknüpfungseinheiten (
11 ,12 ) bestimmt ist, um mindestens eines der Register (D0–D15) auszuwählen und/oder Halbworte oder Worte von den Registern (D0–D15) zu laden. - Datenverarbeitungseinheit nach Anspruch 10, wobei mindestens eine der Auswahl/Verknüpfungseinheiten (
11 ,12 ) bestimmt ist, um Halbworte von mindestens zwei der Register (D0–D14; D1–D15) mit einem Wort zu verknüpfen und/oder das Wort in der Speichereinheit (1 ) zu speichern. - Datenverarbeitungseinheit nach irgendeinem der Ansprüche 1 bis 4 und 10, wobei mindestens eine der Auswahl/Verknüpfungseinheiten (
11 ,14 ) deaktiviert ist, sodass der jeweilige Multiplexer (7 ,10 ) ein volles Wort an seinem Eingang von einem entsprechenden Register (D0–D14; D1–D15) empfängt. - Datenverarbeitungseinheit nach irgendeinem der vorhergehenden Ansprüche, wobei die Datenverarbeitungseinheit mindestens zwei Registerdateien (
17 ,18 ,19 ;20 ,25 ,26 ) umfasst, die mindestens zwei Registersätze aufweisen, wodurch die entsprechenden Registersätze der Registerdateien (17 ,18 ,19 ;20 ,25 ,26 ) mit der gleichen Ausführungseinheit (15 ,15 ;21 –24 ) jeweils verbunden sind.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US928764 | 1997-09-12 | ||
US08/928,764 US6260137B1 (en) | 1997-09-12 | 1997-09-12 | Data processing unit with digital signal processing capabilities |
PCT/US1998/018574 WO1999014663A2 (en) | 1997-09-12 | 1998-09-04 | Data processing unit with digital signal processing capabilities |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69824193D1 DE69824193D1 (de) | 2004-07-01 |
DE69824193T2 true DE69824193T2 (de) | 2005-05-19 |
Family
ID=25456710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69824193T Expired - Lifetime DE69824193T2 (de) | 1997-09-12 | 1998-09-04 | Datenverarbeitungseinheit mit der fähigkeit von digitaler signalverarbeitung |
Country Status (7)
Country | Link |
---|---|
US (1) | US6260137B1 (de) |
EP (1) | EP1019805B1 (de) |
JP (1) | JP2001516916A (de) |
KR (1) | KR20010030593A (de) |
DE (1) | DE69824193T2 (de) |
IL (1) | IL134362A0 (de) |
WO (1) | WO1999014663A2 (de) |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7395298B2 (en) * | 1995-08-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed data |
US6385634B1 (en) * | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US6786420B1 (en) | 1997-07-15 | 2004-09-07 | Silverbrook Research Pty. Ltd. | Data distribution mechanism in the form of ink dots on cards |
US6618117B2 (en) | 1997-07-12 | 2003-09-09 | Silverbrook Research Pty Ltd | Image sensing apparatus including a microcontroller |
US6803989B2 (en) | 1997-07-15 | 2004-10-12 | Silverbrook Research Pty Ltd | Image printing apparatus including a microcontroller |
US7705891B2 (en) | 1997-07-15 | 2010-04-27 | Silverbrook Research Pty Ltd | Correction of distortions in digital images |
AUPO802797A0 (en) | 1997-07-15 | 1997-08-07 | Silverbrook Research Pty Ltd | Image processing method and apparatus (ART54) |
US7110024B1 (en) | 1997-07-15 | 2006-09-19 | Silverbrook Research Pty Ltd | Digital camera system having motion deblurring means |
US6879341B1 (en) | 1997-07-15 | 2005-04-12 | Silverbrook Research Pty Ltd | Digital camera system containing a VLIW vector processor |
AUPO850597A0 (en) | 1997-08-11 | 1997-09-04 | Silverbrook Research Pty Ltd | Image processing method and apparatus (art01a) |
US6985207B2 (en) | 1997-07-15 | 2006-01-10 | Silverbrook Research Pty Ltd | Photographic prints having magnetically recordable media |
US6624848B1 (en) | 1997-07-15 | 2003-09-23 | Silverbrook Research Pty Ltd | Cascading image modification using multiple digital cameras incorporating image processing |
US6948794B2 (en) | 1997-07-15 | 2005-09-27 | Silverbrook Reserach Pty Ltd | Printhead re-capping assembly for a print and demand digital camera system |
US6690419B1 (en) | 1997-07-15 | 2004-02-10 | Silverbrook Research Pty Ltd | Utilising eye detection methods for image processing in a digital image camera |
US6230257B1 (en) * | 1998-03-31 | 2001-05-08 | Intel Corporation | Method and apparatus for staggering execution of a single packed data instruction using the same circuit |
US6230253B1 (en) * | 1998-03-31 | 2001-05-08 | Intel Corporation | Executing partial-width packed data instructions |
AUPP702098A0 (en) | 1998-11-09 | 1998-12-03 | Silverbrook Research Pty Ltd | Image creation method and apparatus (ART73) |
US6820189B1 (en) | 1999-05-12 | 2004-11-16 | Analog Devices, Inc. | Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation |
US7107302B1 (en) * | 1999-05-12 | 2006-09-12 | Analog Devices, Inc. | Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units |
US7111155B1 (en) | 1999-05-12 | 2006-09-19 | Analog Devices, Inc. | Digital signal processor computation core with input operand selection from operand bus for dual operations |
EP2267596B1 (de) | 1999-05-12 | 2018-08-15 | Analog Devices, Inc. | Prozessorkern zur Verarbeitung von Befehlen verschiedener Formate |
US6859872B1 (en) | 1999-05-12 | 2005-02-22 | Analog Devices, Inc. | Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation |
AUPQ056099A0 (en) | 1999-05-25 | 1999-06-17 | Silverbrook Research Pty Ltd | A method and apparatus (pprint01) |
GB2352065B (en) * | 1999-07-14 | 2004-03-03 | Element 14 Ltd | A memory access system |
US6539467B1 (en) * | 1999-11-15 | 2003-03-25 | Texas Instruments Incorporated | Microprocessor with non-aligned memory access |
FR2802321A1 (fr) * | 1999-12-09 | 2001-06-15 | Ass Pour La Promotion De La Mi | Processeur configurable par l'utilisateur |
US6829696B1 (en) * | 1999-12-30 | 2004-12-07 | Texas Instruments Incorporated | Data processing system with register store/load utilizing data packing/unpacking |
US6453405B1 (en) * | 2000-02-18 | 2002-09-17 | Texas Instruments Incorporated | Microprocessor with non-aligned circular addressing |
GB2363869B (en) * | 2000-06-20 | 2004-06-23 | Element 14 Inc | Register addressing |
US7120781B1 (en) * | 2000-06-30 | 2006-10-10 | Intel Corporation | General purpose register file architecture for aligned simd |
US7430578B2 (en) * | 2001-10-29 | 2008-09-30 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed byte data |
EP1512069B1 (de) * | 2002-05-24 | 2020-12-09 | Telefonaktiebolaget LM Ericsson (publ) | Adressenerzeugungseinheit für einen prozessor |
JP3958662B2 (ja) * | 2002-09-25 | 2007-08-15 | 松下電器産業株式会社 | プロセッサ |
EP1701249A1 (de) * | 2005-03-11 | 2006-09-13 | Interuniversitair Microelektronica Centrum Vzw | ASIP (Prozessor mit Anwendungsgebiet-spezifischem Befehlssatz) Mikrokomputer mit sehr niedrigem Energiebedarf |
US7788420B2 (en) * | 2005-09-22 | 2010-08-31 | Lsi Corporation | Address buffer mode switching for varying request sizes |
US20100141668A1 (en) * | 2006-10-26 | 2010-06-10 | Nxp, B.V. | Address calculation unit |
JP5311008B2 (ja) * | 2008-08-11 | 2013-10-09 | セイコーエプソン株式会社 | 信号処理プロセッサ及び半導体装置 |
JP5327432B2 (ja) * | 2008-08-11 | 2013-10-30 | セイコーエプソン株式会社 | 信号処理プロセッサ及び半導体装置 |
US8904115B2 (en) * | 2010-09-28 | 2014-12-02 | Texas Instruments Incorporated | Cache with multiple access pipelines |
US8935468B2 (en) * | 2012-12-31 | 2015-01-13 | Cadence Design Systems, Inc. | Audio digital signal processor |
US10228941B2 (en) * | 2013-06-28 | 2019-03-12 | Intel Corporation | Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register |
US20170249144A1 (en) * | 2016-02-26 | 2017-08-31 | Qualcomm Incorporated | Combining loads or stores in computer processing |
US11593117B2 (en) | 2018-06-29 | 2023-02-28 | Qualcomm Incorporated | Combining load or store instructions |
US11442726B1 (en) * | 2021-02-26 | 2022-09-13 | International Business Machines Corporation | Vector pack and unpack instructions |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4992934A (en) | 1986-12-15 | 1991-02-12 | United Technologies Corporation | Reduced instruction set computing apparatus and methods |
JP2816248B2 (ja) * | 1989-11-08 | 1998-10-27 | 株式会社日立製作所 | データプロセッサ |
US6070003A (en) * | 1989-11-17 | 2000-05-30 | Texas Instruments Incorporated | System and method of memory access in apparatus having plural processors and plural memories |
CA2045705A1 (en) * | 1990-06-29 | 1991-12-30 | Richard Lee Sites | In-register data manipulation in reduced instruction set processor |
EP0473805A1 (de) | 1990-09-03 | 1992-03-11 | International Business Machines Corporation | Computersystem mit verbesserter Leistung |
US5574928A (en) * | 1993-10-29 | 1996-11-12 | Advanced Micro Devices, Inc. | Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments |
US5590352A (en) | 1994-04-26 | 1996-12-31 | Advanced Micro Devices, Inc. | Dependency checking and forwarding of variable width operands |
US5734874A (en) * | 1994-04-29 | 1998-03-31 | Sun Microsystems, Inc. | Central processing unit with integrated graphics functions |
EP0681236B1 (de) * | 1994-05-05 | 2000-11-22 | Conexant Systems, Inc. | Raumzeigersdatenpfad |
CN1094610C (zh) | 1994-12-02 | 2002-11-20 | 英特尔公司 | 可以对复合操作数进行压缩操作和拆开操作的微处理器 |
US5659700A (en) * | 1995-02-14 | 1997-08-19 | Winbond Electronis Corporation | Apparatus and method for generating a modulo address |
US5721892A (en) * | 1995-08-31 | 1998-02-24 | Intel Corporation | Method and apparatus for performing multiply-subtract operations on packed data |
US6385634B1 (en) * | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US5852726A (en) * | 1995-12-19 | 1998-12-22 | Intel Corporation | Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner |
US5896543A (en) * | 1996-01-25 | 1999-04-20 | Analog Devices, Inc. | Digital signal processor architecture |
US5864713A (en) * | 1996-02-12 | 1999-01-26 | Hewlett-Packard Company | Method for determining if data should be written at the beginning of a buffer depending on space available after unread data in the buffer |
US5752271A (en) * | 1996-04-29 | 1998-05-12 | Sun Microsystems, Inc. | Method and apparatus for using double precision addressable registers for single precision data |
US5812147A (en) * | 1996-09-20 | 1998-09-22 | Silicon Graphics, Inc. | Instruction methods for performing data formatting while moving data between memory and a vector register file |
US5913054A (en) * | 1996-12-16 | 1999-06-15 | International Business Machines Corporation | Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle |
-
1997
- 1997-09-12 US US08/928,764 patent/US6260137B1/en not_active Expired - Lifetime
-
1998
- 1998-09-04 DE DE69824193T patent/DE69824193T2/de not_active Expired - Lifetime
- 1998-09-04 EP EP98945910A patent/EP1019805B1/de not_active Expired - Lifetime
- 1998-09-04 IL IL13436298A patent/IL134362A0/xx unknown
- 1998-09-04 KR KR1020007002645A patent/KR20010030593A/ko not_active Application Discontinuation
- 1998-09-04 WO PCT/US1998/018574 patent/WO1999014663A2/en active IP Right Grant
- 1998-09-04 JP JP2000512132A patent/JP2001516916A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2001516916A (ja) | 2001-10-02 |
DE69824193D1 (de) | 2004-07-01 |
EP1019805A2 (de) | 2000-07-19 |
EP1019805B1 (de) | 2004-05-26 |
US6260137B1 (en) | 2001-07-10 |
WO1999014663A3 (en) | 1999-08-05 |
WO1999014663A2 (en) | 1999-03-25 |
KR20010030593A (ko) | 2001-04-16 |
IL134362A0 (en) | 2001-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69824193T2 (de) | Datenverarbeitungseinheit mit der fähigkeit von digitaler signalverarbeitung | |
DE69525294T2 (de) | Registerdatei mit Multi-tasking Unterstützung | |
DE3486457T2 (de) | Integrierter Einchip-Prozessor für die Verarbeitung von digitalen Signalen entweder in einem schnellen oder einem langsamen Betrieb | |
DE3851858T2 (de) | Digitaler Signalprozessor. | |
DE3685913T2 (de) | Vektorenverarbeitung. | |
DE3885775T2 (de) | Digitaler Signalprozessor. | |
DE69230057T2 (de) | Risc mikroprozessorarchitektur mit mehrere registersätze von unterschiedlichen typen | |
DE3424962C2 (de) | ||
DE2724125C2 (de) | ||
DE69418646T2 (de) | Gleitkommaprozessor für einen hochleistungsfähigen dreidimensionalen Graphikbeschleuniger | |
DE69430838T2 (de) | Schaltung und Verfahren zur parallelen Verschiebung und Addition | |
DE69707486T2 (de) | Architektur eines integrierten bausteins zur digitalen signalverarbeitung | |
DE69627807T2 (de) | Datenprozessor zum gleichzeitigen Dataladen und Durchführung einer multiplizier-addier Operation | |
DE3689923T2 (de) | Dreiphasen-Pipeline-Signalprozessor. | |
DE69131267T2 (de) | Datenverarbeitungssystem für Daten mit einfacher Präzision und mit doppelter Präzision | |
DE68911398T2 (de) | Methode und digitaler computer zum vorausholen von vektordaten aus dem speicher in einem für skalaverarbeitung bestimmten speichersystem. | |
DE69928428T2 (de) | Multiplizier-akkumulator-konfiguration zur effizienten planung in einem digitalen signalverarbeitungsrechner | |
DE2949375C2 (de) | Datenbussystem für eine Datenverabeitungsanlage mit einer Gleitkommaeinheit in Pipeline-Struktur | |
DE69826404T2 (de) | Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen | |
EP0010185B1 (de) | Virtuell-Adressiervorrichtung für einen Computer | |
DE19735348A1 (de) | Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern | |
DE4403917C2 (de) | Vorrichtung zum Berechnen einer Bit-Besetzungszählung | |
DE2533737C2 (de) | Mikroprozessor mit aufteilbarer Adressenschiene | |
DE69616718T4 (de) | Vorrichtung und verfahren zur bestimmung von adressen fehlausgerichteter daten | |
DE69718485T2 (de) | Registeraddressierung in einer datenverarbeitungsvorrichtung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
R082 | Change of representative |
Ref document number: 1019805 Country of ref document: EP Representative=s name: SCHWEIGER & PARTNER, DE |
|
R081 | Change of applicant/patentee |
Ref document number: 1019805 Country of ref document: EP Owner name: INFINEON TECHNOLOGIES AG, DE Free format text: FORMER OWNER: INFINEON TECHNOLOGIES NORTH AMERICA CORP., SAN JOSE, US Effective date: 20121128 |
|
R082 | Change of representative |
Ref document number: 1019805 Country of ref document: EP Representative=s name: SCHWEIGER & PARTNER, DE Effective date: 20121128 |