DE69824193T2 - Datenverarbeitungseinheit mit der fähigkeit von digitaler signalverarbeitung - Google Patents

Datenverarbeitungseinheit mit der fähigkeit von digitaler signalverarbeitung Download PDF

Info

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
Application number
DE69824193T
Other languages
English (en)
Other versions
DE69824193D1 (de
Inventor
G. Rod FLECK
Daniel Martin
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies North America Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies North America Corp filed Critical Infineon Technologies North America Corp
Publication of DE69824193D1 publication Critical patent/DE69824193D1/de
Application granted granted Critical
Publication of DE69824193T2 publication Critical patent/DE69824193T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction 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 Speichereinheit 1 einschließt, welche an eine Registerdatei 2 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 Speicher 1, ist eine Puffer/Auswahllogik 2a vorgesehen. In dieser Ausführungsform zeigt die Nummer 2b 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 Speichereinheit 1 und der Puffer/Auswahllogik 2a ist 64 Bits weit, wodurch zwei aufeinander folgende Worte in den Speicher 1 adressiert werden können. Eine Lade-/Speichersteuereinheit 2d adressiert die Speichereinheit 1 und wählt die entsprechenden Register 2b aus während eines Übertragens von der Registerdatei 2 zu der Speichereinheit 1 oder umgekehrt. Die Registerdatei 2 umfasst weiterhin eine zweite Puffer/Auswahllogik 2c, die eine Vielzahl von Durchführungseinheiten 4, 5 und 6 damit verbindet. Ein zweiter Bus 3 ist als eine Verknüpfung zwischen der Puffer/Auswahllogik 2c und den Ausführungseinheiten 4, 5 und 6 vorgesehen. Durch die jeweilige Puffer/Auswahllogik 2a oder 2c 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 Registern 2b und dem Speicher 1 in größerem Detail. Der Speicher 1 ist in Dop pelworten organisiert, was einen Zugriff gleichzeitig auf zwei aufeinander folgende Worte ermöglicht, z. B. auf das Wort 1e und das Wort 1f oder auf das Wort 1f und 1g. Ein erster Satz von Datenausgabeleitungen 1a, die in dieser Ausführungsform 32 Bits aufweisen, ist mit einer Multiplexer/Trenneinheit 8 verbunden, welche diese Leitungen 1a über die Abgleicheinheiten 12 oder 13, entweder mit einem ungeraden Register D1, D3, D5 ... D15 oder mit einem geraden Register D2, D4, D6 ... D14, koppelt. Ein zweiter Satz der Datenausgangsleitungen 1d ist mit einer Multiplexer/Trenneinheit 9 verbunden, welche diese Leitung über Abgleicheinheiten 13 oder 12 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/Verkettungseinheit 11 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 Multiplexer 7 geliefert, der entweder mit dem ersten oder mit dem zweiten Satz der Dateneingangsleitungen 1b und 1c gekoppelt ist, welche den Speicher 1 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 und 9 über die Datenausgangsleitung 1a und 1d geladen. In diesem Modus arbeiten die Abgleicheinheiten 12 und 13 als Multiplexer, welche die Datenleitungen 1a mit den ungeraden Registern oder mit den geraden Registern verbinden bzw. die Datenleitungen 1d 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 Wort 1e und das nachfolgende Wort 1f, oder es kann ein Zugriff auf eine nicht abgeglichene Adresse sein, wie das Wort 1f und das nachfolgende 1g. Die Multiplexer 7, 8, 9 und 10 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 Datenausgangsleitungen 1d (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 Ausgangsdatenleitungen 1a adressiert und als Ziel das ungerade Register D9 anzeigt, wird die Speicherzelle 1e über die Leitungen 1a und die Einheiten 8 und 12 mit dem Register D9 gekoppelt, und die nachfolgende Speicherzelle 1f wird über die Leitungen 1d und die Einheiten 9 und 13 mit dem Register D8 gekoppelt. Wenn der Befehl eine Adressenquelle einschließt, welche die Ausgangsleitungen 1d adressiert, und als Ziel das ungerade Register D9 anzeigt, wird die Speicherzelle 1f über die Leitungen 1d und die Einheiten 9 und 12 mit dem Register D9 gekoppelt, und die nachfolgende Speicherzelle 1g wird über die Leitungen 1a und die Einheiten 8 und 13 mit dem Register D8 gekoppelt. Wenn der Befehl eine Quellenadresse einschließt, welche die Datenausgangsleitungen 1a adressiert und als Ziel ein gerades Register D2 anzeigt, wird die Speicherzelle 1e über die Leitungen 1a und die Einheiten 8 und 13 mit dem Register D2 gekoppelt, und die Speicherzelle 1f wird über die Leitungen 1d und die Einheiten 9 und 12 mit dem Register D3 gekoppelt. Wenn der Befehl eine Quellenadresse einschließt, welche die Datenausgangsleitungen 1d adressiert und als Ziel gerade Register D2 anzeigt, wird die Speicherzelle 1f über die Leitungen 1d und die Einheiten 9 und 13 mit dem Register D2 gekoppelt, und die Speicherzelle 1g wird über die Leitungen 1d und die Einheiten 9 und 12 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 oder 1d geladen und in Halbworte durch die Einheiten 8 oder 9 geteilt, die in den jeweiligen unteren Hälften eines Wortes platziert sind. Fakultativ können Einheiten 12 und 13 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 Einheit 8 oder die Einheit 9 trennt das Wort, das von den Leitungen 1a oder 1d empfangen wurde, in zwei Halbworte und verteilt sie über die Einheiten 12 und 13 zu den unteren Hälften der jeweiligen geraden oder ungeraden Register. Die Einheiten 12 und 13 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 Einheiten 12 und 13 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 oder 1d geladen und in zwei Halbworte durch die Einheiten 8 oder 9 ge trennt, die in den oberen Hälften der jeweiligen Worte platziert sind. Fakultativ können Einheiten 12 und 13 die jeweiligen Halbworte durch Nullen auf Worte erweitern. Die Einheit 8 oder die Einheit 9 trennt die Worte, die von den Leitungen 1a oder 1d empfangen werden in zwei Halbworte, welche die oberen und unteren Hälften des Wortes repräsentieren und verteilt sie über die Einheiten 12 und 13 in die oberen Hälften der jeweiligen geraden und ungeraden Register. In den Einheiten 12 und 13 können diese Halbworte zu Worten erweitert werden, durch Auffüllen der unteren Hälfte mit "0". Wenn die Einheiten 12 und 13 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 oder 14 geliefert. Die zwei Halbworte werden zu einem Wort kombiniert und in der Speichereinheit 1 über den Multiplexer 7 oder 10 und über die Dateneingangsleitungen entweder 1b oder 1c 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 oder 14 zugeführt. Die zwei Halbworte werden kombiniert zu einem Wort in der Speichereinheit 1 über den Multiplexer 7 oder 10 und über die Dateneingangsleitungen entweder 1b oder 1c 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 oder 10 zugeführt und in der Speichereinheit über die Dateneingangsleitungen 1b und 1c gespeichert. Dieser Befehl arbeitet in der gleichen Weise wie ein "Lade Doppelwort zu einem Register"-Befehl, der oben beschrieben ist. Die Einheiten 7 und 10 arbeiten als Multiplexer, die den Inhalt von jedem Register entweder zu den Dateneingangsleitungen 1b oder 1c verteilen. Die Einheiten 11 und 14 sind deaktiviert, sodass die Einheiten 7 und 10 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. Die 3 bis 5 zeigen, wie diese Einheiten mit der Registerdatei verbunden sind und wie sie arbeiten.
  • In 3 werden zwei Register 17 und 18, die 32 Bits als ein Wort aufweisen, mit zwei Operatoreinheiten 15 und 16 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 Registers 17 mit dem ersten Eingang der Operatoreinheit 15 gekoppelt, und die untere Hälfte des Registers 17 ist mit dem ersten Eingang der Operatoreinheit 16 gekoppelt. Andererseits ist die obere Hälfte des Registers 18 mit dem zweiten Eingang von der Operatoreinheit 15 gekoppelt, und die untere Hälfte des Registers 18 ist mit dem zweiten Eingang der Operatoreinheit 16 gekoppelt. Die Operatoreinheiten umfassen mindestens eine Halbwortbreiteausgabe. Die Ausgabe der Operatoreinheit 15 ist mit der oberen Hälfte des dritten Registers 19 gekoppelt, und die Ausgabe der Operatoreinheit 16 ist mit dem unteren Halbwort des Registers 19 gekoppelt.
  • 4 zeigt einen zweiten Typ der gepackten arithmetischen oder logischen Operationen. Drei Register 20, 25 und 26 sind in vier Teile geteilt. In dieser Ausführungsform enthält jedes Teil 8 Bits. Vier Operatoreinheiten 21, 22, 23 und 24 sind vorgesehen und zugehörig zu jeweils 8-Bit-Teile der Register 20, 25 und 26. Die vier Teile der Register 20 und 25 stellen die Eingangswerte für jede Operatoreinheit 21, 22, 23 und 24 bereit, während die Ausgangssignale jeder Operatorein heit 21, 22, 23 und 24 an die jeweiligen Teile der Register 26 geliefert werden.
  • 5 zeigt eine Ausführungsform gemäß 3, worin jede Operatoreinheit ein Multiplizierer 29 und 30 ist. Die Multiplizierer 29 und 30 können z. B. 16 Bit Multiplizierer sein, die ein 32-Bit-Ergebnis erzeugen. Die oberen Halbworte von jedem Ergebnis werden dem Ergebnisregister 19 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 Bus 3 und die jeweiligen Eingangs- und Ausgangsleitungen, die notwendig sind, um die jeweilige Durchführungseinheiten 4, 5 und 6 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 Operator 40 schreibt seine Ergebnisse in irgendein Register 42. Eine Vergleichseinheit 41 vergleicht das Ergebnis, das durch den Operator durchgeführt wird, und setzt entsprechende Merker in ein Merkerregister 43. 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 Ergebnisregisters 42 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ättigungseinheit 44 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 Vergleichseinheit 41 den Inhalt des Ergebnisregisters 42 mit einem vorbestimmten Sättigungswert vergleichen. Wenn der Inhalt größer ist als der vorbestimmte positive/negative Sättigungswert, wird dies der Sättigungseinheit 44 angezeigt und die Sättigungseinheit 44 setzt den Inhalt des Ergebnisregisters 42 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 Speicher 1, der über einen doppelwortbreiten Bus mit der Registerdatei 2 gekoppelt ist. Die Datenverarbeitungseinheit umfasst Speichermittel 31, die eine Basisadresse 31c speichert, eine Pufferlänge 31a und einen Pufferindex 31b. Diese Parameter können in einer zweiten Registerdatei, die das Adressenregister enthält, gespeichert werden, wobei die Basisadresse 31c in einem Adressenregister ge speichert wird und die Pufferlänge 31a und der Pufferindex 31b in oberen und unteren Teilen eines zweiten Adressenregisters jeweils gespeichert werden.
  • Eine Kreispuffersteuereinheit 32 ist mit diesen Registern 31a, 31b und 31c gekoppelt. Eine Lade-/Speichersteuereinheit für den Kreispuffer 33 ist mit der Steuereinheit 32 und mit dem Speicher 1 und der Registerdatei gekoppelt. Er hat auch Zugriff zu dem Pufferspeichermittel 31. Die Befehlsausführungseinheit der CPU ist mit der Nummer 34 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 Datenregisterdatei 2 ist. Somit werden vorzugsweise die Parameter 31a und 31b in ungeraden Adressenregistern gespeichert, um einen Zugriff auf alle Parameter zur gleichen Zeit zu ermöglichen. Der Indexparameter 31b kann durch einen Versatzfaktor inkrementiert werden. Die effektive Adresse wird durch die Kreispuffersteuereinheit 32 definiert durch Addieren des Indexparameters 31b zu dem Basisadressenparameter 31c. Der Kreispuffer nimmt Speicherplätze ein, z. B. von Adressen "Basisadresse" + "Index". Die Kreispuffersteuereinheit 32 inkrementiert automatisch das Indexregister 31b 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 Indexregister 31b mit dem Längenregister 31a. 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 dexparameter 31b, 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-/Speichersteuereinheit 33 einen zweiten Befehl in die Befehlsausführungseinheit 34 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 Speicher 1 mit der Registerdatei 2 gekoppelt, wie in den vorhergehenden Figuren beschrieben. Die Datenverarbeitungseinheit umfasst Speichermittel 35, um die Bitrückparameter zu speichern, wie eine Basisadresse 35c, einen Modifizierer 35a und einen Index 35b. 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 Addierer 36, 38 und der Umkehrfunktionseinheit 37 berechnet. Nach einem Zugriff auf den Speicher 1 wird der Indexparameter 35b nachinkrementiert mit dem Modifizierer 35a mit Hilfe des Addierers 3b. Der Index wird zu der Umkehrfunktionseinheit 37 geführt, die das Bit n mit dem Bit (m – n) für n = 0, ... m austauscht; wobei m die Länge des Indexparameters 35b anzeigt. Die Funktion, die durch die Einheit 37 durchgeführt wird, ist einfach ein Spiegeln des Inhalts des Indexregisters 35b 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 Addierer 38 zugeführt, der ihn mit der Basisadresse 35c addiert. Das Ergebnis 39 wird als Adresse für den Speicher 1 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 Speicher 1 enthält Daten 0 bis Daten N – 1 und Koeffizienten COE 0 bis COE N – 1. Der Speicher wird adressiert durch die Adressenregisterdatei 45, die entsprechende Zeiger enthält, und die mit einer Lade-/Speicheradressenarithmetik gekoppelt ist. Der Speicher 1 ist auch verbunden über einen 64-Bit-Bus mit der Datenregisterdatei 2, die aktuelle Koeffizienten und Daten, die berechnet werden, enthält. Die Datenverarbeitungseinheit umfasst eine Vielzahl von Bussen 47, 48, 49 und 50, die unterschiedliche Daten verarbeiten für die Durchführung in den unterschiedlichen arithmetischen Einheiten. Zwei Multiplizierer 51 und 52 werden vorgesehen, um zwei Multiplikationen parallel durchzuführen, deren Eingänge mit der Datenregisterdatei über den Bus 47 gekoppelt sind. Weiterhin sind zwei 16-Bit-Addierer 53 und 54 vorgesehen, die über den Bus 50 mit den Ergebnissen der Multiplizierer 51 und 52 gekoppelt sind. Der Bus 48 ist mit den Ausgängen der Addierer 53 und 54 gekoppelt. Zwei zusätzliche Addierer 55 und 56 sind vorgesehen, deren Eingänge mit dem Bus 48 gekoppelt sind und deren Ausgänge mit dem Bus 49 gekoppelt sind. Der Bus 47, und deshalb die Datenregisterdatei 2, sind über unterschiedliche Leitungen mit Bussen 48 und 49 verbunden. Der Bus 50 und der Bus 49 sind zusätzlich mit dem Bus 48 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)

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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; 2124) jeweils verbunden sind.
DE69824193T 1997-09-12 1998-09-04 Datenverarbeitungseinheit mit der fähigkeit von digitaler signalverarbeitung Expired - Lifetime DE69824193T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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