[go: up one dir, main page]

DE69625256T2 - Mikrorechner - Google Patents

Mikrorechner

Info

Publication number
DE69625256T2
DE69625256T2 DE69625256T DE69625256T DE69625256T2 DE 69625256 T2 DE69625256 T2 DE 69625256T2 DE 69625256 T DE69625256 T DE 69625256T DE 69625256 T DE69625256 T DE 69625256T DE 69625256 T2 DE69625256 T2 DE 69625256T2
Authority
DE
Germany
Prior art keywords
instruction
register
data
dsp
address
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
DE69625256T
Other languages
English (en)
Other versions
DE69625256D1 (de
Inventor
Yasushi Akao
Shiro Baba
Toru Baji
Hironobu Hasegawa
Atsushi Kiuchi
Koki Noguchi
Hiroshi Ohsuga
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP34744195A external-priority patent/JP3727395B2/ja
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of DE69625256D1 publication Critical patent/DE69625256D1/de
Application granted granted Critical
Publication of DE69625256T2 publication Critical patent/DE69625256T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7817Specially adapted for signal processing, e.g. Harvard architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3552Indexed addressing using wraparound, e.g. modulo or circular addressing
    • 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
    • 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/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3824Operand accessing
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Signal Processing (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Microcomputers (AREA)
  • Advance Control (AREA)

Description

  • Die vorliegende Erfindung betrifft einen logischen integrierten Halbleiterschaltkreis (LSI), der mit einer zentralen Verarbeitungseinheit (CPU) und einer digitalen Signalverarbeitungseinheit (DSP) ausgestattet ist und zu einem integrierten Halbleiterschaltkreis ausgebildet ist, und eine effektiv auf einen Datenprozessor (z. B. einen Einchip-Mikroprozessor oder einen Einchip-Mikrocomputer) zur schnellen Verarbeitung angewandte Technik.
  • Die japanische Patentanmeldung Nr. 296778/1992 (entsprechend dem US-Patent Nr. 08/145157) ist ein Dokument, das einen Einchip-Mikrocomputer beschreibt, bei dem eine Arithmetkik-Logik-Einheit und ein Multiplizierer auf demselben Halbleiterchip angebracht sind.
  • Gemäß der obigen Offenlegungsschrift enthält ein logischer LSI-Chip eine zentrale Verarbeitungseinheit, einen Bus, einen Speicher und einen Multiplizierer und weist insbesondere eine Befehlssignalleitung zum Übermitteln eines Befehls für eine Multiplikationsanweisung bezüglich des Lesens von Daten von der zentralen Verarbeitungseinheit zu dem Multiplizierer, während die Daten aus dem Speicher ausgelesen werden, auf. Da der Befehl der Multiplikationsanweisung bezüglich des Lesens von Daten von der zentralen Verarbeitungseinheit zu dem Multiplizierer übermittelt wird, während die zentrale Verarbeitungseinheit Daten aus dem Speicher ausliest, ist es als Folge möglich, direkt Daten zwischen dem Speicher und dem Multiplizierer zu übermitteln.
  • Der Erfinder und andere haben die Ausbildung einer zentralen Verarbeitungseinheit und einer digitalen Signalverarbeitungseinheit (DSP) in einem integrierten Halbleiterschaltkreis (LSI) und die Beschleunigung der digitalen Signalverarbeitung untersucht.
  • Das obige Dokument realisiert eine Beschleunigung der Multiplikation, indem es ermöglicht wird, direkt Daten aus einem Speicher zu einem Multiplizierer zu übermitteln. Bei Annahme einer Pipeline-Verarbeitung der Anweisungsausführung durch eine zentrale Verarbeitungseinheit berücksichtigt das obige Dokument jedoch nicht die Situation, in der der Abrufzyklus einer durch eine zentrale Verarbeitungseinheit auszuführenden Anweisung mit dem Speicherzugriffszyklus für die Multiplikation in Konkurrenz steht.
  • Außerdem betrachtet das obige Dokument auch nicht das parallele Lesen mehrerer Operanden für die Addition und Multiplikation aus einem Speicher und das Beschleunigen der Operationsverarbeitung. Weiterhin wird in diesem Fall von dem Erfinder und anderen festgestellt, dass die operationale Einfachheit eines Mikrocomputers verschlechtert wird, wenn nicht die Beziehung mit dem externen Zugriff durch die zentrale Verarbeitungseinheit berücksichtigt wird.
  • Die europäische Patentanmeldung Nr. 0363222 beschreibt eine Vorrichtung zur Bereitstellung einer verbesserten Effizienz im Betrieb einer zentralen Verarbeitungseinheit mit mehreren Verarbeitungseinheiten, indem ein erster Typ von Anweisung für einen ersten Prozessor und ein zweiter Typ von Anweisung für einen zweiten Prozessor verwendet wird. Die beiden Anweisungen in dem obigen Dokument bilden einen Teil eines 64-Bit- Quadworts, das in einem Anweisungs-Cache gespeichert und dann decodiert wird, so dass die erste und die zweite Anweisung zu dem ersten bzw. zweiten Prozessor gesendet werden. Dafür muss der logische Umfang des Decodiererschaltkreises hoch sein.
  • Gemäß der vorliegenden Erfindung wird ein Einchip- Mikroprozessor bereitgestellt, mit:
  • einer zentralen Verarbeitungseinheit;
  • einer digitalen Signalverarbeitungseinheit zum synchronen Betrieb durch die zentrale Verarbeitungseinheit; und
  • einem internen Bus, der gemeinsam mit der zentralen Verarbeitungseinheit und der digitalen Signalverarbeitungseinheit verbunden ist;
  • wobei die zentrale Verarbeitungseinheit eine Ausführungssteuereinheit umfasst, die eine vorgegebene Verarbeitung für eine Anweisung eines ersten und eines zweiten Formats durchführen kann;
  • wobei die Anweisung des ersten Formats einen ersten Codebereich umfasst, der eine von der zentralen Verarbeitungseinheit gesteuerte Datenübermittlung zu und von der digitalen Signalverarbeitungseinheit spezifiziert;
  • die Anweisung des zweiten Formats einen zweiten Codebereich mit dem gleichen Format wie der erste Codebereich und einen dritten Codebereich zur Spezifizierung einer arithmetischen Verarbeitung umfasst, wobei die für die digitale Signalverarbeitungseinheit in dem zweiten Codebereich spezifizierten übermittelten Daten benutzt werden;
  • die Anweisung des ersten und die des zweiten Formats einen vierten Codebereich umfassen, der anzeigt, ob die betreffende Anweisung das erste oder das zweite Format aufweist; und
  • die Anweisung des ersten und die des zweiten Formats von der digitalen Signalverarbeitungseinheit nach einer vorgegebenen Verarbeitung der zentralen Verarbeitungseinheit ausgeführt wird.
  • Der Erfinder und andere haben festgestellt, dass die Konzeption der Zuweisung von Codes zu einer CPU- Anweisung (ersten Anweisung) und einer DSP-Anweisung (zweiten Anweisung) und das Format der DSP-Anweisung gemäß der obigen Beschreibung die Zunahme des logischen Umfangs eines Anweisungsdecodierungsschaltkreises im äußersten Maße einschränken können.
  • Die vorliegende Erfindung gestattet eine beschleunigte digitale Signalverarbeitung durch Anbringen einer zentralen Verarbeitungseinheit und einer digitalen Signalverarbeitungseinheit auf einem integrierten Halbleiterschaltkreis.
  • Die vorliegende Erfindung kann es außerdem einem Entwickler ermöglichen, die Zunahme des physischen Umfangs eines integrierten Halbleiterschaltkreises bei Anbringung einer zentralen Verarbeitungseinheit und einer digitalen Signalverarbeitungseinheit auf dem integrierten Halbleiterschaltkreis einzuschränken.
  • Die vorliegende Erfindung kann die Herstellung eines Datenprozessors ermöglichen, dessen operationale Einfachheit verbessert ist und der eine zentrale Verarbeitungseinheit und eine digitale Verarbeitungseinheit auf demselben Halbleiterchip enthält.
  • Die vorliegende Erfindung kann außerdem eine Beschleunigung der digitalen Signalverarbeitung in einem Datenprozessor ermöglichen.
  • Die vorliegende Erfindung liefert vorzugsweise ein Anweisungsformat (einen Anweisungssatz), das vorzugsweise auf einen Datenprozessor angewandt wird, der eine zentrale Verarbeitungseinheit und eine digitale Signalverarbeitungseinheit in demselben Halbleiterchip enthält.
  • Die vorliegende Erfindung kann außerdem ein Anweisungsformat (einen Anweisungssatz) liefern, das die Zunahme des logischen Umfangs eines Anweisungsdecodierungsschaltkreises in einem Datenprozessor mit einer zentralen Verarbeitungseinheit und einer digitalen Signalverarbeitungseinheit in demselben Halbleiterchip einschränken kann.
  • Die obigen und andere Ziele und neuartige Merkmale der vorliegenden Erfindung werden aus der Beschreibung der vorliegenden Spezifikation und den beigefügten Zeichnungen deutlich.
  • Es wird nun eine typische Ausführungsform der in der vorliegenden Anmeldung offengelegten Erfindung kurz beschrieben.
  • Das heißt, ein integrierter Halbleiterschaltkreis (Mikrocomputer) umfasst einen Halbleiterchip mit:
  • einer zentralen Verarbeitungseinheit (2);
  • einem ersten bis dritten Adressbus (IAB, YAB und XAB), zu denen eine Adresse selektiv aus der zentralen Verarbeitungseinheit übermittelt wird;
  • ersten Speichern (5 und 7), die mit dem ersten Adressbus (IAB) und dem zweiten Adressbus (YAB) verbunden sind und auf die durch eine aus der zentralen Verarbeitungseinheit gesendete Adresse zugegriffen wird;
  • zweiten Speichern (4 und 6), die mit dem ersten Adressbus (IAB) und dem dritten Adressbus (XAB) verbunden sind und auf die durch eine aus der zentralen Verarbeitungseinheit gesendete Adresse zugegriffen wird;
  • einem ersten Datenbus (IDB) zum Übermitteln von Daten, der mit den ersten und den zweiten Speichern und der zentralen Verarbeitungseinheit verbunden ist;
  • einem zweiten Datenbus (YDB) zum Übermitteln von Daten, der mit den ersten Speichern verbunden ist:
  • einem dritten Datenbus (XDB) zum Übermitteln von Daten, der mit den zweiten Speichern verbunden ist;
  • einer externen Schnittstellenschaltung (12), die mit dem ersten Adressbus und dem ersten Datenbus verbunden ist;
  • einer digitalen Signalverarbeitungseinheit (3), die mit dem ersten bis dritten Datenbus verbunden ist und synchron durch die zentrale Verarbeitungseinheit betrieben wird; und
  • einer Steuersignalleitung zum Übermitteln eines DSP- Steuersignals (20) zur Steuerung des Betriebs der digitalen Signalverarbeitungseinheit von der zentralen Verarbeitungseinheit zu der digitalen Signalverarbeitungseinheit.
  • Gemäß den obigen Vorrichtungen kann ein eingebauter oder interner Speicher durch Betrachtung eines Multiplikations- und Akkumulationsbetriebes in die folgenden zwei Typen eingeteilt werden: erste Speicher (5 und 7) und zweite Speicher (4 und 6). Dann wird der zentralen Verarbeitungseinheit (2) ermöglicht, durch die dritten internen Busse (XAB und XDB) und die zweiten internen Busse (YAB und YDB) parallel auf die ersten und zweiten Speicher zuzugreifen. Deshalb ist es möglich, gleichzeitig zwei Datenwerte aus dem eingebauten Speicher zu der digitalen Signalverarbeitungseinheit zu übermitteln.
  • Da die dritten internen Busse (XAB und XDB) und die zweiten internen Busse (YAB und YDB) ebenfalls von den ersten internen Bussen (IAB und IDB) getrennt sein können, die an eine externe Einheit angeschaltet werden sollen, kann die zentrale Verarbeitungseinheit parallel mit dem Zugriff auf die zweiten Speicher (4 und 6) und die ersten Speicher (5 und 7) durch Verwendung der ersten internen Busse (IAB und IDB) auf einen externen Speicher zugreifen.
  • Da der Datenprozessor der vorliegenden Erfindung drei interne Adressbusse (IAB, XAB und YAB) und drei interne Datenbusse (IDB, XDB und YDB) in dem ersten bis dritten internen Bus, die mit der zentralen
  • Verarbeitungseinheit (2) verbunden sind, besitzt, kann der Prozessor somit im selben Taktzyklus durch Verwenden des ersten bis dritten internen Busses auf verschiedene Speicher zugreifen. Auch wenn ein Programm oder Daten in einem externen Speicher vorliegen, kann deshalb der Datenprozessor der vorliegenden Erfindung die arithmetische Verarbeitung leicht beschleunigen.
  • Um die operationale Einfachheit eines Mikrocomputers zu verbessern, sind die ersten und zweiten Speicher vorzugsweise RAM bzw. ROM.
  • Um die Erzeugung von Adressen zur Wiederholung der Multiplikations- und Akkumulationsoperation in der zentralen Verarbeitungseinheit zu beschleunigen, wird bevorzugt, einen Modulo-Adressausgabeteil (200) für die zentrale Verarbeitungseinheit vorzusehen. In diesem Fall wird bevorzugt, dass eine durch den Modulo- Adressausgabeteil erzeugte Adresse selektiv an den zweiten oder dritten Adressbus ausgeben werden kann.
  • Die digitale Signalverarbeitungseinheit kann Folgendes enthalten: erste bis dritte Datenpuffervorrichtungen (MDBI, MDBY und MDBX), die einzeln an den ersten bis dritten Datenbus (IDB, YDB und XDB) angeschaltet werden, mehrere Registervorrichtungen (305 bis 308), die durch einen internen Bus mit jeder Datenpuffervorrichtung verbindbar gemacht werden, einen Multiplizierer (304) und eine Arithmetik-Logik- Operationseinheit (302), die mit dem internen Bus verbunden ist, und einen Decodierer (34) zum Decodieren des DSP-Steuersignals und zur Steuerung von Operationen der Datenpuffervorrichtungen, Multiplizierer, der Arithmetik-Logik-Operationseinheit und von Registervorrichtungen.
  • Für die Anweisungsdecodierung kann der Datenprozessor (Mikrocomputer) zu einem einzigen integrierten Halbleiterschaltkreischip ausgebildet werden, der die zentrale Verarbeitungseinheit (2), die Speicher (4 bis 7), auf die durch die zentrale Verarbeitungseinheit zugegriffen und die von dieser gesteuert werden sollen, einen Datenbus zum Übermitteln von Daten zwischen den Speichern und der zentralen Verarbeitungseinheit und die digitale Signalverarbeitungseinheit (3) enthält.
  • Ein durch den Mikrocomputer ausführbarer Anweisungssatz kann eine durch die zentrale Verarbeitungseinheit (2) auszuführende CPU-Anweisung (erste Anweisung) und eine durch die digitale Signalverarbeitungseinheit (3) auszuführende DSP-Anweisung enthalten, indem man die zentrale Verarbeitungseinheit bestimmte Arten von Verarbeitung, darunter Adressberechnung für das Datenabrufen, durchführen lässt.
  • Die zentrale Verarbeitungseinheit kann ein Anweisungsregister (25) zum Abrufen einer CPU-Anweisung mit 16-Bit-Festlänge (erste Bitlänge) und einer DSP- Anweisung mit 16 Bit oder 32 Bit (zweite Bitlänge) durch den Datenbus und einen Decodierer (24) zum Unterscheiden der CPU-Anweisung von der DSP-Anweisung gemäß mehreren Bit eines Teils der durch das Anweisungsregister abgerufenen Befehle und zum Erzeugen eines DSP-Steuersignals (20) zur Steuerung von Operationen der digitalen Signalverarbeitungseinheit und eines CPU-Steuersignals zur Steuerung von Operationen der zentralen Verarbeitungseinheit gemäß dem Unterscheidungsergebnis enthalten.
  • Zum Beispiel wird eine CPU-Anweisung einem Bereich zugewiesen, in dem die 4 Bit höherer Ordnung eines Anweisungscodes auf "0000" bis "1110" gesetzt werden. Eine DSP-Anweisung wird einem Bereich zugewiesen, in dem 4 Bit höherer Ordnung eines Anweisungscodes auf "1111" gesetzt werden. Außerdem werden 6 Bit höherer Ordnung eines Anweisungscodes als ein "111100"- Anweisungscode verwendet. Eine Anweisung, bei der 6 Bit höherer Ordnung eines Anweisungscodes auf "111110" gesetzt sind, wird als ein 32-Bit-Anweisungscode verwendet. Es wird jedoch keine Anweisung einem Bereich zugewiesen, in dem 6 Bit höherer Ordnung eines Anweisungscodes auf "111111" gesetzt sind, und der Bereich wird als Leerraum verwendet.
  • Durch Bereitstellen der obigen Regel für die Zuweisung, mit der Code Anweisungen von bis zu 32 Bit zugewiesen werden, und somit durch Decodieren eines Teils jedes Anweisungscodes, d. h. von 6 Bit höherer Ordnung, ist es somit möglich, durch einen Decodierer mit kleinem logischen Umfang zu entscheiden, ob die Anweisung eine CPU-Anweisung, eine 16-Bit-DSP-Anweisung oder eine 32- Bit-DSP-Anweisung ist. Deshalb ist es nicht notwendig, immer gleichzeitig 32 Bit zu decodieren.
  • Der Decodierer kann Folgendes enthalten: einen ersten Decodierungsschaltkreis (240) zum Decodieren von 6 Bit höherer Ordnung eines Anweisungsregisters und zum Erzeugen des CPU-Decodierungssignals (243) und des DSP- Decodierungssignals (244), und einen Codeumsetzungsschaltkreis (242) zum Ausgeben eines Signals, das durch Codieren von 16 Bit niederer Ordnung eines Anweisungsregisters erhalten wird, wenn eine 32-Bit- DSP-Anweisung durch den ersten Decodierungsschaltkreis unterschieden wird, und eines Codes, der darstellt, dass die Ausgabe ungültig ist, wenn eine von der 32- Bit-DSP-Anweisung verschiedene Anweisung unterschieden wird. Das DSP-Decodierungssignal und die Ausgabe des Codeumsetzungsschaltkreises dienen als das DSP- Steuersignal (20).
  • Beim Bemerken des Punkts des Anweisungsformats der DSP- Anweisung wird ein Mikrocomputer in einem integrierten Halbleiterschaltkreis ausgebildet, der die zentrale Verarbeitungseinheit (2), die digitale Signalverarbeitungseinheit (3), die synchron durch die Zentralverarbeitungseinheit betrieben werden soll, und den internen Bus (IDB), mit dem die zentrale Verarbeitungseinheit und die digitale Signalverarbeitungseinheit gemeinsam verbunden werden, enthält. Die zentrale Verarbeitungseinheit kann mit einer Ausführungssteuervorrichtung versehen werden, die eine Anweisung eines ersten Formats mit einem ersten Codebereich (Bit 9 bis Bit 0 der in Fig. 18 gezeigten 16-Bit-DSP-Anweisung) zur Spezifizierung der Datenübermittlung zu und von der digitalen Signalverarbeitungseinheit für die zentrale Verarbeitungseinheit und eine Anweisung eines zweiten Formats mit einem zweiten Codebereich (Feld A der in Fig. 20 und 21 gezeigten 32-Bit-DSP-Anweisung) mit demselben Format wie der erste Codebereich und einem dritten Codebereich (Feld B der in Fig. 20 und 21 gezeigten 32-Bit-DSP- Anweisung) zur Spezifizierung der Operationsverarbeitung unter Verwendung der übermittelten Daten, die in dem zweiten Codebereich für die digitale Signalverarbeitungseinheit spezifiziert sind, ausführt.
  • Bei der Ausführung der Anweisung des ersten Formats bzw. der Anweisung des zweiten Formats kann die Ausführungssteuervorrichtung dadurch eine Decodierungsvorrichtung, die eine dem ersten und dem zweiten Codebereich gemeinsame Decodierungslogik aufweist, verwenden, und dies trägt zu der Abnahme des logischen Umfangs eines Mikrocomputers bei.
  • Die Anweisung des ersten Formats und die Anweisung des zweiten Formats können einen vierten Codebereich (z. B. Bit 15 bis Bit 10 in einer 16-Bit-DSP-Anweisung oder Bit 32 bis 26 in einer 32-Bit-DSP-Anweisung) zum Anzeigen des ersten Formats oder des zweiten Formats aufweisen.
  • Die Ausführungssteuervorrichtung kann das Anweisungsregister (25), das für die Anweisung des ersten Formats und die Anweisung des zweiten Formats gemeinsam genutzt wird, die Decodierungsvorrichtung (240) zum Entscheiden des ersten und vierten Codebereichs oder des zweiten und des vierten Codebereichs, die in einer durch das Anweisungsregister abgerufenen Anweisung enthalten sind, und eine Ausführungsvorrichtung zur Durchführung einer Adressberechnung gemäß dem decodierten Ergebnis und zur Durchführung der Datenübermittlungsteuerung enthalten.
  • Das Anweisungsregister kann mit einem Bereich höherer Ordnung (UIR) ausgestattet sein, der gemeinsam genutzt wird, um den ersten und vierten Codebereich oder den zweiten und vierten Codebereich aufzunehmen, und mit einem Bereich niederer Ordnung zum Aufnehmen des dritten Codebereichs. Die Decodierungsvorrichtung enthält Vorrichtungen (242, 242A und 242B) zum Ausgeben eines Steuersignals (248), das zeigt, dass das Anweisungsregister die Anweisung des zweiten Formats enthält, gemäß dem decodierten Ergebnis des vierten Codebereichs, und zum Zuführen von Codedaten in dem dritten Codebereich aus dem Bereich niederer Ordnung zu der digitalen Signalverarbeitungseinheit.
  • In den Zeichnungen zeigen:
  • Fig. 1 ein gesamtes Blockschaltbild des Mikrocomputers einer Ausführungsform der vorliegenden Erfindung;
  • Fig. 2 eine Adressliste eines Mikrocomputers;
  • Fig. 3 ein Blockschaltbild eines CPU-Kerns, wobei ein Modulo-Adressausgabeteil im Detail gezeigt ist;
  • Fig. 4 ein Blockschaltbild einer DSP-Engine;
  • Fig. 5 eine Darstellung eines Anweisungsformats und eines Anweisungscodes eines Mikrocomputers;
  • Fig. 6 ein Blockschaltbild der Verbindungsstruktur zwischen einem CPU-Kerndecodierer und einem DSP-Engine- Decodierer;
  • Fig. 7 ein Impulsdiagramm zur Ausführung einer ALU- Arithmetikanweisung in einem CPU-Kern;
  • Fig. 8 ein Impulsdiagramm zur Ausführung einer Anweisung zum Auslesen von Daten aus einem Speicher in einem CPU-Kern;
  • Fig. 9 ein Impulsdiagramm zur Ausführung einer Anweisung zum Schreiben von Daten aus einem CPU-Kern in einen Speicher;
  • Fig. 10 ein Impulsdiagramm zur Ausführung einer DSP- Anweisung;
  • Fig. 11 ein Impulsdiagramm zur Ausführung einer Anweisung zum Auslesen von Daten aus X- und Y-Speichern in eine DSP-Engine;
  • Fig. 12 ein Impulsdiagramm zur Ausführung einer Anweisung zum Schreiben von Daten aus einer DSP-Engine in X- und Y-Speicher;
  • Fig. 13 ein Impulsdiagramm zur Ausführung einer Anweisung zum Auslesen von Daten aus einem Speicher in eine DSP-Engine;
  • Fig. 14 ein Impulsdiagramm zur Ausführung einer Anweisung zum Schreiben von Daten aus einer DSP-Engine in einen Speicher;
  • Fig. 15 ein Impulsdiagramm zur Ausführung einer DSP- Arithmetikanweisung;
  • Fig. 16 ein Impulsdiagramm zum kontinuierlichen Ausführen einer DSP-Arithmetikanweisung;
  • Fig. 17 ein Blockschaltbild einer weiteren Ausführungsform entsprechend Fig. 6;
  • Fig. 18 ein Anweisungsformatdiagramm des Codes einer 16-Bit-DSP-Anweisung zum Spezifizieren der Datenübermittlung zwischen einem eingebauten Speicher in einem Mikrocomputer und einem eingebauten Register einer DSP-Engine;
  • Fig. 19 ein Anweisungsformatdiagramm des Codes einer 16-Bit-DSP-Anweisung zur Spezifizierung der Datenübermittlung zwischen einem externen Speicher eines Mikrocomputers und einem eingebauten Register einer DSP-Engine;
  • Fig. 20 ein Anweisungsformatdiagramm der Codes in einem Feld und von den Codes entsprechender Mnemonik beim Vermerken des Felds B einer 32-Bit-DSP-Anweisung; und
  • Fig. 21 ein Anweisungsformatdiagramm der Codes in einem Feld und der den Codes entsprechenden Mnemonik bei der Vermerkung des Felds B einer 32-Bit-DSP-Anweisung.
  • Fig. 1 zeigt das gesamte Blockschaltbild eines Einchip- Mikrocomputers (Einchip-Mikroprozessors), der als der Datenprozessor einer Ausführungsform der vorliegenden Erfindung dient.
  • Der in Fig. 1 gezeigte Mikrocomputer ist auf einem Halbleitersubstrat ausgebildet, das zum Beispiel durch einen Prozess für integrierte Halbleiterschaltkreise aus einkristallinem Silizium hergestellt wird. Der Mikrocomputer 1 umfasst einen CPU-Kern 2, der als eine zentrale Verarbeitungseinheit dient, eine DSP-Engine 3, die als eine digitale Signalverarbeitungseinheit dient, einen X-ROM 4, einen Y-ROM 5, einen X-RAM 6, einen Y- RAM 7, eine Interrupt-Steuerung 8, eine Buszustandssteuerung 9, eingebaute oder auf dem Chip befindliche Peripherieschaltkreise 10 und 11, eine externe Speicherschnittstelle 12 und einen Taktimpulsgenerator (CPG) 13.
  • Der X-ROM 4 und der Y-ROM 5 sind Read-Only-Speicher oder elektrisch löschbare programmierbare Speicher zum Speichern von Anweisungen oder konstanten Daten. Der X- RAM 6 und der Y-RAM 7 sind Direktzugriffsspeicher, mit denen vorübergehend Daten gespeichert werden oder die als Arbeitsbereiche des CPU-Kerns 2 und der DSP-Engine 3 verwendet werden. Der X-ROM 4 und der X-RAM 6 werden im Allgemeinen als interne Anweisungs-/Daten-X-Speicher bezeichnet, und der Y-ROM 5 und der Y-RAM 7 werden im Allgemeinen als interne Anweisungs-/Daten-Y-Speicher bezeichnet. Der Y-ROM 5 und der Y-RAM 7 dienen als erste Speicher und der X-ROM 4 und der X-RAM 6 als zweite Speicher.
  • Der Bus des Mikrocomputers 1 dieser Ausführungsform enthält den internen Adressbus IAB und den internen Datenbus IDB, die mit der externen Speicherschnittstelle 12 verbunden sind, den internen Adressbus XAB und den internen Datenbus XDB, die nicht mit der externen Speicherschnittstelle 12 verbunden sind, den internen Adressbus YAB und den internen Datenbus YDB, die nicht mit der externen Speicherschnittstelle 12 verbunden sind, und einen Peripherieadressbus PAB und einen Peripheriedatenbus PDB, die für die eingebauten Peripherieschaltkreise 10 und 11 verwendet werden. Ein (nicht dargestellter) Steuerbus ist entsprechend für drei Adressbussätze bzw. Datenbussätze vorgesehen.
  • Der mit der Außenwelt eines Chips durch die externe Speicherschnittstelle 12 verbindbare Datenbus IDB ist mit dem CPU-Kern 2 verbunden, und aus der Interrupt- Steuerung 8 wird dem CPU-Kern 2 ein Interrupt-Signal 80 zugeführt. Der CPU-Kern 2 führt der DSP-Engine 3 ein Steuersignal 20 zur Steuerung der DSP-Engine 3 zu.
  • Außerdem gibt der CPU-Kern 2 ein Adresssignal an den Adressbus IAB, der durch die externe Speicherschnittstelle 12 mit der Außenwelt eines Chips verbindbar ist, und die Adressbusse XAB und YAB, die nicht mit der externen Speicherschnittstelle 12 verbunden sind, aus. Der CPU-Kern 2 wird durch sich nicht überlappende Zweiphasentaktsignale Clock 1 und Clock 2 betrieben, die als Operationsbezugstaktsignale aus einem Taktimpulsgenerator (CPG) 13 ausgegeben werden. Obwohl die Einzelheiten des CPU-Kerns 2 später beschrieben werden, sind typischerweise in dem CPU-Kern 2 von Fig. 1 eine Register-Datei 21, eine Arithmetik- Logik-Einheit (ALU) 22, ein Adressenaddierer (Add-ALU) 23, ein Decodierer 24 und ein Anweisungsregister (IR) 25 dargestellt.
  • Die Register-Datei 21 wird wahlweise als ein Adressregister oder Datenregister verwendet und enthält einen Programmzähler und ein Steuerregister. Der Decodierer 24 decodiert eine durch das Anweisungsregister 25 abgerufene Anweisung und erzeugt ein (in Fig. 1 nicht dargestelltes) internes Steuersignal und das Steuersignal 20. Das Anweisungsregister (IR) 25 umfasst einen 16-Bit-Bereich höherer Ordnung (UIR) und einen 16-Bit-Bereich niederer Ordnung (LIR). Obwohl die Einzelheiten später beschrieben werden, wird der Wert des Bereichs niederer Ordnung (LIR) selektiv in den Bereich höherer Ordnung (UIR) verschiebbar gemacht. Ein nicht dargestellter Sequenzsteuerschaltkreis steuert eine Anweisungsausführungsprozedur, wenn eine Ablaufunterbrechung wie zum Beispiel ein Interrupt auftritt, oder steuert das Sichern oder Zurückgeben eines internen Zustands für das Auftreten der Ablaufunterbrechung durch Verwendung von Hardware.
  • Die DSP-Engine 3 ist mit den Datenbussen IDB, XDB und YDB verbunden und wird durch Verwendung der Taktsignale Clock 1 und Clock 2 als Operationsbezugstaktsignale betrieben. Obwohl die Einzelheiten der DSP-Engine 3 später beschrieben werden, sind typischerweise in der DSP-Engine 3 von Fig. 1 eine Datenregister-Datei 31, eine Arithmetik-Logik-Einheit mit Schieber (ALU/Shifter) 32, ein Multiplizierer (MAC) 33 und ein Decodierer 34 dargestellt. Die Datenregister-Datei 31 wird für Multiplikations- und Akkumulationsoperationen verwendet. Der Decodierer 34 decodiert das aus dem CPU- Kern 2 zugeführte Steuersignal 20 und erzeugt ein (in Fig. 1 nicht dargestelltes) internes Steuersignal der DSP-Engine 3.
  • Der X-ROM 4 und der X-RAM 6 sind mit dem Adressbus IAB und den Datenbussen IDB und XDB verbunden. Der Y-ROM 5 und der Y-RAM 7 sind mit den Adressbussen IAB und YAB und den Datenbussen IDB und YDB verbunden. Die eingebauten Speicher (X-ROM 4 und X-RAM 6 und Y-ROM 5 und Y-RAM 7) sind durch Betrachtung der Multiplikations- und Akkumulationsoperation durch die DSP-Engine 3 in die X-Speicher 4 und 6 und die Y- Speicher 5 und 7 aufgeteilt und werden durch die internen Busse XAB und XDB bzw. YAB und YDB parallel zugänglich gemacht. Da die internen Busse XAB und XDB und YAB und YDB von den Bussen IAB und IDB, die an die Außenwelt des Chips des Mikrocomputers 1 angeschaltet werden sollen, getrennt sind, ist außerdem ein Zugriff auf einen externen Speicher parallel zu dem Zugriff auf die X-Speicher 4 und 6 und die Y-Speicher 5 und 7 möglich. Die X-Speicher 4 und 6 und die Y-Speicher 5 und 7 dienen als temporärer Datenspeicherbereich eines Konstantdatenspeicherbereichs für die Multiplikations- und Akkumulationsoperation durch die DSP-Engine. Es erübrigt sich zu erwähnen, dass der X-RAM und Y-RAM als temporäre Datenspeicherbereiche oder Arbeitsbereiche des CPU-Kerns 2 verwendet werden können.
  • Die Interrupt-Steuerung 8 empfängt ein Interrupt- Anforderungssignal (Interrupts) 81 aus dem eingebauten Peripherieschaltkreis 10 oder 11, arbitriert und akzeptiert eine Interrupt-Anforderung gemäß den Informationen für die Prioritätseinstellungen verschiedener Interrupt-Anforderungen und der Maskierung für Interrupt-Anforderungen, gibt ein Interrupt-Vektoradresssignal 82, das einer akzeptierten Interrupt-Anforderung entspricht, auf den Adressbus IAB aus und gibt außerdem ein Interrupt-Signal 80 an den CPU-Kern 2 aus.
  • Die Buszustandssteuerung 9 ist mit den Adressbussen IAB und PAB und den Datenbussen IDB und PDB verbunden und steuert die Schnittstelle zwischen den eingebauten Peripherieschaltkreisen 10 und 11, die mit dem Adressbus PAB und dem Datenbus PDB einerseits und dem CPU-Kern 2 andererseits verbunden sind.
  • Die externe Speicherschnittstelle 12 ist mit dem Adressbus IAB und dem Datenbus IDB verbunden und außerdem mit einem (nicht gezeigten) externen Adressbus der Außenwelt des Chips des Mikrocomputers 1, um die Schnittstelle mit einer externen Einheit zu steuern.
  • Fig. 2 zeigt eine Liste des Adressraums des Mikrocomputers 1.
  • Der Mikrocomputer der vorliegenden Ausführungsform steuert einen mit 32 Bit spezifizierten Adressraum. Der Adressbus IAB ist 32 Bit breit. Der Adressraum enthält einen Ablaufunterbrechungsvektortabellenbereich, einen X-ROM-Adressraum (dem X-ROM 4 zugewiesener Adressraum), einen X-RAM-Adressraum (dem X-RAM 7 zugewiesener Adressraum), einen Y-ROM-Adressraum (dem Y-ROM 5 zugewiesener Adressraum), einen Y-RAM-Adressraum (dem Y-RAM 7 zugewiesener Adressraum) und ein Onchip- Peripherieregisterfeld (Adressraum, dem die einbauten Peripherieschaltkreise 10 und 11 zugewiesen werden). Im Fall von Fig. 2 werden dem X-ROM 4 24 kB zugewiesen, dem X-RAM 6 4 kB, dem Y-ROM 5 24 kB und dem Y-RAM 7 4 kB.
  • Gemäß Fig. 2 kann der Adressraum des Mikrocomputers 1 folgendermaßen zugewiesen werden.
  • Einem 256 B-Bereich in Adressräumen von H'00000000 bis H'000003FF (gezeigt durch die hexadezimale Notation) wird ein Ablaufunterbrechungsvektortabellenbereich zugewiesen. Ein von einem Benutzer benutzbarer normaler Adressraum wird H'00000400 bis H'01FFFFFF zugewiesen. Der normale Adressraum wird als ein Speicherbereich verwendet, der mit der Außenwelt des Mikrocomputers 1 verbindbar ist. Ein X-ROM-Adressraum wird H'02000000 bis H'02005FFF zugewiesen. Ein X-RAM-Adressraum wird H'02006000 bis H'02006FFF zugewiesen.
  • H'02007000 bis H'02007FFF dient als ein X-RAM Mirror- Adressraum. Der Zugriff auf den X-RAM Mirror-Adressraum stellt tatsächlich den Zugriff auf einen X-RAM- Adressraum von H'02006000 bis H'02006FFF dar.
  • H'02008000 bis H'0200FFF werden als X-RAM- und RAM Mirror-Adressräume verwendet. Das Zugreifen auf diese Adressräume stellt tatsächlich den Zugriff auf X- ROM- und X-RAM-Adressräume von H'02000000 bis H'02007FFF dar. Ein Y-ROM-Adressraum wird H'02010000 bis H'02015FFF zugewiesen. Ein Y-RAM-Adressraum wird H'02016000 bis H'02016FFF zugewiesen.
  • H'02017000 bis H'02017FFF wird als ein Y-RAM Mirror- Adressraum verwendet. Das Zugreifen auf den Y- RAM Mirror-Adressraum stellt tatsächlich das Zugreifen auf einen Y-RAM-Adressraum von H'0201600 bis H'02016FFF dar. H'02018000 bis H'0201FFFF werden als Y-ROM- und RAM Mirror-Adressräume verwendet. Das Zugreifen auf diese Räume stellt tatsächlich den Zugriff auf Y-ROM- und Y-RAM-Adressräume von H'02010000 bis H'02017FFF dar. Ein normaler Adressraum wird H'02020000 bis H'07FFFFFFF zugewiesen.
  • Ein reservierter Bereich wird H'08000000 bis H'1FFFFFFFF zugewiesen. Auf den reservierten Bereich kann im Fall eines Benutzerchips (tatsächlicher Chip) nicht zugegriffen werden, aber er wird als ein ASE- Adressraum (Steueradressraum zur Emulation) im Fall eines Bewertungschips (zur Bewertung für eine Emulation oder dergleichen) zugewiesen. Ein normaler Adressraum wird H'20000000 bis H'27FFFFFFF zugewiesen. Ein reservierter Bereich wird H'28000000 bis H'FFFFFDFF zugewiesen. Ein Onchip-Peripherieregisterbereich, dem ein Registeradresswert eines eingebauten Peripherieschaltkreises zugewiesen werden sollte, wird H'FFFFFE00 bis H'FFFFFFFF zugewiesen.
  • Fig. 3 zeigt ein Blockschaltbild des CPU-Kerns 2, dessen Modulo-Adressausgabeteil im Detail gezeigt ist.
  • Ein in Fig. 3 durch eine gestrichelte Linie eingeschlossener Teil stellt einen Modulo- Adressausgabeteil 200 dar. Der Modulo-Adressausgabeteil 200 ist ein Schaltkreisblock zur Durchführung einer Adressaktualisierung und zur Durchführung von Ausgabeoperationen zum Ausgeben eines Werts, der aus einem Modulo-Adressregister (z. B. AOX) durch einen Puffer (z. B. MABX) auf einen Adressbus (z. B. XAB) ausgegeben wird, und außerdem zum Addieren eines aus dem Modulo-Adressregister (AOX) ausgegebenen Werts durch eine Summierungsvorrichtung (z. B. ALU) und zum Zurückspeichern des Werts in dem Modulo-Adressregister (AOX) und aktualisiert und erzeugt sequentiell eine Datenzugriffsadresse für wiederholte Operation, wie zum Beispiel Multiplikations- und Akkumulationsoperation. Der als Zufallslogikschaltkreis 201 gezeigte Schaltkreisblock ist ein Schaltkreisblock, der den Decodierer 24 in Fig. 1, den Sequenzsteuerschaltkreis und ein Steuerregister und ein Statusregister enthält.
  • In Fig. 3 sind C1, C2, DR, A1, B1, A2 B2 und DW typische Busse in dem CPU-Kern 2. Der CPU-Kern 2 und der Datenbus IDB weisen durch das Anweisungsregister (IR) 25 und einen Datenpuffer 203 eine Schnittstelle auf. Ein durch das Anweisungsregister (IR) 25 abgerufene Anweisung wird dem Decodierer 24 oder dergleichen zugeführt, der in dem Zufallslogikschaltkreis 201 enthalten ist. Der CPU-Kern 2 und der Adressbus IAB weisen durch einen Programmzähler (PC) 204 und einen Adresspuffer 205 eine Schnittstelle auf. Der CPU-Kern 2 und der Adressbus XAB weisen durch den Speicheradresspuffer (MABX) 206 eine Schnittstelle auf, und der CPU-Kern 2 und der Adressbus YAB weisen durch einen Speicheradresspuffer (MABZ) 207 eine Schnittstelle auf.
  • Der Eingangsweg von Adressinformationen in den Adresspuffer 205 kann unter den Bussen C1, A1 und A2 gewählt werden, und der Eingangsweg von Adressinformationen in die Speicheradresspuffer 206 und 207 kann unter den Bussen C1, C2, A1 und A2 gewählt werden. Eine Arithmetikeinheit (AU) 208 wird zum Erhöhen des Programmzählers 204 verwendet. In Fig. 3 stellt das Symbol 209 ein Vielzweckregister (Reg.) dar, 210 ein Indexregister (Ix), das zum Indizieren einer Adresse verwendet wird, 211 ein Indexregister (Iy), das ebenfalls zum Indizieren einer Adresse verwendet wird, 212 einen eigens für die Adressberechnung zugewiesenen Addierer (PAU) und 213 eine Arithmetik-Logik-Einheit (ALU).
  • Ein Steuerbit MXY kennzeichnet den Adressbus XAB oder YAB, auf den die Modulo-Arithmetik angewandt werden soll. Der Adressbus XAB wird durch den logischen Wert "1" des Steuerbit MXY gekennzeichnet. Der Adressbus YAB wird durch den logischen Wert "0" des Steuerbit MXY gekennzeichnet.
  • Ein Steuerbit DM kennzeichnet, ob ein Modulo-Arithmetik durchgeführt werden soll. Durch den logischen Wert "1" des Steuerbit DM wird gekennzeichnet, die Modulo- Arithmetik durchzuführen. Außerdem wird durch den logischen Wert "0" des Steuerbit DM gekennzeichnet, dass keine Modulo-Arithmetik durchgeführt werden wird. Ein Modulo-Startadressregister (MS) 214 speichert eine Modulo-Arithmetik-Startadresse, und ein Modulo-Endadressregister (ME) 215 speichert eine Modulo- Arithmetik-Endadresse.
  • Ein Modulo-Adressregister (A0x, A1x) 216 ist ein Register für die aktuelle Adresse zur Speicherung einer aktuellen Modulo-Adresse. Die Bezugszahl 217 stellt einen Komparator (CMP) zum Vergleichen eines Werts des Modulo-Endadressregisters (ME) 215 mit einem Wert des Modulo-Startadressregisters (A0x, A1x) 216 dar. Die Bezugszahl 218 stellt ein AND-Gatter für das logische Produkt der Ausgabe des Komparators 217 und der Steuerbit MXY und DM dar. Das Symbol 219 stellt einen Selektor zur Auswahl eines Werts des Busses C1 und eines Werts des Modulo-Startadressregisters (MS) 214 dar. Diese Werte werden für die Modulo-Arithmetik für den Adressbus XAB verwendet.
  • Der Selektor 219 wählt einen Wert des Registers (MS) 214 gemäß dem von dem AND-Gatter 218 ausgegebenen Logikwert "1" und führt den gewählten Wert dem Modulo- Adressregister (A0x, A1x) 216 zu. Es wird entweder A0x oder A1x des Modulo-Adressregisters 216 gewählt und verwendet.
  • Ein Modulo-Adressregister (A0y, A1y) 226 ist ein Adressregister für die aktuelle Adresse zur Speicherung einer aktuellen Modulo-Adresse. Das Symbol 227 stellt einen Komparator (CMP) zum Vergleichen eines Werts des Modulo-Adressregisters (ME) 215 mit einem Wert des Modulo-Adressregisters (A0y, A1y) 216 dar. Das Symbol 228 stellt ein AND-Gatter für das logische Produkt der Ausgabe des Komparators 227 und der Invertierung des Steuerbit MXY und des Steuerbit DM dar. Das Symbol 229 stellt einen Selektor zum Wählen eines Werts des Busses C und eines Werts des Modulo-Startadressregisters (MS) 214 dar. Diese Werte werden für die Modulo-Arithmetik für den Adressbus YAB verwendet.
  • Der Selektor 229 wählt einen Wert des Registers (MS) 214 gemäß dem von dem AND-Gatter 228 ausgegebenen Logikwert "1" und führt den gewählten Wert dem Modulo- Adressregister (A0y, A1y) 226 zu. Es wird entweder A0y oder A1y des Modulo-Adressregisters 226 gewählt und verwendet.
  • Der in dem Zufallslogikschaltkreis 201 angegebene OP- Code stellt einen Anweisungscode dar, der aus dem Anweisungsregister 25 geliefert wird, und CONST stellt einen konstanten Wert dar.
  • Nachfolgend wird eine Operation als die Modulo- Arithmetik durch den CPU-Kern 2 beschrieben, bei der Adressinformationen, die dem Adressbus XAB zugeführt werden sollen, durch die Modulo-Arithmetik zum Beispiel durch Verwendung des Modulo-Adressregisters (A0x) 216 erzeugt werden.
  • Als Erstes wird die Modulo-Arithmetik-Startadresse in das Modulo-Startadressregister (MS) 214 geschrieben, und die Modulo-Arithmetik-Endadresse in das Modulo- Endadressregister (ME) 215 geschrieben. Ein Adresswert zum Starten der Modulo-Arithmetik wird in das Modulo- Adressregister (A0x) geschrieben. Um Modulo-Arithmetik auf eine Adresse des Adressbusses XAB anzuwenden, wird dann der Logikwert "1" in das Steuerbit MXY geschrieben, um zu entscheiden, worauf die Modulo- Arithmetik angewandt werden sollte: auf eine Adresse des XAB oder eine Adresse des YAB. (Beim Anwenden der Modulo-Arithmetik auf den Adressbus YAB wird der Logikwert "0" in das Steuerbit MXY geschrieben). Als Letztes wird der Logikwert "1" in das Steuerbit DM geschrieben, um zu entscheiden, ob Modulo-Arithmetik durchgeführt werden soll.
  • Eine Modulo-Arithmetikanweisung wird zum Beispiel als MOVS.W@Ax oder Dx beschrieben. Im Fall dieser Anweisungsbeschreibung wird Ax für das Modulo- Adressregister (A0x) 216 oder das Modulo-Adressregister (A1x) 216 verwendet und Dx entspricht einem Register in der DSP-Engine 3. In Fig. 3 ist Dx nicht dargestellt.
  • Wenn die Modulo-Arithmetikanweisung ausgeführt wird, liest das Modulo-Adressregister (A0x) 216 einen Wert, der in den Speicheradresspuffer (MABX) 206 und in die Arithmetik-Logik-Einheit (ALU) 213 eingegeben wird. Der in den Speicheradresspuffer (MABX) 206 eingegebene Wert wird direkt auf den Adressbus XAB ausgegeben, um eine Adresse des XROM 4 oder des XRAM 6 zu kennzeichnen.
  • Zu dem Wert des Modulo-Adressregisters (A0x) 216, der in die Arithmetik-Logik-Einheit (ALU) 213 eingegeben wird, wird ein Wert des Indexregisters (Ix) 210 oder eine Konstante addiert. Die Addition mit dem Indexregister (Ix) 210 wird durchgeführt, wenn eine Anweisung MOVS.W@(Ax, Ix) oder Dx ausgeführt wird. Eine Konstante (Const) wird addiert, wenn eine Anweisung MOVS.W@Ax, Dx oder dergleichen ausgeführt wird. Das Additionsergebnis wird von der Arithmetik-Logik-Einheit (ALU) 213 ausgegeben. Der aus der Arithmetik-Logik- Einheit (ALU) 213 ausgegebene Wert wird in den Selektor 219 eingegeben. Eine weitere Eingabe für den Selektor 219 ist die in dem Modulo-Startadressregister (MS) 214 gespeicherte Modulo-Arithmetik-Startadresse.
  • Ob die Ausgabe des Selektors 219 als Ausgabe der Arithmetik-Logik-Einheit (ALU) 213 oder als Ausgabe des Modulo-Startadressregisters (MS) 214 verwendet wird, wird wie unten gezeigt bestimmt.
  • Ein Wert des Modulo-Adressregisters (A0x) 216 und ein Wert des Modulo-Adressregisters (ME) 215 wird immer durch den Komparator (CMP) 217 verglichen. Wenn diese Werte übereinstimmen, gibt der Komparator (CMP) 217 den Logikwert "1" aus. Wenn sie nicht übereinstimmen, gibt der Komparator den Logikwert "0" aus. Das logische Produkt eines aus dem Komparator (CMP) 217 ausgegebenen Werts wird durch das AND-Gatter 218 zusammen mit den Steuerbit DM und MXY berechnet (in diesem Fall wird ein Wert des Komparators 217 direkt aus dem AND-Gatter 218 ausgegeben, da sowohl DM als auch MXY den Logikwert "1" aufweisen) und in den Selektor 219 eingegeben. Der Selektor 219 wählt einen Wert des Modulo- Startadressregisters (MS) 214, wenn ein aus dem AND- Gatter 218 eingegebener Wert der Logikwert "1" ist, wählt aber einen aus der Arithmetik-Logik-Einheit (ALU) 213 ausgegebenen Wert, wenn der aus dem AND-Gatter 218 eingegebene Wert der Logikwert "0" ist.
  • Während ein aus dem AND-Gatter 218 eingegebener Wert der Logikwert "0" ist, wählt der Selektor 219 kontinuierlich einen aus der Arithmetik-Logik-Einheit (ALU) 213 ausgegebenen Wert. Deshalb wird ein auf den Adressbus XAB ausgegebener Wert sequentiell aktualisiert. Wenn ein Wert des Modulo- Endadressregisters (ME) 215 mit einem Wert des Modulo- Adressregisters (A0x) 216 übereinstimmt, wird ein aus dem AND-Gatter 218 in den Selektor 219 eingegebener Wert auf den Logikwert "1" gesetzt, um einen Wert des Modulo-Startadressregisters (MS) 214 zu wählen. Dadurch wird das Modulo-Adressregister (A0x) 216 durch den Wert des Modulo-Startadressregisters (MS) 214 initialisiert.
  • In der obigen Beschreibung der Modulo-Arithmetik wird der Betrieb bei Verwendung des Modulo-Adressregisters (A0x) 216 beschrieben. Es ist jedoch auch möglich, Ax in der Modulo-Arithmetikanweisung MOVS.W@Ax oder Dx für das Modulo-Adressregister (A1x) 216 zu kennzeichnen. Durch Kennzeichnen des Logikwerts "0" für das Steuerbit MXY kann darüber hinaus Modulo-Arithmetik für den Adressbus YAB durchgeführt werden. In diesem Fall muss Ax in der Modulo-Arithmetikanweisung MOVS.W@Ax oder Dx in einen Wert Ay umgeändert werden, um das Modulo- Adressregister (A0y) 226 oder (A1y) 226 zu kennzeichnen. Bei der Kennzeichnung von 0 für das Steuerbit DM ist es möglich, die Ausführung der Modulo- Arithmetik zu sperren.
  • Fig. 4 zeigt ein Blockschaltbild der DSP-Engine 3.
  • Der als Zufallslogikschaltkreis 301 gezeigte Schaltkreisblock enthält den Decodierer 34 und den Steuerschaltkreis in Fig. 1 und darüber hinaus ein Steuerregister und ein Statusregister. Außerdem ist die DSP-Engine 3 mit einer Arithmetik-Logik-Einheit (ALU) 302, einem Schieber (SFT) 303, einem Multiplizierer (MAC) 304, einem Register (Reg.) 305, einem Register (A0, A1) 306, einem Register (Y0, Y1) 307, einem Register (X0, X1) 308, einem Speicherdatenpuffer (MDBI) 309, einem Speicherdatenpuffer (MDBX) 310 und einem Speicherdatenpuffer (MDBY) 311 ausgestattet.
  • Der Speicherdatenpuffer (MDBY) 311 verbindet den Datenbus YDB mit dem Bus D2. Der Speicherdatenpuffer (MDBX) 310 verbindet den Datenbus XDB mit dem Bus D1. Der Speicherdatenpuffer (MDBX) 309 ist an den Datenbus IDB und die Busse C1, D1, A1 und B1 angeschlossen.
  • Der Multiplizierer (MAC) 304 gibt Daten aus den Bussen A1 und B1 ein und gibt das Multiplikationsergebnis der Daten auf die Busse C1 und D1 aus. Der Schieber (SFT) 303 gibt Daten aus dem Bus A2 ein und gibt das Schiebeoperationsergebnis auf den Bus C2 aus. Die Arithmetik-Logik-Einheit (ALU) 302 gibt Daten aus den Bussen A2 und B2 ein und gibt das Operationsergebnis auf den Bus C2 aus.
  • Fig. 5 zeigt ein Anweisungsformat und einen Anweisungscode, die in dem Anweisungssatz des Mikrocomputers 1 enthalten sind.
  • Der Mikrocomputer 1 unterstützt die beiden folgenden Arten von Anweisungen: CPU-Anweisung (erste Anweisung) und DSP-Anweisung (zweite Anweisung). Alle CPU- Anweisungen und ein Teil der DSP-Anweisungen sind Anweisungscodes mit einer Länge von 16 Bit (erste Bitlänge). Die übrigen DSP-Anweisungen sind Anweisungscodes mit einer Länge von 32 Bit (zweite Bitlänge).
  • In der vorliegenden Beschreibung wird eine CPU- Anweisung als eine Anweisung definiert, die ausschließlich ohne Betrieb der DSP-Engine 3 durch den CPU-Kern 2 auszuführen ist. Eine DSP-Anweisung ist definiert als eine Anweisung, die durch die DSP-Engine 3 auszuführen ist, indem der CPU-Kern 2 dazu gebracht wird, dass er eine bestimmte Verarbeitung, wie zum Beispiel Adressarithmetik oder Operandenzugriff, durchführt.
  • Im Fall einer CPU-Anweisung werden 4 Bit höherer Ordnung eines Anweisungscodes einem Adressraum von "0000" bis "1110" zugewiesen. Im Fall einer DSP- Anweisung werden 4 Bit höherer Ordnung eines Anweisungscodes alle "1111" zugewiesen. Darüber hinaus weist er im Fall sogar einer DSP-Anweisung, bei der 6 Bit höherer Ordnung eines Anweisungscodes "111100" und "111101" zugewiesen werden, einen 16-Bit-Anweisungscode auf. Eine Anweisung, bei der 6 Bit höherer Ordnung eines Anweisungscodes "111110" zugewiesen werden, weist einen 32-Bit-Anweisungscode auf. Weil keine Anweisung einem Adressraum zugewiesen wird, in dem 6 Bit höherer Ordnung eines Anweisungscodes "111111" sind und deshalb der Adressraum ein leerer Bereich (undefinierter Anweisungsbereich) ist. Es ist möglich, einen Anweisungscode durch Verwendung des Bereichs in der Zukunft weiter zu erweitern.
  • Wie aus dem Anweisungsformat hervorgeht, ist es durch Decodieren von 6 Bit höherer Ordnung jeder Anweisung möglich, durch einen Decodierer mit kleinem logischen Umfang zu entscheiden, ob die betreffende Anweisung eine CPU-Anweisung, eine 16-Bit-DSP-Anweisung, eine 32- Bit-DSP-Anweisung oder eine undefinierte Anweisung ist.
  • In dem CPU-Anweisungsformat in Fig. 5 stellt nnnn einen gekennzeichneten Zieloperandenbereich, ssss einen gekennzeichneten Quellenoperandenbereich, dddd einen gekennzeichneten Verschiebungsbereich und iiiiiiii einen gekennzeichneten Zwischenwertbereich dar. Im Fall einer ADD-Anweisung wird nnnn auch als ein gekennzeichneter Quellenoperandenbereich verwendet und Arithmetikergebnisse werden in nnnn gespeichert. Die durch Bezugnahme auf Fig. 3 beschriebene Modulo- Arithmetikanweisung entspricht der Anweisung MOVS.W@R2 oder A0 in Fig. 5. Im Fall der Anweisungsbeschreibung in Fig. 5 ist die Form von Operandenkennzeichnungsbeschreibung jedoch von dem in Fig. 3 beschriebenen Inhalt verschieden. Der Unterschied ist jedoch lediglich bezüglich des Typs, und das Wesentliche ist gleich.
  • Fig. 6 zeigt eine Verbindungsstruktur zwischen dem Decodierer 24 des CPU-Kerns 2 und dem Decodierer 34 der DSP-Engine 3.
  • Ein Anweisungsabrufen durch den Mikrocomputer 1 wird durch das Anweisungsregister (IR) 25 alle 32 Bit durchgeführt. Der Decodierer 24 ist mit einem ersten Decodierungsschaltkreis 240, einem zweiten Decodierungsschaltkreis 241 und einem Codeumsetzungsschaltkreis 242 ausgestattet.
  • Der erste Decodierungsschaltkreis 240 decodiert einen Wert in dem 16-Bit-Bereich höherer Ordnung (UIR) des Anweisungsregisters (IR) 25 und erzeugt ein CPU- Decodierungssignal 243, ein DSP-Decodierungssignal 244, ein Codeumsetzungssteuersignal 245 und ein Schiebesteuersignal 246 gemäß dem Umstand, dass die betreffende Anweisung eine CPU-Anweisung, eine 16-Bit- DSP-Anweisung oder eine 32-Bit-DSP-Anweisung ist.
  • Der zweite Decodierungsschaltkreis 241 decodiert das CPU-Decodierungssignal 243 und erzeugt verschiedene interne Steuersignale (CPU-Steuersignale) 247 zur Auswahl einer Arithmetikeinheit oder eines Registers in dem CPU-Kern 2.
  • Wenn das Codeumsetzungssteuersignal 245 den Codeumsetzungsschaltkreis 242 aktiviert, komprimiert dieser die Anzahl von Bit für die durch den 16-Bit- Bereich niederer Ordnung (LIR) des Anweisungsregisters (IR) 25 gehaltenen Informationen oder gibt diese direkt aus. Wenn der Schaltkreis 242 durch das Codeumsetzungssteuersignal 245 deaktiviert wird, gibt er Informationen (Nicht-Operationscode) aus, die darstellen, dass seine Ausgabe ungültig ist.
  • Außerdem kann der Codeumsetzungsschaltkreis 242 durch einen Selektor realisiert werden, um anstelle eines Werts des 16-Bit-Bereichs niederer Ordnung (LIR) einen Nicht-Operationscode auszugeben, wenn das Signal 245 inaktiv ist. Das DSP-Decodierungssignal 244 und eine Ausgabe des Codeumsetzungsschaltkreises 242 werden als das DSP-Steuersignal 20 dem Decodierer 34 der DSP- Engine 3 zugeführt. Der erste Decodierungsschaltkreis 240 kann entscheiden, dass die betreffende Anweisung eine CPU-Anweisung, eine 16-Bit-DSP-Anweisung oder eine 32-Bit-DSP-Anweisung ist, indem er die in dem 16-Bit- Bereich höherer Ordnung (UIR) des Anweisungsregisters (IR) 25 gespeicherten 6 Bit höherer Ordnung decodiert.
  • Wenn eine decodierte Anweisung eine 16-Bit-Anweisung ist, wird das Codeumsetzungssteuersignal 245 deaktiviert und der Codeumsetzungsschaltkreis 242 gibt dadurch einen Nicht-Operationscode aus, der darstellt, dass die Ausgabe ungültig ist. Wenn die decodierte Anweisung eine 16-Bit-Anweisung ist, wird das Schiebesteuersignal 246 aktiviert und das Anweisungsregister (IR) 25, das das Signal 246 empfängt, schiebt einen Wert in dem 16-Bit-Bereich niederer Ordnung (LIR) in den 16-Bit-Bereich höherer Ordnung (LIR), um die verschobene Anweisung als die vollständige als Nächstes auszuführende Anweisung oder Teil dieser zu verwenden.
  • Als Beispiel wird unten ein Fall beschrieben, bei dem eine 16-Bit-CPU-Anweisung in dem 16-Bit-Bereich höherer Ordnung des Anweisungsregisters IR und ein 16-Bit- Anweisungscode höherer Ordnung einer 32-Bit-DSP- Anweisung in dem Bitbereich LIR niederer Ordnung gespeichert wird. Als Erstes wird die in dem 16-Bit- Bereich höherer Ordnung UIR gespeicherte 16-Bit-CPU- Anweisung durch den ersten Decodierungsschaltkreis 240 decodiert, der CPU-Kern 2 führt die Anweisung gemäß dem Ergebnis aus und die 16-Bit-Anweisungscodedaten höherer Ordnung der in dem 16-Bit-Bereich niederer Ordnung LIR gespeicherten 32-Bit-DSP-Anweisung wird in den 16-Bit- Bereich höherer Ordnung UIR übermittelt. In diesem Fall bringt der Zufallslogikschaltkreis 201 die Arithmetik- Operationseinheit (AU) 208 dazu, dass sie Adressarithmetik einer in dem Programmzähler PC zu speichernden Adresse ausführt. Der Programmzähler PC speichert eine Adresse, die dem durch die Arithmetikeinheit AU 208 berechneten Adressarithmetikergebnis folgt. Gemäß der in dem Programmzähler PC gespeicherten Adresse werden die 16-Bit-Anweisungscodedaten niederer Ordnung der 32-Bit-DSP-Anweisung aus dem die Daten speichernden Anweisungsspeicher zu dem 16-Bit-Bereich niederer Ordnung LIR des Anweisungsregisters IR übermittelt. Dadurch wird die 32-Bit-DSP-Anweisung in dem Anweisungsregister IR gespeichert. Dann wird die in dem Anweisungsregister IR gespeicherte 32-Bit-DSP- Anweisung durch den Decodierer 24 dem Decodierer 34 der DSP-Engine 3 zugeführt.
  • Außerdem sind als anderes Verfahren mehrere Anweisungs- Vorabrufpuffer in dem CPU-Kern 2 vorgesehen, obwohl diese nicht dargestellt sind. Diese Anweisungs- Vorabrufpuffer rufen die auszuführenden Anweisungen mehrere Zyklen vor einer gerade ausgeführten Anweisung im Voraus ab. Wenn diese Vorabrufpuffer verwendet werden und die 16-Bit-Anweisungscodedaten höherer Ordnung der 32-Bit-DSP-Anweisung aus dem Bereich niederer Ordnung LIR wie oben beschrieben in den 16- Bit-Bereich höherer Ordnung UIR übermittelt werden, wählt der Zufallslogikschaltkreis 201 einen Anweisungs- Vorabrufpuffer, durch den die 16-Bit-Anweisungscodedaten niederer Ordnung der 32-Bit-DSP-Anweisung abgerufen werden. Die 16-Bit-Anweisungscodedaten niederer Ordnung der 32-Bit-DSP-Anweisung werden aus dem gewählten Anweisungs-Vorabrufpuffer ausgelesen und in dem 16-Bit-Bereich niederer Ordnung LIR des Anweisungsregisters IR gespeichert.
  • Wenn die decodierte Anweisung eine 16-Bit-CPU-Anweisung ist, wird das DSP-Decodierungssignal 244 als ein Nicht- Operation darstellender Code verwendet. Wenn die decodierte Anweisung eine 16-Bit-DSP-Anweisung ist, erzeugt der zweite Decodierungsschaltkreis 241 das CPU- Steuersignal 247 gemäß dem CPU-Decodierungssignal 243, und der Decodierer 34 erzeugt ein Steuersignal in der DSP-Engine 3, indem er das DSP-Decodierungssignal 244 im Wesentlichen decodiert. Wenn die decodierte Anweisung eine 32-Bit-DSP-Anweisung ist, erzeugt der zweite Decodierungsschaltkreis 241 das CPU-Steuersignal 247 gemäß dem CPU-Decodierungssignal 243, und der Decodierer 34 erzeugt ein Steuersignal in der DSP- Engine 3 durch Decodieren des DSP-Decodierungssignals 244 und einer Ausgabe des Codeumsetzungsschaltkreises 242.
  • Der Anweisungssatz des Mikrocomputers 1 enthält Anweisungscodes mit einer Länge von 16 Bit und einer Länge von 32 Bit. Da eine 16-Bit-Anweisung jedoch bei der Verarbeitung von einer 32-Bit-Anweisung verschieden ist, wird die Funktionsweise jedes Falls unten ausführlich separat beschrieben.
  • Als Erstes wird der Fall einer 16-Bit-Anweisung beschrieben.
  • Der erste Decodierungsschaltkreis 240 decodiert 16 Bit höherer Ordnung eines durch das Anweisungsregister (IR) 25 abgerufenen 32-Bit-Anweisungscodes. Der erste Decodierungsschaltkreis 240 kann erkennen, dass die betreffende Anweisung eine 16-Bit-Anweisung ist, wenn nicht 6 Bit höherer Ordnung eines Anweisungscodes "111110" oder "11111" sind. In diesem Fall wird das Schiebesteuersignal 246 zum Schieben der Anweisungscodedaten des 16-Bit-Bereichs niederer Ordnung LIR des Anweisungsregisters (IR) 25 zusammen mit Ausgaben des CPU-Decodierungssignals 243 und des DSP-Decodierungssignals 244 aktiviert.
  • Das Anweisungsregister (IR) 25, das das aktivierte Schiebesteuersignal 246 empfängt, schiebt einen in dem 16-Bit-Bereich niederer Ordnung LIR gespeicherten Anweisungscode in den 16-Bit-Bereich höherer Ordnung UIR. Der verschobene Anweisungscode wird dann durch den ersten Decodierungsschaltkreis 240 decodiert. Das aus dem Decodierer 24 ausgegebene CPU-Decodierungssignal 243 wird an den zweiten Decodierungsschaltkreis 241 ausgegeben, und das DSP-Decodierungssignal 244 wird der DSP-Engine 3 zugeführt. Wenn der erste Decodierungsschaltkreis 240 eine 16-Bit-Anweisung erkennt, deaktiviert er das Codeumsetzungssteuersignal 245. Dadurch erzeugt der Codeumsetzungsschaltkreis 242 einen Code, der zeigt, dass ein 16-Bit-Anweisungscode niederer Ordnung als Teil des DSP-Steuersignals 20 ungültig ist.
  • Wenn die DSP-Engine 3 das aus dem ersten Decodierungsschaltkreis 240 ausgegebene DSP-Decodierungssignal 244 und ein aus dem Codeumsetzungsschaltkreis 242 ausgegebenes Codesignal als die DSP-Steuersignale 20 empfängt, decodiert der Decodierer 34 die DSP- Steuersignale 20. Im Fall einer 16-Bit-DSP-Anweisung dient das aus dem Codeumsetzungsschaltkreis 242 ausgegebene DSP-Steuersignal als ein Signal, das Ungültigkeit darstellt. Deshalb bemerkt der Decodierer 34 das DSP-Decodierungssignal 244 und gibt Steuersignale für den Multiplizierer (MAC) 304, die Arithmetik-Logik-Einheit (ALU) 302 und den Schieber (SFT) 303 in der DSP-Engine 3 aus. Die DSP-Engine 3 führt gemäß diesen Steuersignalen eine arithmetische Verarbeitung durch.
  • Der Fall einer 32-Bit-Anweisung wird dann nachfolgend beschrieben.
  • Der erste Decodierungsschaltkreis 240 in dem CPU-Kern 2 speichert einen 32-Bit-Anweisungscode in dem Anweisungsregister (IR) 25. Dann decodiert der erste Decodierungsschaltkreis 240 16 Bit höherer Ordnung des Anweisungscodes und gibt die Decodierungssignale 243 und 244 aus. Da der erste Decodierungsschaltkreis 240 erkennen kann, dass die betreffende Anweisung eine 32- Bit-Anweisung ist, wenn ein 16-Bit-Code höherer Ordnung des Anweisungscodes auf "111110" gesetzt ist, aktiviert er das Codeumsetzungssteuersignal 245. Dadurch wendet der Codeumsetzungsschaltkreis 242 die Codeumsetzung auf einen 16-Bit-Anweisungscode niederer Ordnung des Anweisungsregisters (IR) 25 an. Codeumgesetzte Informationen werden der DSP-Engine 3 zusammen mit dem DSP-Decodierungssignal 244 als die DSP-Steuersignale 20 zugeführt. Der Decodierer 34 decodiert die DSP- Steuersignale 20 und erzeugt ein Steuersignal in der DSP-Engine 3. Die Decodierer 24 und 34 können zum Beispiel durch einen Zufallslogikschaltkreis realisiert werden.
  • Fig. 17 zeigt eine weitere Ausführungsform entsprechend der Ausführungsform in Fig. 6.
  • Im Fall der Ausführungsform in Fig. 6 wird beschrieben, dass Anweisungsdaten in dem Bereich niederer Ordnung LIR des Anweisungsregisters 25 in den Bereich höherer Ordnung UIR verschoben werden.
  • Im Fall der Ausführungsform in Fig. 17 sind zweistufige Reihen-Anweisungs-Vorabrufpuffer 250 und 251, die eine Anweisungs-Vorabrufwarteschlange bilden, zwischen dem Anweisungsregister 25 und dem internen Datenbus IDB vorgesehen, und die von den Anweisungs-Vorabrufpuffern 250 und 251 gehaltenen Daten werden durch einen Selektor 252 gewählt und dem Register 25 zugeführt. Die Anweisungs-Vorabrufpuffer 250 und 251 und das Anweisungsregister 25 halten jeweils Daten alle 32 Bit, und die Halteoperation wird durch Steuersignale φ1 bis φ3 (Synchronisierung mit CLK1) gesteuert.
  • Obwohl dies nicht dargestellt ist, weisen jeder Anweisungs-Vorabrufpuffer 250 und 251 und das Anweisungsregister 25 eine Master/Slave-Struktur auf. Die Master-Phase führt synchron mit dem Ansteigen eines entsprechenden Steuersignals eine Zwischenspeicherung einer Eingabe durch, und die Slave-Phase führt synchron mit der hinteren Flanke eines entsprechenden Steuersignals eine Zwischenspeicherung einer Eingabe durch. Dadurch werden Anweisungsdaten vor und nach dem Vorabrufen in den zweistufigen Reihen-Anweisungs- Vorabrufpuffern 250 und 251 gespeichert.
  • Der Selektor 252 wählt 32-Bit-Anweisungsdaten, die einem Port Pa zugeführt werden sollen, oder 32-Bit- Anweisungsdaten, die einem Port Pb zugeführt werden sollen, gemäß einem Auswahlsteuersignal φ4 und führt diese dem Anweisungsregister 25 zu. Die 32-Bit- Anweisungsdaten, die einen 16-Bit-Bereich höherer Ordnung UPB1 des Anweisungs-Vorabrufpuffers 250 als Seite niederer Ordnung und einen 16-Bit-Bereich niederer Ordnung LPB2 des Anweisungs-Vorabrufpuffers 251 als Seite höherer Ordnung verwenden, werden dem Port Pa zugeführt. Die in dem Anweisungs-Vorabrufpuffer 251 gespeicherten 32-Bit-Anweisungsdaten werden direkt dem Port Pb zugeführt.
  • Wenn der Anweisungs-Vorabrufpuffer 251 eine 32-Bit-DSP- Anweisung hält, kann der Selektor 252 dadurch die 32- Bit-DSP-Anweisung durch Wählen einer Ausgabe des Ports Pb auf das Anweisungsregister 25 setzen.
  • Wenn der Anweisungs-Vorabrufpuffer 251 eine 16-Bit-DSP- Anweisung oder eine 16-Bit-CPU-Anweisung in dem Bereich höherer Ordnung UPB2 hält, kann der Selektor 252 die 16-Bit-Anweisung auf den Bereich höherer Ordnung UIR des Anweisungsregisters 25 setzen, indem er einen Ausgang des Ports Pb wählt.
  • Wenn der Anweisungs-Vorabrufpuffer 251 eine 16-Bit-DSP- Anweisung oder eine 16-Bit-CPU-Anweisung in dem Bereich niederer Ordnung LPB2 hält, kann der Selektor 252 die 16-Bit-Anweisung in den Bereich höherer Ordnung UIR des Anweisungsregisters 25 setzen, indem er einen Ausgang des Ports Pa wählt.
  • Wenn der Anweisungs-Vorabrufpuffer 251 einen 16-Bit- Anweisungscode höherer Ordnung einer 32-Bit-DSP- Anweisung in dem Bereich niederer Ordnung LPB2 hält und der Anweisungs-Vorabrufpuffer 250 einen 16-Bit- Anweisungscode niederer Ordnung der 32-Bit-DSP- Anweisung in dem Bereich höherer Ordnung UPB1 hält, dann kann der Selektor 252 die 32-Bit-DSP-Anweisung auf das Anweisungsregister 25 setzen, indem er einen Ausgang des Ports Pa wählt.
  • In Fig. 17 stellt das Symbol 253 eine Steuerlogik zur Erzeugung der Zwischenspeichersteuersignale φ1 und φ2 der Anweisungs-Vorabrufpuffer, eines Zwischenspeichersteuersignals φ3 des Anweisungsregisters 25 und des Auswahlsteuersignals φ4 dar. Die Steuerlogik 253 erzeugt das Steuersignal 248, wobei eine 16-Bit- Anweisung oder eine 32-Bit-Anweisung gezeigt sind, und die Steuersignale φ1 bis φ4 gemäß dem Stand eines Anweisungscodes, der in jedem Bereich der Anweisungs- Vorabrufpuffer 250 und 251 unausgeführt verbleibt. Die Steuerlogik 253 bildet einen Teil der Steuerlogik für das Anweisungsabrufen. Das Steuersignal 248 wird erzeugt, wenn der erste Decodierungsschaltgreis 240 6 Bit höherer Ordnung von Anweisungscodedaten decodiert, die aus dem Bereich höherer Ordnung UIR des Anweisungsregisters 25 zugeführt werden, und dessen Einzelheiten werden später beschrieben.
  • Anweisungscodedaten werden durch die Steuerlogik 253 wie nachfolgend gezeigt auf das Anweisungsregister 25 gesetzt.
  • Das Anweisungsabrufen aus der Außenwelt wird mit der Anweisungsabrufzeitsteuerung des CPU-Kerns 2 (zum Beispiel in einer Anweisungsabrufphase IF mehrerer später zu erwähnender Pipeline-Phasen) durchgeführt, wenn in dem Anweisungs-Vorabrufpuffer 250 Platz für ein neues Speichern von 32-Bit-Anweisungscodedaten ist. Wenn das Anweisungsabrufen mit der Zeitsteuerung durchgeführt wird, werden unausgeführte Anweisungen in dem Anweisungs-Vorabrufpuffer 251 gelassen.
  • Wenn beide in den Bereichen UPB2 und LPB2 des Anweisungs-Vorabrufpuffers 251 gespeicherten Anweisungscodes unter dem ersten Zustand liegen, in dem die Codes noch nicht ausgeführt sind, wird durch den Selektor 252 durch den Port Pb eine 32-Bit-Ausgabe des Anweisungs-Vorabrufpuffers 251 gewählt und auf das Anweisungsregister 25 gesetzt.
  • Wenn der in dem Bereich niederer Ordnung LPB2 des Anweisungs-Vorabrufpuffers 251 gespeicherte Anweisungscode unter dem zweiten Zustand liegt, in dem der Code noch nicht ausgeführt ist, werden durch den Anweisungs-Vorabrufpuffer 250 vorabgerufene Anweisungscodedaten in dem Bereich höherer Ordnung UPB1 und Anweisungscodedaten in dem Bereich niederer Ordnung LPB2 des Anweisungs-Vorabrufpuffers 251 durch den Port Pa auf das Anweisungsregister 25 gesetzt.
  • Wenn der Decodierungsschaltkreis 240 die auf den Bereich höherer Ordnung UIR des Anweisungsregisters 25 gesetzten Anweisungscodedaten decodiert und als Ergebnis die Daten eine 32-Bit-Anweisung sind, werden unter dem obigen ersten Zustand 32-Bit- Anweisungscodedaten direkt zu dem Anweisungs- Vorabrufpuffer 251 übermittelt. Wenn als Ergebnis der Decodierung der Anweisungsdecodierungsdaten jedoch eine 16-Bit-Anweisung erkannt wird, werden keine Daten aus dem Anweisungs-Vorabrufpuffer 250 in den Puffer 251 der nächsten Phase geschoben.
  • Unter der obigen zweiten Phase werden die 32-Bit- Anweisungscodedaten, die durch den Anweisungs- Vorabrufpuffer 250 vorabgerufen wurden, direkt in den Anweisungs-Vorabrufpuffer 251 geschoben und gesetzt, nachdem Daten durch den Port Pa auf das Anweisungsregister 25 gesetzt wurden. Nachdem die Daten geschoben und gesetzt wurden, werden Anweisungscodedaten mit der nächsten Anweisungs-Vorabrufzeitsteuerung durch den Anweisungs-Vorabrufpuffer 250 vorabgerufen, außer wenn etwaige unausgeführte Anweisungscodedaten in dem Anweisungs-Vorabrufpuffer 250 zurückbleiben.
  • Gemäß der obigen Steuerung werden unverarbeitete Anweisungscodedaten nach der Anweisungsabrufzeitsteuerung auf das Anweisungsregister 25 gesetzt. Auch wenn eine auszuführende Anweisung ein beliebiges Element der Gruppe 16-Bit-CPU-Anweisung, 16-Bit-DSP- Anweisung und 32-Bit-DSP-Anweisung ist, werden in diesem Fall 16 Bit höherer Ordnung der Anweisung unweigerlich dem ersten Decodierungsschaltkreis 240 zugeführt.
  • Der in Fig. 6 beschriebene Codeumsetzungsschaltkreis 242 umfasst einen Selektor 242A und eine Codeumsetzungslogik 242B in Fig. 17. Außerdem erzeugt der erste Decodierungsschaltkreis 240 in der Beschreibung von Fig. 6 die Steuersignale 245 und 246, deren Pegel abhängig davon gesteuert werden, ob der durch den Schaltkreis 240 decodierte Anweisungscode eine 16-Bit-Anweisung ist oder nicht. Die Ausführungsform in Fig. 17 gibt jedoch das Steuersignal 248 aus, um zu unterscheiden, ob ein durch den Schaltkreis 240 decodierter Anweisungscode eine 16-Bit- Anweisung oder eine 32-Bit-Anweisung ist (in dieser Ausführungsform ist eine 32-Bit-Anweisung eine DSP- Anweisung). Der Selektor 242A wählt einen No-Operation- Code NOP und führt ihn der Codeumsetzungslogik 242B zu, wenn das Steuersignal 248 eine 16-Bit-Anweisung darstellt, führt jedoch der Codeumsetzungslogik 242B einen Anweisungscode in dem Bereich niederer Ordnung LIR des Anweisungsregisters 25 zu, wenn das Steuersignal 248 eine 32-Bit-DSP-Anweisung darstellt. Obwohl sie nicht beschränkt wird, korrigiert die Codeumsetzungslogik 242B einen Teil der Anweisungscodedaten des Bereichs niederer Ordnung LIR des Anweisungsregisters 25, wie zum Beispiel Codeinformationen zur Auswahl eines Registers, zu einer Form, die sich für den Decodierer 34 der DSP-Engine 3 eignet, und gibt diese dann aus.
  • Im Fall der Ausführungsform in Fig. 17 decodiert der erste Decodierungsschaltkreis 240 die von dem Bereich höherer Ordnung UIR des Anweisungsregisters 25 gehaltenen 16-Bit-Anweisungscodedaten und liefert das durch Decodierung erhaltene CPU-Decodierungssignal 243 an den zweiten Decodierungsschaltkreis 243 und führt außerdem das DSP-Decodierungssignal 244 dem Decodierer 34 zu. Dem CPU-Decodierungssignal 243 wird für eine CPU-Anweisung oder eine DSP-Anweisung Signifikanz gegeben und es wird dem zweiten Decodierungsschaltkreis 241 zugeführt. Der zweite Decodierungsschaltkreis 241 decodiert das CPU-Decodierungssignal 243 und gibt Steuerinformationen für die von dem CPU-Kern 2 durchzuführende Adressberechnung oder Datenverarbeitung oder Auswahlsteuerinformationen eines Adressbusses oder Datenbusses zum Zugriff auf den internen Speicher X-ROM 4, Y-ROM 5, X-RAM, Y-RAM und einen externen Speicher aus. Wie oben beschrieben, wählt der CPU-Kern 2 Adressarithmetik oder einen Datenweg, der für eine DSP- Anweisung notwendig ist.
  • Das DSP-Decodierungssignal 244 ist, wie oben beschrieben, ein Decodierungssignal, dem Signifikanz gegebenen werden soll, wenn es sich bei einem dem ersten Decodierungsschaltkreis 240 zuzuführenden Anweisungscode um Codedaten für eine DSP-Anweisung handelt. Das signifikante DSP-Decodierungssignal 244 enthält Informationen zum Kennzeichnen eines Registers oder dergleichen in der DSP-Engine 3 zum Übermitteln von Daten zu und von einem Speicher, auf den gemäß der durch den CPU-Kern 2 durchgeführten Adressberechnung zugegriffen werden soll. Wenn der dem ersten Decodierungsschaltkreis 240 zuzuführende Anweisungscode eine CPU-Anweisung ist, wird das DSP-Signal 244 in einen Ungültigkeit darstellenden Code umgesetzt.
  • Der Code der in dem Anweisungssatz des Mikrocomputers 1 enthaltenen DSP-Anweisung wird unten minutiöser beschrieben. Fig. 18 und 19 zeigen den Anweisungscode jeweils einer 16-Bit-DSP-Anweisung. Fig. 20 und 21 zeigen den Anweisungscode jeweils einer 32-Bit-DSP- Anweisung. Wie oben beschrieben, werden im Fall einer DSP-Anweisung 4 Bit höherer Ordnung des Anweisungscodes "1111" zugewiesen. Im Fall einer 16-Bit-DSP-Anweisung werden "111100" und "111101" 6 Bit höherer Ordnung des Anweisungscodes zugewiesen. Im Fall einer 32-Bit-DSP- Anweisung werden "111110" 6 Bit höherer Ordnung des Anweisungscodes zugewiesen.
  • Das Anweisungsformat der in dem ersten Raum (X-Seite der Datenübermittlung) in Fig. 18 gezeigten 16-Bit-DSP- Anweisung stellt eine Datenübermittlungsanweisung dar, die zwischen einem X-Speicher (X-ROM 4 oder X-RAM 6) und einem eingebauten Register der DSP-Engine 3 verwendet wird, und das in dem zweiten Raum (Y-Seite der Datenübermittlung) gezeigte Anweisungsformat stellt eine Datenübermittlungsanweisung dar, die zwischen einem Y-Speicher (Y-ROM 5 oder Y-RAM 7) und einem eingebauten Register der DSP-Engine 3 verwendet wird. Bei den obigen Formaten kennzeichnen Ax und Ay ein Register in dem Register-Array 209 (siehe Fig. 3) in dem CPU-Kern 2, Ax = "0" kennzeichnet ein Register R4, Ax = "1" kennzeichnet ein Register R5, Ay = "0" kennzeichnet ein Register R6 und Ay = "1" kennzeichnet ein Register R7. Dx, Dy und Da kennzeichnen jeweils ein Register in der DSP-Engine, Dx = "0" kennzeichnet ein Register C0, Cx = "1" kennzeichnet ein Register X1, Dy = "0" kennzeichnet ein Register Y0, Dy = "1" kennzeichnet ein Register Y1, Da = "0" kennzeichnet ein Register A0 und Da = "1" kennzeichnet ein Register A1. Ix und Iy stellen jeweils einen Zwischenwert dar.
  • Das Anweisungsformat einer 16-Bit-DSP-Anweisung (siehe Fig. 19) stellt eine Datenübermittlungsanweisung dar, die zwischen einem (nicht gezeigten) Speicher, der mit einer externen Einheit des Mikrocomputers 1 verbunden ist, und einem eingebauten Register der DSP-Engine 3 verwendet wird. As kennzeichnet ein Register in dem Register-Array 209 (siehe Fig. 3), das in den CPU-Kern 2 eingebaut ist. Ds kennzeichnet ein Register in dem Register X1, X0, Y1, Y0, A1 oder A0 oder ein Register- Array 305 (siehe Fig. 4).
  • Das Format einer 32-Bit-DSP-Anweisung wird grob in einen Bereich (Bit 31 bis Bit 26) des Codes "111110", der eine 32-Bit-DSP-Anweisung zeigt, ein Feld A (Bit 25 bis Bit 16) und ein Feld B (Bit 15 bis Bit 0) aufgeteilt. Fig. 20 zeigt Codes in dem Feld A und Mnemonik entsprechend dem Feld A beim Bemerken des Feldes A und Fig. 21 zeigt Codes im Feld B und Mnemonik entsprechend dem Feld B beim Bemerken des Feldes B.
  • Die Codes in Feld A (siehe Fig. 20) sind dieselben wie die von Bit 9 bis Bit 0 der 16-Bit-DSP-Anweisung (siehe Fig. 18). Die Codes in dem Feld A, die in dem ersten Raum (X-Seite der Datenübermittlung) in Fig. 20 gezeigt sind, geben die Datenübermittlung zwischen einem X- Speicher (X-ROM 4 oder X-RAM 6) und einem eingebauten Register der DSP-Engine 3 an, und die Codes in dem Feld A, das in dem zweiten Raum gezeigt ist (Y-Seite der Datenübermittlung) geben die Datenübermittlung zwischen einem Y-Speicher (Y-ROM 5 oder Y-RAM 7) und einem eingebauten Register der DSP-Engine 3 an. Die durch die Bit Ax, Ay, Dx, Dy und Da in dem Feld A gekennzeichneten Inhalte sind dieselben wie die in Fig. 18 gezeigten.
  • Die Codes im Feld B (siehe Fig. 21) geben eine Arithmetikoperation, eine logische Operation, eine Schiebeoperation und Verarbeitung wie zum Beispiel Laden/Speichern zwischen Registern an. Zum Beispiel geben die Codes Operationen wie etwa Multiplikation (PMULS), Subtraktion (PSUB), Addition (PADD), Runden (PRND), Schieben (PSHL), logisches Multiplizieren (PAND), Exklusiv-OR (XOR), logisches Addieren, Inkrementieren (PINC), Dekrementieren (PDEC) und Löschen (CLR) an, die in der DSP-Engine 3 durchgeführt werden, oder Laden (PLDS) und Speichern (PSTS), die in der DSP-Engine 3 durchgeführt werden. Der dritte Raum (3-Operanden-Operation mit Bedingung) in Fig. 21 zeigt bedingte Codes, und es ist möglich, einen logischen Wert zu wählen oder ein DC-Bit (Daten vollständig), d. h. das Bit zeigt den Abschluss der Datenverarbeitung) als ihre Bedingungen (if cc) zu verwerfen.
  • Eine tatsächliche 32-Bit-DSP-Anweisung wird durch eine wahlweise Kombination der Codes im Feld B mit denen im Feld A beschrieben. Das heißt, die 32-Bit-DSP-Anweisung ruft einen Operanden ab, an dem aus einer internen oder externen Einheit des Mikrocomputers 1 operiert werden soll, und gibt die Verarbeitung zum Operieren an dem Operanden in der DSP-Engine 3 an. Wie oben beschrieben wird die Adressberechnung oder Auswahl eines Datenweges für das Operandenabrufen durch die CPU 2 durchgeführt. Der Code im Feld A zur Angabe des Operandenabrufens in der 32-Bit-DSP-Anweisung ist derselbe wie der einer 16- Bit-DSP-Anweisung. Die 16-Bit-DSP-Anweisung dient zur Initialisierung eines Registers in der DSP-Engine 3.
  • Wie durch Bezugnahme auf die in Fig. 17 oder dergleichen gezeigte Struktur hervorgeht, werden Codedaten im Feld A einer 32-Bit-DSP-Anweisung auf den Bereich höherer Ordnung UIR des Anweisungsregisters 25 gesetzt. Außerdem wird eine 16-Bit-DSP-Anweisung mit demselben Format wie das von Feld A auf den Bereich höherer Ordnung UIR gesetzt. Deshalb reicht es in jedem Fall aus, wenn der CPU-Kern 2 eine notwendige Adressberechnung und Auswahl eines Datenweges durchführt, die für das Datenabrufen (oder Operandenabrufen) ähnlich notwendig ist. Anders ausgedrückt werden die Decodierungsschaltkreise 240 und 241, die für das Datenabrufen (oder Operandenabrufen) zur Ausführung einer 32-Bit-DSP-Anweisung und für das Datenabrufen (oder Operandenabrufen) zur Ausführung einer 16-Bit-DSP-Anweisung erforderlich sind, gemeinsam benutzt. Deshalb trägt dies ebenfalls zu der Verringerung des logischen Umfangs des Mikrocomputers 1 bei. Informationen zur Kennzeichnung eines internen Registers der DSP-Engine 3, gekennzeichnet durch das Feld A einer 32-Bit-DSP-Anweisung, oder Informationen zur Kennzeichnung eines internen Registers der DSP- Engine 3, gekennzeichnet durch eine 16-Bit-DSP- Anweisung, werden als das DSP-Decodierungssignal 244 der DSP-Engine 3 zugeführt. Ob dem DSP- Decodierungssignal 244 Signifikanz gegeben werden soll oder nicht, wird entschieden, wenn der erste Decodierungsschaltkreis 240 4 Bit höherer Ordnung des Bereichs höherer Ordnung UIR decodiert.
  • Einzelheiten der Operationssteuerung in dem Mikrocomputer 1 dieser Ausführungsform werden dann nachfolgend unter Bezugnahme auf die Anweisungsausführungsimpulsdiagramme in Fig. 7 bis 16 beschrieben.
  • Der Mikrocomputer 1 dieser Ausführungsform führt fünfphasige Pipeline-Operationen der Phasen IF, ID, EX, MA und WB/DSP durch. IF stellt eine Anweisungsabrufphase, ID eine Anweisungsdecodierungsphase, EX eine Operationsausführungsphase, MA eine Speicherzugriffsphase und WB/DSP eine Phase zur Erfassung von Daten dar, die aus einem Speicher erhalten werden, in ein Register des CPU-Kerns 2 oder für die DSP-Engine 3 zur Ausführung einer DSP-Anweisung.
  • In jeder Zeichnung stellt der Anweisungs-/Datenzugriff einen Speicherzugriff durch die internen Busse IAB und IDB dar, und zu Zugriffsobjekten gehört ein externer Speicher des Mikrocomputers 1 neben den eingebauten Speichern 4 bis 7. Der X-, Y-Sp.-Zugriff stellt einen Speicherzugriff durch die internen Busse XAB und XDB oder YAB und YDB dar, obwohl Zugriffsobjekte auf die eingebauten Speicher 4 bis 7 begrenzt sind. Anw.- Abrufen stellt die Anweisungsabrufzeitsteuerung für das Anweisungsregister (TR) 25 dar, Abruf-Reg. das Anweisungsregister (IR) 25 Quellendatenausgabe einen Quellendatenausgang, Zieleingabe die Eingangszeitsteuerung von Zieldaten und Zielregister ein Zielregister. Zeiger-Reg. stellt ein Zeigerregister dar, Adress-Ber. eine Adressarithmetik, Daten abrufen das Datenabrufen und das DSP-Steuersignal Decodierzeitsteuerung stellt die Zeitsteuerung zur Decodierung des DSP-Steuersignals 20 durch den Decodierer 34 dar.
  • Fig. 7 zeigt ein Impulsdiagramm zur Ausführung einer ALU-Arithmetikanweisung in dem CPU-Kern 2. In diesem Fall dienen ADD Rm und Rn als ALU- Arithmetikanweisungen.
  • Eine Adresse, in der auszuführende Anweisungen (ADD Rm und Rn) gespeichert werden, wird synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 unmittelbar vor der IF-Phase auf den Adressbus IAB ausgegeben. Im Fall des Anweisungs-/Daten-Sp.-Zugriffs wird der Speicherzugriff in der IF-Phase durchgeführt. Genauer gesagt wird eine durch den Adressbus IAB gekennzeichnete Adresse in dem Zeitraum zwischen dem Anstieg des Taktsignals Clock 1 und dem Anstieg des nächsten Taktsignals Clock 2 decodiert und der Anweisungszugriff wird in der Zeitspanne zwischen dem Anstieg des Taktsignals Clock 2 und dem Anstieg des nächsten Taktsignals Clock 1 in der IF-Phase durchgeführt. Deshalb wird eine Anweisung von dem Zeitpunkt an, wenn das Taktsignal Clock 2 in der IF- Phase ansteigt, auf den Datenbus IDB ausgegeben.
  • Die Anweisungsausgabe auf den Datenbus IDB wird von dem Anweisungsregister (IR) 25 synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 1 in der ID-Phase erfasst. In der ID-Phase werden durch das Anweisungsregister (IR) 25 erfasste Daten decodiert.
  • Auf ein Register, in dem Quellendaten gespeichert werden, wird synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 1 in der EX-Phase zugegriffen, und ein Wert in dem Register wird auf die internen Busse A1 und B1 des CPU-Kerns 2 ausgegeben. Im Fall der Anweisungen ADD Rm und Rn dienen zu Rm und Rn gekennzeichnete Register als Quellenregister. Durch Rm und Rn wird es möglich, ein beliebiges Register in dem CPU-Kern 2 zu kennzeichnen (in Fig. 3 kann ein beliebiges der Register A0x, A1x, Ix, A0y, A1y und Iy in dem Register 209 als Rm oder Rn gekennzeichnet werden).
  • Die Arithmetik-Logik-Einheit (ALU) 213 addiert auf die internen Busse A1 und B1 des CPU-Kerns 2 ausgegebene Daten und das Ergebnis wird auf den internen Bus C1 des CPU-Kerns 2 ausgegeben. Das auf den internen Bus C1 des CPU-Kerns 2 ausgegebene Arithmetikergebnis wird in einem Zielregister gespeichert (das Zielregister ist ein zu Rn in den Anweisungen ADD Rm und Rn gekennzeichnetes Register). Die Anweisungsausführung ist somit in drei Pipeline-Phasen von IF, ID und EX durch die ALU-Arithmetikanweisung in dem CPU-Kern 2 abgeschlossen,
  • Fig. 8 zeigt ein Impulsdiagramm zum Auslesen von Daten aus einem Speicher in den CPU-Kern 2.
  • Operationen einer Anweisung zum Auslesen von Daten aus einem Speicher in den CPU-Kern 2 werden anhand von MOV.L@Rm,Rn als Beispiel für die Anweisung beschrieben. Da Operationen bis zu dem Anweisungsabrufen (IF) und Anweisungsdecodieren (ID) dieselben wie in Fig. 7 sind, wird eine ausführliche Beschreibung dieser ausgelassen.
  • Die Daten in einem Register, das als ein Adresszeiger synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 1 in der EX-Phase dient, werden auf den internen Bus A1 des CPU-Kerns 2 ausgegeben. Im Fall dieses Beispiels ist das als Adresszeiger dienende Register ein mit Rm gekennzeichnetes Register. Ein Register, das zu Rm gekennzeichnet werden kann, ist ein beliebiges in dem CPU-Kern 2 enthaltenes Register (in Fig. 3 kann ein beliebiges der Register A0x, A1x, Ix, A0y, A1y und Iy als Rm gekennzeichnet werden). Die Datenausgabe auf den internen Bus A1 des CPU-Kerns 2 wird in dem Adresspuffer 205 gespeichert und synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der EX-Phase auf den Adressbus IAB ausgegeben.
  • Die auf den internen Bus A1 des CPU-Kerns 2 ausgegebenen Daten werden durch die Arithmetik-Logik- Einheit (ALU) 213 berechnet. In diesem Fall führt die Arithmetik-Logik-Einheit (ALU) 213 eine Nulladditionsarithmetik durch. Das Arithmetikergebnis wird auf den internen Bus C1 des CPU-Kerns 2 ausgegeben. Das auf den internen Bus C1 des CPU-Kerns 2 ausgegebene Arithmetikergebnis wird synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der EX-Phase in einem Zeigerregister gespeichert (in diesem Fall einem Register mit der Kennzeichnung Rm).
  • Im Fall eines Anweisungs-/Daten-Sp.-Zugriffs wird eine auf den Adressbus IAB ausgegebene Adresse synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der EX-Phase in der Zeitspanne zwischen dem Anstieg des Taktsignals Clock 1 und dem Anstieg des Taktsignals Clock 2 in der MA-Phase decodiert und der Datenzugriff wird in der Zeitspanne zwischen dem Anstieg des Taktsignals Clock 2 und dem Anstieg des nächsten Taktsignals Clock 1 in der MA-Phase durchgeführt. Deshalb werden von dem Zeitpunkt an, wenn das Taktsignal Clock 2 in der MA-Phase ansteigt, Daten auf den Datenbus IDB ausgegeben.
  • Die auf den Datenbus IDB ausgegebenen Daten werden durch den CPU-Kern 2 synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 1 in der WP/DSP- Phase erfasst und auf den internen Bus DW des CPU-Kerns 2 ausgegeben. Die Daten auf dem internen Bus DW des CPU-Kerns 2 werden synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der WB/DSP-Phase in einem Zielregister gespeichert und die Operationen werden beendet.
  • Im Fall dieses Beispiels ist das Zielregister ein Register, das auf Rn gekennzeichnet ist. Ein Register, das auf Rn gekennzeichnet werden kann, ist ein beliebiges in dem CPU-Kern 2 enthaltenes Register (in Fig. 3 kann ein beliebiges der Register A0x, A1x, Ix, AOY, A1y und Iy als Rn gekennzeichnet werden). Wie oben beschrieben wird die Anweisungsausführung in fünf Pipeline-Phasen von IF, ID, EX, MA und WB/DSP durch eine Anweisung zum Auslesen von Daten aus einem Speicher in den CPU-Kern 2 abgeschlossen.
  • Fig. 9 zeigt ein Impulsdiagramm einer Anweisung zum Schreiben von Daten in einen Speicher aus dem CPU-Kern 2.
  • Operationen der Anweisung werden anhand von MOV.L Rm, @Rn als Beispiel für die Anweisung zum Schreiben von Daten aus dem CPU-Kern 2 in einen Speicher beschrieben. Operationen des Anweisungsabrufens (IF) und Anweisungsdecodieren (ID) sind dieselben wie in Fig. 8, und eine ausführliche Beschreibung dieser wird weggelassen.
  • Die Daten in einem Register, das als ein Adresszeiger dient, werden synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 1 in der EX-Phase auf den internen Bus A1 des CPU-Kerns 2 ausgegeben. Im Fall dieses Beispiels ist das als ein Adresszeiger dienende Register ein Register mit der Kennzeichnung Rn. Ein Register, das zu Rn gekennzeichnet werden kann, ist ein beliebiges in dem CPU-Kern 2 enthaltenes Register (in Fig. 3 kann ein beliebiges der Register A0x, A1x, Ix, A0y, A1y und Iy in Reg. als Rn gekennzeichnet werden). Die auf den internen Bus A1 des CPU-Kerns 2 ausgegebenen Daten werden in dem Adresspuffer 205 gespeichert und synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der EX-Phase auf den Adressbus IAB ausgegeben.
  • Die Datenausgabe auf den internen Bus A1 des CPU-Kerns 2 wird durch die Arithmetik-Logik-Einheit (ALU) 213 berechnet. In diesem Fall führt die Arithmetik-Logik- Einheit (ALU) 213 Nulladditionsarithmetik durch. Das Arithmetikergebnis wird auf den internen Bus C1 des CPU-Kerns 2 ausgegeben. Das auf den internen Bus C1 des CPU-Kerns 2 ausgegebene Arithmetikergebnis wird synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der EX-Phase in einem Zeigerregister gespeichert (in diesem Fall einem Register mit der Kennzeichnung Rn).
  • Im Fall der Anweisung MOV.L Rm, @Rn wird die Adressberechnung in der EX-Phase durchgeführt, und gleichzeitig wird darauf vorbereitet, die in einen Speicher zu schreibenden Daten auf den Datenbus IDB auszugeben. Synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 1 in der EX-Phase wird ein Wert aus einem die in den Speicher zu schreibenden Daten speichernden Register auf den internen Bus DR des CPU- Kerns 2 ausgegeben. Im Fall dieses Beispiels ist das die in den Speicher zu schreibenden Daten speichernde Register ein Register mit der Kennzeichnung Rm. Ein Register, das mit Rm gekennzeichnet werden kann, ist ein beliebiges in dem CPU-Kern 2 enthaltenes Register (in Fig. 3 kann ein beliebiges der Register A0x, A1x, Ix, A0y, A1y und Iy in Reg. als Rm gekennzeichnet werden). Der auf den internen Bus DR des CPU-Kerns 2 ausgegebene Wert wird synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der MA-Phase auf den Datenbus IDB ausgegeben.
  • Im Fall eines Anweisungs-/Daten-Sp.-Zugriffs wird eine auf den Adressbus IAB ausgegebene Adresse synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der EX-Phase in der Zeitspanne zwischen dem Anstieg des Taktsignals Clock 1 und dem Anstieg des Taktsignals Clock 2 in der MA-Phase decodiert und die auf den Datenbus IDB ausgegebenen Daten werde synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der MA-Phase geschrieben und die Operationen werden beendet.
  • Im Fall der Anweisung zum Schreiben von Daten aus einem Speicher in den CPU-Kern 2 beendet der CPU-Kern 2 die Operationen bei der Ausgabe von Daten auf den Datenbus IDB. Deshalb sind die Operationen in vier Pipeline- Phasen von IF, ID, EX und MA abgeschlossen.
  • Fig. 10 zeigt ein Impulsdiagramm zur Ausführung einer DSP-Anweisung. Die Operationen der Anweisung werden nachfolgend anhand von PADDC Sx, Sy, Dz NOPX NOPY als Beispiel für die DSP-Anweisung beschrieben. Diese Anweisung addiert die in Registern in der DSP-Engine 3 gespeicherten Daten, übermittelt jedoch keine Daten zwischen der DSP-Engine 3 und dem X-ROM 4 oder X-RAM 6 oder zwischen dem Y-ROM 5 und dem Y-RAM 7.
  • Da die Anweisungsabrufoperation dieselbe wie in Fig. 7 ist, wird ihre ausführliche Beschreibung ausgelassen.
  • In der ID-Phase wird ein durch den CPU-Kern 2 erfasster Anweisungscode in der Zeitspanne zwischen dem Taktsignal Clock 1 und dem Taktsignal Clock 2 decodiert und das Ergebnis des Decodierens des Anweisungscodes an der Zeitsteuerung des Taktsignals Clock 2 in der ID- Phase wird als das DSP-Steuersignal 20 an die DSP- Engine 3 ausgegeben.
  • Wenn die DSP-Engine 3 das DSP-Steuersignal 20 aus dem CPU-Kern 2 empfängt, decodiert sie das bis zu der Zeitspanne der MA-Phase empfangene DSP-Steuersignal 20. Es erfolgt ein Zugriff auf ein Quellendaten speicherndes Register synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 1 in der WB/DSP-Phase, und der Wert in dem Register wird auf die internen Busse A2 und B2 ausgegeben.
  • Im Fall dieses Beispiels sind Register, die Quellendaten speichern, mit Sx und Sy gekennzeichnete Register. Register, die mit Sx und Sy gekennzeichnet werden können, sind beliebige Register in der DSP- Engine 3 (in Fig. 4 können beliebige Register in Reg. als Sx und Sy gekennzeichnet werden). Die auf die internen Busse A2 und B2 der DSP-Engine 3 ausgegebenen Daten werden von der Arithmetik-Logik-Einheit (ALU) 302 berechnet, und das Ergebnis wird auf den internen Bus C2 der DSP-Engine 3 ausgegeben. Das auf den internen Bus C2 der DSP-Engine 3 ausgegebene Arithmetikergebnis wird synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der WB/DSP-Phase in einem Zielregister gespeichert. Im Fall dieses Beispiels ist das Zielregister ein Register mit der Kennzeichnung Dz. Ein Register, das zu Dz gekennzeichnet werden kann, ist ein beliebiges Register in der DSP-Engine 3 (in Fig. 4 ein beliebiges Register in Reg.).
  • Im Fall der obigen DSP-Anweisung sind Operationen in fünf Pipeline-Phasen von IF, ID, EX, MA und WB/DSP abgeschlossen.
  • Fig. 11 zeigt ein Impulsdiagramm einer Anweisung zum Auslesen von Daten aus den X- und Y-Speichern 4 bis 7 in die DSP-Engine 3. Operationen der Anweisung werden nachfolgend anhand von MOVX.W @Ax, Dx MOVY.W @Ay, Dy als Beispiel für die Anweisung beschrieben. Diese Anweisung übermittelt die in mit Ax und Ay gekennzeichneten Adressen gespeicherten Daten zu Registern mit der Kennzeichnung Dx und Dy. Da das Anweisungsabrufen und das Anweisungsdecodieren mit Fig. 10 übereinstimmen, wird eine ausführliche Beschreibung dieser weggelassen.
  • Bei der Ausführung einer Anweisung zum Auslesen von Daten aus den X- und Y-Speichern 4 bis 7 in die DSP- Engine 3 erzeugt der CPU-Kern 2 die Adresse eines Speichers, auf den zugegriffen werden soll. Deshalb wird synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 1 in der EX-Phase auf ein die Adresse, auf die zugegriffen werden soll, speicherndes Register zugriffen, und Werte in dem Register werden auf die internen Busse A1 und A2 des CPU-Kerns 2 ausgegeben.
  • Im Fall dieses Beispiels ist ein Register, das eine Adresse speichert, auf die zugegriffen werden soll, ein Register mit der Kennzeichnung Ax oder Ay. Ein Register, das zu Ax gekennzeichnet werden kann, ist ein Register A0x oder A1x, das in dem CPU-Kern 2 enthalten ist, und ein Register, das zu Ax gekennzeichnet werden kann, ist ein Register A0y und A1y, das in dem CPU-Kern 2 enthalten ist. Die auf die internen Busse A1 und A2 des CPU-Kerns 2 ausgegebenen Daten werden in den Speicheradresspuffern (MABX und MABY) gespeichert und synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der EX-Phase auf die Adressbusse XAB und YAB ausgegeben.
  • Die ALU 213 und PAU 212 wenden eine Adressberechnung auf die auf die internen Busse A1 und A2 des CPU-Kerns 2 ausgegebenen Daten an. In diesem Fall führen die ALU 213 und PAU 212 Nulladditionsarithmetik durch. Die Arithmetikergebnisse werden auf die internen Busse C1 und C2 des CPU-Kerns 2 ausgegeben. Die auf die internen Busse C1 und C2 des CPU-Kerns 2 ausgegebenen Arithmetikergebnisse werden synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der EX-Phase in Zeigerregistern gespeichert (in diesem Fall in Registern mit der Kennzeichnung Ax und Ay).
  • In den X- und Y-Speichern 4 bis 7 werden die auf die Adressbusse XAB und YAB ausgegebenen Adressen mit der Anstiegszeitsteuerung des EX-Phasen-Taktsignals Clock 2 in der Zeitspanne zwischen dem Anstieg des Taktsignals Clock 1 und dem Anstieg des Taktsignals Clock 2 in der MA-Phase decodiert und es wird in der Zeitspanne zwischen dem Anstieg des Taktsignals Clock 2 und dem Anstieg des nächsten Taktsignals Clock 1 in der MA- Phase auf die Daten zugegriffen. Deshalb werden Daten vom Zeitpunkt des Ansteigens des Taktsignals Clock 2 in der MA-Phase an auf die Datenbusse XDB und YDB ausgegeben,
  • Die auf die Datenbusse XDB und YDB ausgegebenen Daten werden synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 1 in der WB/DSP-Phase durch die DSP- Engine 3 erfasst und den internen Bussen D1 und D2 der DSP-Engine 3 zugeführt. Die Daten auf den internen Bussen D1 und D2 der DSP-Engine 3 werden synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der WB/DSP-Phase in Zielregistern gespeichert und die Operationen werden beendet.
  • Im Fall dieses Beispiels sind die Zielregister Register mit den Kennzeichnungen Dx und Dy. Ein Register, das zu Dx gekennzeichnet werden kann, ist ein Register X0 oder X1 in der DSP-Engine 3, und ein Register, das zu Dy gekennzeichnet werden kann, ist ein Register Y0 oder Y1 in der DSP-Engine 3.
  • Wie oben beschrieben werden im Fall der Anweisung zum Auslesen von Daten aus einem Speicher in die DSP-Engine 3 Operationen in fünf Pipeline-Phasen von IF, ID, EX, MA und WB/DSP abgeschlossen. Dieses parallele Datenlesen kann durchgeführt werden, da der CPU-Kern 2 durch die Busse XAB und XDB und die Busse YAB und YDB, die voneinander unabhängig sind, auf die X- und Y- Speicher 4 bis 7 zugreifen kann.
  • Fig. 12 zeigt ein Impulsdiagramm zum Schreiben von Daten in die X- und Y-Speicher 6 und 7 aus der DSP- Engine 3. Operationen einer Anweisung zum Schreiben von Daten in die X- und Y-Speicher 6 und 7 aus der DSP- Engine 3 werden nachfolgend anhand von MOVX.W Da, @Ax MOVY.W Da, @Ay als ein Beispiel für die Anweisung beschrieben. Diese Anweisung übermittelt in einem mit Da gekennzeichneten Register gespeicherte Daten zu Registern mit der Kennzeichnung Ax und Ay.
  • Da das Anweisungsabrufen und Anweisungsdecodieren dasselbe wie in Fig. 11 sind, wird eine ausführliche Beschreibung davon ausgelassen.
  • Beim Ausführen einer Anweisung zum Schreiben von Daten in die X- und Y-Speicher 6 und 7 aus der DSP-Engine 3 erzeugt der CPU-Kern 2 eine Speicheradresse, auf die zugegriffen werden soll. Deshalb erfolgt ein Zugriff auf Register, die Adressen, auf die zugegriffen werden soll, speichern, synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 1 in der EX-Phase, und Werte in den Registern werden auf die internen Busse A1 und A2 des CPU-Kerns 2 ausgegeben. Im Fall dieses Beispiels sind die Register, die Adressen speichern, auf die zugegriffen werden soll, Register mit der Kennzeichnung Ax und Ay. Ein Register, das zu Ax gekennzeichnet werden kann, ist ein Register A0x oder A1x in dem CPU- Kern 2, und ein Register, das zu Ay gekennzeichnet werden kann, ist ein Register A0y oder A1y in dem CPU- Kern 2.
  • Die auf die internen Busse A1 und A2 des CPU-Kerns 2 ausgegebenen Daten werden in den Speicheradresspuffern (MABX und MABY) gespeichert und synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der EX-Phase auf die Adressbusse XAB und YAB ausgegeben.
  • Der Zugriff auf ein internes Register der DSP-Engine 3, das zu übermittelnde Daten speichert, erfolgt synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 1 in der MA-Phase, und Werte in dem Register werden auf die internen Busse D1 und D2 der DSP-Engine 3 ausgegeben und in den Speicherdatenpuffern (MDBX und MDBY) gespeichert. Im Fall dieses Beispiels ist das interne Register der DSP-Engine 3, das zu übermittelnde Daten speichert, ein Register mit der Kennzeichnung Da. Register, die mit Da gekennzeichnet werden können, sind Register A0 und A1 in der DSP-Engine 3.
  • Die in den Speicherdatenpuffern (MDBX und MDBY) gespeicherten Daten werden synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der MA-Phase auf die Datenbusse XDB und YDB ausgegeben. In den X- und Y-Speichern 6 und 7 werden auf die Adressbusse XAB und YAB ausgegebene Adressen an der Anstiegszeitsteuerung des Taktsignals Clock 2 der EX- Phase in der Zeitspanne zwischen dem Anstieg des Taktsignals Clock 1 und dem Anstieg des Taktsignals Clock 2 in der MA-Phase decodiert, und der Zugriff auf die Daten erfolgt in der Zeitspanne zwischen dem Anstieg des Taktsignals Clock 2 und dem Anstieg des nächsten Taktsignals Clock 1 in der MA-Phase. Deshalb werden die auf die Datenbusse XDB und YDB ausgegebenen Daten von dem Zeitpunkt an geschrieben, wenn das Taktsignal Clock 2 in der MA-Phase ansteigt.
  • Wie oben beschrieben werden im Fall der Anweisung zum Schreiben von Daten in die X- und Y-Speicher 6 und 7 aus der DSP-Engine 3 die Operationen in vier Pipeline- Phasen von IF, ID, EX und MA abgeschlossen. Dieses parallele Schreiben von Daten kann durchgeführt werden, da der CPU-Kern 2 durch die Busse XAB und YDB und die Busse TAB und YDB, die unabhängig voneinander sind, auf die X- und Y-Speicher 4 und 6 zugreifen kann.
  • Fig. 13 zeigt ein Impulsdiagramm zum Auslesen von Daten aus einem Speicher in die DSP-Engine 3.
  • Operationen einer Anweisung zum Auslesen von Daten aus einem Speicher in die DSP-Engine 3 werden nachfolgend anhand von MOVS.L @As, Ds als ein Beispiel für die Anweisung beschrieben. Diese Anweisung übermittelt Daten, die in einer Adresse gespeichert sind, die mit As gekennzeichnet ist, zu einem Register mit der Kennzeichnung Ds.
  • Die grundlegende Funktionsweise ist dieselbe wie beim Datenauslesen aus den X- und Y-Speichern 4 bis 7 in die DSP-Engine 3 (siehe Fig. 11). Fig. 11 und 13 sind insofern voneinander verschieden, als die X- und Y- Busse in Fig. 11 verwendet werden, da die zweckdienlichen Speicher die X- und Y-Speicher 4 bis 7 sind, in Fig. 13 aber die Busse IAB und IDB verwendet werden, da der zweckdienliche Speicher ein Speicher ist, der mit einem Adressraum verbunden ist, der von dem Mikrocomputer 1 unterstützt wird.
  • Der Zugriff auf das Register, das eine Adresse hält, auf die zugegriffen werden soll, erfolgt synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 1 in der EX-Phase, und ein Wert in dem Register wird auf den internen Bus A1 des CPU-Kerns 2 ausgegeben. Im Fall dieses Beispiels ist das Register, das eine Adresse speichert, auf die zugegriffen werden soll, ein Register mit der Kennzeichnung As. Ein Register, das mit As gekennzeichnet werden kann, ist ein beliebiges Register in Reg. in dem CPU-Kern 2. Die auf den internen Bus A1 des CPU-Kerns 2 ausgegebenen Daten werden in dem Adresspuffer 205 gespeichert und synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der EX-Phase auf den Adressbus IAB ausgegeben.
  • Die Arithmetik-Logik-Einheit (ALU) 213 wendet Adressberechnung auf die auf den internen Bus A1 des CPU-Kerns 2 ausgegebenen Daten an. In diesem Fall führt die Arithmetik-Logik-Einheit (ALU) 213 Nulladditionsarithmetik durch. Das Arithmetikergebnis wird auf den internen Bus C1 des CPU-Kerns 2 ausgegeben.
  • Das auf den internen Bus C1 des CPU-Kerns 2 ausgegebene Arithmetikergebnis wird synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der EX-Phase in einem Zeigerregister gespeichert (in diesem Fall einem Register mit der Kennzeichnung As). In dem Speicher, auf den zugegriffen werden soll, wird die auf den Adressbus IAB ausgegebene Adresse an der Anstiegszeitsteuerung des Taktsignals Clock 2 der EX- Phase in der Zeitspanne zwischen dem Anstieg des Taktsignals Clock 1 und dem Anstieg des Taktsignals Clock 2 in der MA-Phase decodiert, der Zugriff auf die Daten erfolgt in der Zeitspanne zwischen dem Anstieg des Taktsignals Clock 2 und dem Anstieg des nächsten Taktsignals Clock 1 in der MA-Phase.
  • Deshalb werden Daten von dem Zeitpunkt an auf den Datenbus IDB ausgegeben, wenn das Taktsignal Clock 2 in der MA-Phase ansteigt. Die auf den Datenbus IDB ausgegebenen Daten werden synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 1 in der WB/DSP-Phase durch die DSP-Engine 3 erfasst und dem internen Bus D1 der DSP-Engine 3 zugeführt. Die Daten auf dem internen Bus D1 der DSP-Engine 3 werden synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der WB/DSP-Phase in einem Zielregister gespeichert und die Operationen werden beendet.
  • Im Fall dieses Beispiels ist das Kennzeichnungsregister ein Register mit der Kennzeichnung Ds. Ein Register, das zu Ds gekennzeichnet werden kann, ist ein beliebiges Register in der DSP-Engine 3. Wie oben beschrieben, werden im Fall der Anweisung zum Schreiben von Daten in die DSP-Engine 3 aus einem Speicher Operationen in fünf Pipeline-Phasen von IF, ID, EX, MA und WB/DSP abgeschlossen.
  • Fig. 14 zeigt ein Impulsdiagramm zum Schreiben von Daten in einen Speicher aus der DSP-Engine 3.
  • Operationen einer Anweisung zum Schreiben von Daten in einen Speicher aus der DSP-Engine 3 werden nachfolgend anhand von MOVS.L Ds, @As als ein Beispiel für die Anweisung beschrieben. Diese Anweisung übermittelt in einem Register mit der Kennzeichnung Ds gespeicherte Daten zu einer Adresse mit der Kennzeichnung As.
  • Die grundlegende Funktionsweise ist dieselbe wie bei dem Schreiben von Daten in die X- und Y-Speicher aus der DSP-Engine 3 (siehe Fig. 12). Fig. 12 und 14 sind insofern voneinander verschieden, als die Busse XAB und XDB und die Busse YAB und YDB in Fig. 12 verwendet werden, da die zweckdienlichen Speicher die X- und Y- Speicher sind, in Fig. 14 aber die Busse IAB und IDB verwendet werden, da der Zweckspeicher ein Speicher ist, der mit einem Adressraum verbunden ist, der von dem Mikrocomputer 1 unterstützt wird.
  • Der Zugriff auf das Register, das eine Übermittlungszieladresse hält, erfolgt synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 1 in der EX-Phase, und ein Wert in dem Register wird auf den internen Bus A1 des CPU-Kerns 2 ausgegeben. Im Fall dieses Beispiels ist das Register, das eine Adresse speichert, auf die zugegriffen werden soll, ein Register mit der Kennzeichnung As. Ein Register, das mit As gekennzeichnet werden kann, ist ein beliebiges Register in dem Register Reg. in dem CPU-Kern 2. Die auf den internen Bus A1 des CPU-Kerns 2 ausgegebenen Daten werden in dem Adresspuffer 205 gespeichert und synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der EX-Phase auf den Adressbus IAB ausgegeben.
  • Die Arithmetik-Logik-Einheit (ALU) 213 wendet Adressberechnung auf die auf den internen Bus A1 des CPU-Kerns 2 ausgegebenen Daten an. In diesem Fall führt die Arithmetik-Logik-Einheit (ALU) 213 Nulladditionsarithmetik durch. Das Arithmetikergebnis wird auf den internen Bus C1 des CPU-Kerns 2 ausgegeben. Das auf den Bus C1 des CPU-Kerns 2 ausgegebene Arithmetikergebnis wird synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der EX-Phase in einem Zeigerregister gespeichert (in diesem Fall einem Register mit der Kennzeichnung As).
  • Ein Wert in dem Register in der DSP-Engine 3, das die zu übermittelnden Daten speichert, wird synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 1 in der MA-Phase auf den internen Bus D1 der DSP-Engine 3 ausgegeben und in dem Speicherdatenpuffer (MDBI) gespeichert. Die in dem Speicherdatenpuffer (MDBI) gespeicherten Daten werden synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der MA-Phase auf den Datenbus IDB ausgegeben. Im Fall dieses Beispiels ist das Register in der DSP-Engine 3, das die zu übermittelnden Daten speichert, ein Register, das zu Ds gekennzeichnet ist. Ein Register, das zu Ds gekennzeichnet werden kann, ist ein beliebiges Register in der DSP-Engine 3.
  • In dem Speicher für den Zugriff wird die auf den Adressbus IAB ausgegebene Adresse an der Anstiegszeitsteuerung des Taktsignals Clock 2 der EX- Phase in der Zeitspanne zwischen dem Anstieg des Taktsignals Clock 1 und dem Anstieg des Taktsignals Clock 2 in der MA-Phase decodiert und der Zugriff auf die Daten erfolgt in der Zeitspanne zwischen dem Anstieg des Taktsignals Clock 2 und dem Anstieg des nächsten Taktsignals Clock 1 in der MA-Phase. Deshalb werden die aus der DSP-Engine 3 ausgegebenen Daten an der Anstiegszeitsteuerung des Taktsignals Clock 2 in der MA-Phase in den Speicher geschrieben.
  • Wie oben beschrieben, werden im Fall der Anweisung zum Schreiben von Daten in einen externen Speicher aus der DSP-Engine 3 Operationen in vier Pipeline-Phasen von IF, ID, EX und MA abgeschlossen.
  • Es werden nachfolgend Operationen einer DSP- Arithmetikanweisung anhand von PADD SK, Sy, Du PMUL Se, Sf, Dg MOVX. W @Ax, Dx MOVY.W @Ay, Dy als ein Beispiel für die Anweisung und unter Bezugnahme auf Fig. 15 beschrieben. Diese Anweisung addiert und multipliziert die in Registern in der DSP-Engine 3 gespeicherten Daten und übermittelt die Daten aus dem X-ROM 4 und dem X-RAM 6 oder dem Y-ROM 5 und dem Y-RAM 7 zu der DSP- Engine 3. Die Operationen der Anweisung werden durch Kombinieren der Operationen in Fig. 10 mit denen in Fig. 11 erhalten. Da das Anweisungsabrufen und das Anweisungsdecodieren genau wie in Fig. 10 sind, wird eine ausführliche Beschreibung davon ausgelassen.
  • Um eine Anweisung zum Auslesen von Daten aus den X- und Y-Speichern in die DSP-Engine 3 auszuführen, erzeugt der CPU-Kern 2 die Adresse eines Speichers, auf den zugegriffen werden soll. Der Zugriff auf Register, die Adressen halten, auf die zugegriffen werden soll, erfolgt deshalb synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 1 in der EX-Phase, und Werte in den Registern werden auf die internen Busse A1 und A2 des CPU-Kerns 2 ausgegeben.
  • Im Fall dieses Beispiels sind Register, die die Adressen speichern, auf die zugegriffen werden soll, Register mit der Kennzeichnung Ax und Ay. Ein Register, das mit Ax gekennzeichnet werden kann, ist ein Register A0x oder A1x in dem CPU-Kern 2, und ein Register, das mit Ay gekennzeichnet werden kann, ist ein Register A0y oder A1y in dem CPU-Kern 2. Die auf die internen Busse A1 und A2 des CPU-Kerns 2 ausgegebenen Daten werden in den Speicheradresspuffern (MABX und MABY) gespeichert und synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der EX-Phase auf die Adressbusse XAB und YAB ausgegeben.
  • Die ALU 213 und die PAU 212 wenden Adressberechnung auf die auf die internen Busse A1 und A2 der CPU ausgegebenen Daten an (in diesem Fall führt die ALU 213 und PAU 212 Nulladditionsarithmetik durch), und die Ergebnisse werden auf die internen Busse C1 und C2 des CPU-Kerns 2 ausgegeben. Die auf die internen Busse C1 und C2 des CPU-Kerns 2 ausgegebenen Arithmetikergebnisse werden synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der EX-Phase in Zeigerregistern gespeichert (in diesem Fall in Registern mit der Kennzeichnung Ax und Ay).
  • In den X- und Y-Speichern werden die auf die Adressbusse XAB und YAB ausgegebenen Adressen an der Anstiegszeitsteuerung des Taktsignals Clock 2 in der EX-Phase in der Zeitspanne zwischen dem Anstieg des Taktsignals Clock 1 und dem Anstieg des Taktsignals Clock 2 in der MA-Phase decodiert, und der Zugriff auf die Daten erfolgt in der Zeitspanne zwischen dem Anstieg des Taktsignals Clock 2 und dem Anstieg des nächsten Taktsignals Clock 1 in der MA-Phase. Deshalb werden Daten von dem Zeitpunkt an auf die Datenbusse XDB und YDB ausgegeben, wenn das Taktsignal Clock 2 in der MA-Phase ansteigt.
  • Die auf die Datenbusse XDB und YDB ausgegebenen Daten werden an der Anstiegszeitsteuerung des Taktsignals Clock 1 in der WB/DSP-Phase durch die DSP-Engine 3 erfasst und auf die internen Busse D1 und D2 der DSP- Engine 3 ausgegeben. Die Daten auf den internen Bussen D1 und D2 der DSP-Engine 3 werden synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der WB/DSP-Phase in Zielregistern (Ziel-Reg.) gespeichert und die Operationen werden beendet.
  • Im Fall dieses Beispiels sind die Zielregister Register, die zu Dx und Dy gekennzeichnet sind. Ein Register, das zu Dx gekennzeichnet werden kann, ist X0 oder X1 in der DSP-Engine 3, und ein Register, das zu Dy gekennzeichnet werden kann, ist Y0 oder Y1 in der DSP-Engine 3.
  • Die DSP-Arithmetikoperation wird gleichzeitig mit der obigen Datenübermittlung durchgeführt. Der Zugriff auf die Register, die Quellendaten speichern, erfolgt synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 1 in der WB/DSF-Phase, und Werte in den Registern werden auf die internen Busse A1, A2, B1 und B2 der DSP-Engine 3 ausgegeben. Im Fall dieses Beispiels sind die Register, die Quellendaten speichern, Register mit der Kennzeichnung Sx und Sy für ADD (Addition), aber Register mit der Kennzeichnung Se und Sf für MUL (Multiplikation). Register mit der Kennzeichnung Sx, Sy, Se und Sf sind beliebige Register in der DSP-Engine 3.
  • Auf die internen Busse A1 und B1 der DSP-Engine 3 ausgegebene Daten werden durch MAC 304 multipliziert und das Ergebnis wird auf den internen Bus C1 der DSP- Engine 3 ausgegeben. Die auf die internen Busse A2 und B2 der DSP-Engine 3 ausgegebenen Daten werden durch die ALU 302 addiert und das Ergebnis wird auf den internen Bus C2 der DSP-Engine 3 ausgegeben.
  • Die auf die internen Busse C1 und C2 der DSP-Engine 3 ausgegebenen Arithmetikergebnisse werden synchron mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der WB/DSP-Phase in einem Zielregister gespeichert. Das Zielregister ist in diesem Beispiel ein Register mit der Kennzeichnung Du für eine ADD-Operation und ein Register mit der Kennzeichnung Dg für eine MUL- Operation. Register, die zu Du und Dg gekennzeichnet werden können, sind beliebige Register in der DSP- Engine 3.
  • Wie oben beschrieben werden im Fall der Anweisung zum Addieren und Multiplizieren von in Registern in der DSP-Engine 3 gespeicherten Daten und zum Übermitteln der Daten zu der DSP-Engine 3 aus dem X-ROM 4 und X-RAM 6 oder dem Y-ROM 5 und Y-RAM 7 die Operationen in fünf Pipeline-Phasen von IF, ID, EX, MA und WB/DSP abgeschlossen.
  • Operationen einer DSP-Arithmetikanweisung werden nachfolgend anhand von vier aufeinanderfolgenden Anweisungen als das zweite Beispiel für die DSP- Anweisung und unter Bezugnahme auf Fig. 16 beschrieben.
  • Inst 1: PADD A0, M0, A0 PMUL A1, X0, A1 MOVX.W
  • @R4, X1 MOVY.W @R6, Y0
  • Inst 2: ADD R8, R9
  • Inst 3: ADD R10, R11
  • Inst 4: ADD R12, R13
  • Diese vier Anweisungen realisieren verschiedene Operationen in demselben Taktzyklus durch gleichzeitige Verwendung der Adressbusse IAB, XAB und YAB. Da Anweisungsoperationen von Inst 1 bis Inst 4 mit denen in Fig. 7 und 15 übereinstimmen, wird eine ausführliche Beschreibung dieser ausgelassen.
  • Als Erstes wird ein Anweisungsabrufen von Inst 1 in der IF-Phase von Inst 1 durchgeführt. Zum Zeitpunkt der ID- Phase von Inst 1 ist ein Anweisungsabrufen durchgeführt, da die IF-Phase auf Inst 2 eingestellt ist.
  • Obwohl die Adressberechnung zum Zugreifen auf die X- und Y-Speicher in der EX-Phase von Inst 1 durchgeführt wird, führt Inst 2 eine Anweisungsdecodierung für die ID-Phase und Inst 3 ein Anweisungsabrufen für die IF- Phase durch.
  • In der MA-Phase von Inst 1 werden in der EX-Phase berechnete Adressen auf die Adressbusse XAB und YAB ausgegeben (die Zeitsteuerung zum tatsächlichen Ausgeben von Adressen beginnt mit der Anstiegszeitsteuerung des Taktsignals Clock 2 in der EX-Phase), und Daten werden durch die Datenbusse XDB und YDB erfasst. In diesem Fall führt Inst 2 wegen der EX-Phase ADD-Arithmetik zwischen R8 und R9 durch, um die Operationen abzuschließen, und Inst 3 wegen der ID- Phase ein Anweisungsdecodieren. Außerdem gibt Inst 4 wegen der IF-Phase die Inst 4 speichernde Adresse auf den Adressbus IAB aus. Die Zeitsteuerung zum tatsächlichen Ausgeben der Adresse auf den Adressbus IAB beginnt mit der Anstiegszeitsteuerung des Taktsignals Clock 2 einen halben Zyklus vor der IF- Phase von Inst 4. Diese Zeitsteuerung ist dieselbe wie die Zeitsteuerung (zweite Hälfte der EX-Phase und erste Hälfte der MA-Phase) für Inst 1 für die Ausgabe von Adressen auf die Adressbusse XAB und YAB.
  • Das heißt, die Adressbusse XAB und YAB werden zur Datenübermittlung und der Adressbus IAB wird für das Anweisungsabrufen verwendet. Da der Mikrocomputer 1 die internen Adressbusse IAB, XAB und YAB und die internen Datenbusse IDB, XDB und YDB, die jeweils mit dem CPU- Kern 2 verbunden sind, enthält, kann er in demselben Zyklus verschiedene Speicherzugriffoperationen ausführen, indem er die obigen drei Arten von internen Adressbussen und drei Arten von internen Datenbussen verwendet.
  • Danach führt Inst 1 in der WB/DSP-Phase DSP-Arithmetik aus und schließt die Operationen ab, Inst 2 schließt bereits Operationen ab, Inst 3 führt wegen der EX-Phase ADD-Arithmetik zwischen R10 und R11 durch und schließt die Operationen ab, und Inst 4 führt wegen der ID-Phase ein Anweisungsdecodieren durch.
  • Im nächsten Zyklus wird nur die EX-Phase von Inst 4 durchgeführt, und es wird ADD-Arithmetik zwischen R12 und R23 durchgeführt, um die Operationen abzuschließen.
  • Diese Ausführungsform hat die folgenden Funktionen und Vorteile.
  • Ein eingebauter Speicher wird in Y-Speicher 5 und 7 und X-Speicher 4 und 6 aufgeteilt, indem die Multiplikations- und Akkumulationsoperation durch die DSP-Engine 3 betrachtet wird, und dem CPU-Kern 2 wird ermöglicht, parallel durch die internen Busse XAB und XDB bzw. die internen Busse YAB und YDB auf die Y- Speicher 5 und 7 und die X-Speicher 4 und 6 zuzugreifen.
  • Dadurch ist es möglich, gleichzeitig zwei Datenwerte aus den eingebauten Speichern 4 bis 7 zu der DSP-Engine 3 zu übermitteln. Da die internen Busse XAB und XDB und die internen Busse YAB und YDB außerdem von den internen Bussen IAB und IDB, die eine Schnittstelle mit der Außenwelt aufweisen, getrennt sind, wird dem CPU- Kern 2 ermöglicht, parallel mit dem Zugriff auf die X- Speicher 4 und 6 und die Y-Speicher 5 und 7 auf einen externen Speicher zuzugreifen. Da es drei Arten von Adressbussen IAB, XAB und YAB und drei Arten von Datenbussen IDB, XDB und YDB gibt, die jeweils mit dem CPU-Kern 2 verbunden sind, ist es möglich, im selben Taktzyklus auf verschiedene Speicher zuzugreifen, indem die drei Arten von internen Adressbussen und die drei Arten von internen Datenbussen verwendet werden. Auch wenn ein Programm oder Daten in einem externen Speicher vorliegen, ist es deshalb möglich, leicht damit zu korrespondieren und die Arithmetikverarbeitung zu beschleunigen.
  • Die Betriebsleichtigkeit des Mikrocomputers kann weiter verbessert werden, indem jeder der X-Speicher 4 und 6 und der Y-Speicher 5 und 7 mit einem RAM und einem ROM konstituiert werden.
  • Wie oben beschrieben, wird der eingebaute Speicher in die beiden folgenden Typen aufgeteilt: die X-Speicher 4 und 6 und die Y-Speicher 5 und 7. Jeder der beiden Arten der aufgeteilten Speicher wird mit einem ROM und mit einem RAM ausgestattet, und durch Verwenden des RAM als Datenspeicher und des ROM als Programmspeicher kann ein Datenspeicher von einem Programmspeicher getrennt sein. Außerdem ist es möglich, parallel zwei Datenwerte zu der DSP-Engine 3 zu übermitteln und das Anweisungsabrufen, die Datenübermittlung und die Arithmetik durch die parallele Pipeline-Verarbeitung effizient durchzuführen.
  • Durch Bereitstellung des Modulo-Adressausgabeteils 200 für den CPU-Kern 2 ist es möglich, die Adresserzeugung für sich wiederholende Operationen, wie zum Beispiel Multiplikations- und Akkumulationsoperationen in dem CPU-Kern 2 zu beschleunigen.
  • Eine CPU-Anweisung wird einem Adressraum zugewiesen, in dem 4 Bit höherer Ordnung eines Anweisungscodes auf "0000" bis zu "1110" gesetzt werden. Im Fall einer DSP- Anweisung werden 4 Bit höherer Ordnung eines Anweisungscodes alle "1111" zugewiesen. Außerdem hat eine Anweisung, bei der 6 Bit höherer Ordnung eines Anweisungscodes Adressräumen von "111100" und "111101" zugewiesen werden, auch im Fall einer DSP-Anweisung einen 16-Bit-Anweisungscode. Eine Anweisung, bei der 6 Bit höherer Ordnung eines Anweisungscodes auf "111110" gesetzt sind, hat einen 32-Bit-Anweisungscode. Einem Adressraum, in dem 6 Bit höherer Ordnung eines Anweisungscodes auf "111111" gesetzt sind, wird keine Anweisung zugewiesen und der Adressraum ist ein leerer Bereich. Durch Anwenden der obigen Regel auf die Zuweisung von Codes bis herauf zu 32-Bit-Anweisungen und das Decodieren von 6 Bit höherer Ordnung eines Anweisungscodes wird es möglich, durch einen Decodierer mit kleinem logischen Umfang zu entscheiden, ob die betreffende Anweisung eine CPU-Anweisung, eine 16-Bit- DSP-Anweisung oder eine 32-Bit-DSP-Anweisung ist, und deswegen ist es nicht nötig, immer gleichzeitig 32 Bit zu decodieren.
  • Wie oben mit Bezug auf Fig. 17 beschrieben wurde, werden unverarbeitete Anweisungscodedaten nach der Anweisungsabrufzeitsteuerung auf das Anweisungsregister 25 gesetzt. Auch wenn eine auszuführende Anweisung ein beliebiges Element der Gruppe 16-Bit-CPU-Anweisung, 16- Bit-DSP-Anweisung und 32-Bit-DSP-Anweisung ist, ist es in diesem Fall möglich, auf jeden Fall dem ersten Decodierungsschaltkreis 240 16 Bit höherer Ordnung der Anweisung zuzuführen.
  • Ein Code in dem Feld A einer 32-Bit-DSP-Anweisung wird auf den Bereich höherer Ordnung UIR des Anweisungsregisters 25 gesetzt, und eine 16-Bit-DSP- Anweisung mit demselben Format wie Feld A wird ebenfalls auf den Bereich höherer Ordnung UIR gesetzt. In jedem Fall kann deshalb der CPU-Kern 2 notwendige Adressarithmetik und Auswahl eines für das Datenabrufen notwendigen Datenweges ähnlich durchführen. Das heißt, es ist möglich, die Decodierungsschaltkreise 240 und 241 gemeinsam für das Datenabrufen zur Ausführung einer 32-Bit-DSP-Anweisung und das Datenabrufen zur Ausführung einer 16-Bit-DSP-Anweisung zu verwenden und dadurch den logischen Umfang des Mikrocomputers 1 zu verringern.
  • Die Erfindung des vorliegenden Erfinders wird oben gemäß Ausführungsformen konkret beschrieben. Die vorliegende Erfindung ist jedoch nicht auf die Ausführungsformen beschränkt. Natürlich sind verschiedene Modifikationen der vorliegenden Erfindung zugelassen, solange sie dem Grundgedanken der vorliegenden Erfindung folgen.
  • Zum Beispiel ist die Unterscheidung einer CPU- Anweisung, einer 16-Bit-DSP-Anweisung und einer 32-Bit- DSP-Anweisung nicht auf die Verwendung von 6 Bit höherer Ordnung einer Anweisung beschränkt, sondern es ist auch möglich, die Anzahl der Bit höherer Ordnung entsprechend der Anzahl von Anweisungscodes zu verändern. Außerdem ist es möglich, die Funktion zum Schieben von 16 Bit niederer Ordnung zu höherer Ordnung für ein Anweisungsregister durch eine andere Funktion zu ersetzen. Außerdem ist die Anzahl von Registern und die Art einer in dem CPU-Kern oder in der DSP-Engine enthaltenen Datenverarbeitungseinheit nicht auf die obigen Ausführungsformen beschränkt, sondern es ist möglich, diese ordnungsgemäß zu verändern. Außerdem ist es möglich, mehr als zwei Speicher zu verwenden. Darüber hinaus ist es möglich, die Anzahl von Adressbussen und die Anzahl von Datenbussen, die mit Speichern verbunden werden sollen, gemäß der Anzahl von Speichern zu vergrößern. Zum Beispiel wird ein Z- Speicher zusätzlich zu X- und Y-Speichern neu verwendet. Dann wird ein Adressbus ZAB zwischen eine CPU und den Z-Speicher geschaltet und ein Datenbus ZDB wird zwischen eine DSP-Engine und den Z-Speicher geschaltet. Durch Verwendung der obigen Struktur kann man nicht nur Daten zum Zeitpunkt von Multiplikations- und Akkumulationsoperationen aus den X- und Y-Speichern in die DSP-Engine erfassen, sondern auch die Daten, deren Arithmetik abgeschlossen ist, vor einer gerade ausgeführten Anweisung gleichzeitig durch einen Z-Bus in einen Z-Speicherschaltkreis schreiben. Somit wird der gesamte Durchsatz eines Mikrocomputers weiter verbessert, da Arithmetikdaten durch eine Anweisung erfasst und in einen Speicher geschrieben werden können. Die vorliegende Erfindung eignet sich am besten zur Verwendung als ein Einbau- Einheitssteuermikrocomputer zur Anwendung auf das Komprimieren/Expandieren und Filtern von Informationen in einer Mobilkommunikationseinheit, einer Servosteuerung und bei der Bildverarbeitung in einem Drucker.
  • Es folgt ein kurze Beschreibung von Vorteilen, die unter den in der vorliegenden Anmeldung offengelegten aus einer typischen Erfindung erhalten werden.
  • Das heißt, ein eingebauter Speicher wird in einen ersten Speicher und einen zweiten Speicher aufgeteilt, indem die Multiplikations- und Akkumulationsoperation durch einen digitalen Signalprozessor betrachtet wird, und diese werden durch einen dritten Bus bzw. einen zweiten Bus parallel zugänglich gemacht. Deshalb kann eine zentrale Verarbeitungseinheit gleichzeitig zwei Datenwerte aus dem eingebauten Speicher in eine digitale Signalverarbeitungseinheit übermitteln.
  • Da der dritte und der zweite Bus von dem an eine externe Einheit anzuschaltenden ersten Bus getrennt sind, kann außerdem die zentrale Verarbeitungseinheit parallel mit dem Zugriff auf den zweiten und den ersten Speicher auf einen externen Speicher zugreifen.
  • Da erste bis dritte Adressbusse bzw. erste bis dritte Datenbusse jeweils mit der zentralen Verarbeitungseinheit verbunden sind, ist es also möglich, verschiedene Speicherzugriffsoperationen in demselben Zyklus auszuführen, indem diese drei Arten von internen Bussen verwendet werden. Deshalb ist es möglich, die Arithmetikverarbeitung leicht entsprechend dem Fall, dass ein Programm oder Daten in einem externen Speicher vorliegen, zu beschleunigen.
  • Darüber hinaus wird der eingebaute Speicher in die ersten und zweiten Speicher aufgeteilt, und jeder aufgeteilte Speicher wird mit einem ROM und einem RAM ausgestattet. Durch Verwendung des RAM als Datenspeicher und des ROM als Programmspeicher können deshalb der Datenspeicher und der Programmspeicher voneinander getrennt werden. Es ist also möglich, parallel zwei Datenwerte zu der digitalen Signalverarbeitungseinheit zu übermitteln und darüber hinaus das Abrufen von Anweisungen, die Datenübermittlung und die Arithmetik durch parallele Pipeline-Verarbeitung effizient durchzuführen.
  • Deshalb kann die digitale Signalverarbeitung beschleunigt werden, indem die zentrale Verarbeitungseinheit und die digitale Signalverarbeitungseinheit auf einer LSI angebracht werden.
  • Indem ein Anweisungscode einer Anweisung zugewiesen wird, bei der eine CPU-Anweisung und eine DSP-Anweisung so gemischt werden, dass unterschieden werden kann, dass die betreffende Anweisung eine CPU-Anweisung, eine 16-Bit-DSP-Anweisung oder eine 32-Bit-DSP-Anweisung ist, indem ein Teil des Anweisungscodes decodiert wird, ist es möglich, die Art der Anweisung durch einen Decodierer mit einem kleinen logischen Umfang zu entscheiden. Deshalb ist es unnötig, immer zur selben Zeit 32 Bit zu decodieren. Somit kann verhindert werden, dass der physische Umfang einer LSI äußerst zunimmt, wenn die zentrale Verarbeitungseinheit und die digitale Signalverarbeitungseinheit auf der LSI angebracht werden.
  • Durch Verwendung einer Anweisung eines ersten Formats mit einem ersten Codebereich (Bit 9 bis Bit 0 der in Fig. 18 dargestellten 16-Bit-DSP-Anweisung) und einer Anweisung eines zweiten Formats mit nicht nur einem zweiten Codebereich (Feld A der in Fig. 20 und 21 dargestellten 32-Bit-DSP-Anweisung), sondern auch einem dritten Codebereich (Feld B der in Fig. 20 und 21 dargestellten 32-Bit-DSP-Anweisung) zur Angabe der Arithmetikverarbeitung unter Verwendung der durch den zweiten Codebereich spezifizierten übermittelten Daten für die digitale Signalverarbeitungseinheit können Vorrichtungen zur Ausführung der Anweisungen des ersten bzw. zweiten Formats Decodierungsvorrichtungen verwenden, die eine dem ersten und zweiten Codebereich gemeinsame Decodierungslogik aufweisen. Deshalb wird es dadurch außerdem möglich, den logischen Umfang eines Mikrocomputers zu verkleinern.

Claims (6)

1. Ein Einchip-Mikroprozessor mit:
einer zentralen Verarbeitungseinheit (2);
einer digitalen Signalverarbeitungseinheit (3) zum synchronen Betrieb durch die zentrale Verarbeitungseinheit (2); und
einem internen Bus (IAB, XAB, YAB, IDB, XDB, YDB), der gemeinsam mit der zentralen Verarbeitungseinheit (2) und der digitalen Signalverarbeitungseinheit (3) verbunden ist;
wobei die zentrale Verarbeitungseinheit (2) eine Ausführungssteuereinheit (IR, 24, 201) umfasst, die eine vorgegebene Verarbeitung für eine Anweisung eines ersten und eines zweiten Formats durchführen kann;
dadurch gekennzeichnet, dass
die Anweisung des ersten Formalts einen ersten Codebereich umfasst, der einen von der zentralen Verarbeitungseinheit (2) gesteuerten Datenübermittlung zu und von der digitalen Signalverarbeitungseinheit (3) spezifiziert;
die Anweisung des zweiten Formats einen zweiten Codebereich mit dem gleichen Format wie der erste Codebereich und einen dritten Codebereich zur Spezifizierung einer arithmetischen Verarbeitung umfasst, wobei die für die digitale Signalverarbeitungseinheit (3) in dem zweiten Codebereich spezifizierten übermittelten Daten benutzt werden;
die Anweisung des ersten und die des zweiten Formats einen vierten Codebereich umfassen, der anzeigt, ob die betreffende Anweisung das erste oder das zweite Format aufweist; und
die Anweisung des ersten und die des zweiten Formats von der digitalen Signalverarbeitungseinheit (3) nach einer vorgegebenen Verarbeitung der zentralen Verarbeitungseinheit (2) ausgeführt werden.
2. Einchip-Mikroprozessor nach Anspruch 1, wobei der vierte Codebereich in einem Bereich höherer Ordnung der Anweisung des ersten und des zweiten Formats angeordnet ist.
3. Einchip-Mikroprozessor nach Anspruch 2, wobei die Ausführsteuereinheit umfasst:
ein Anwendungsregister, das gemeinsam für die Anweisung des ersten und die des zweiten Formats benutzt wird;
eine Decodiereinheit (24) zum Decodieren des ersten und vierten oder des zweiten und vierten Codebereichs, die in der von dem Anweisungsregister empfangenen Anweisung beinhaltet sind; und
eine Ausführungseinheit (201) zum Durchführen einer Adressarithmetik gemäß einem Decodierresultat und der Datenübermittlungsteuerung.
4. Einchip-Mikroprozessor nach Anspruch 3, wobei das Anweisungsregister (IR) einen Bereich höherer Ordnung (UIR), der geteilt wird, um den ersten und vierten oder zweiten und vierten Codebereich aufzunehmen, und einen Bereich niederer Ordnung (LIR), der dazu verwendet wird, den dritten Codebereich aufzunehmen, umfasst, und wobei die Decodiereinheit (24) einen Schaltkreis zum Ausgeben eines Steuersignals (245, 246, 248) umfasst, das anzeigt, dass das Anweisungsregister (IR) eine Anweisung des zweiten Formats gemäß einem decodierten Ergebnis des vierten Codebereichs aufweist, und zum Bereitstellen von Codedaten gemäß dem Steuersignal (245, 246 und 248) in dem dritten Codebereich aus dem Bereich niederer Ordnung der digitalen Signalverarbeitungseinheit (3).
5. Einchip-Mikroprozessor nach Anspruch 1, wobei die Anweisung des ersten Formats eine Länge von 16 Bit und die des zweiten Formats eine Länge von 32 Bit aufweist.
6. Einchip-Mikroprozessor nach Anspruch 1, weiter umfassend eine Anweisung eines dritten Formats, die von der zentralen Verarbeitungseinheit decodiert und ausgeführt wird, wobei
der vierte Codebereich einen fünften Codebereich umfasst;
die Anweisung des dritten Formats einen sechsten Codebereich aufweist, dessen Bitlänge der Länge des fünften Codebereichs entspricht;
der fünfte Codebereich als ein erstes Bitmuster angeordnet ist, das eine Ausführung der Anweisung des Formats durch die digitale Signalverarbeitungseinheit (3) anzeigt; und
der sechste Codebereich als ein zweites Bitmuster angeordnet ist, das eine Ausführung der Anweisung des Formats durch die zentrale Verarbeitungseinheit (2) anzeigt.
DE69625256T 1995-05-02 1996-04-22 Mikrorechner Expired - Lifetime DE69625256T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP13290695 1995-05-02
JP34744195A JP3727395B2 (ja) 1995-05-02 1995-12-14 マイクロコンピュータ

Publications (2)

Publication Number Publication Date
DE69625256D1 DE69625256D1 (de) 2003-01-16
DE69625256T2 true DE69625256T2 (de) 2003-08-28

Family

ID=26467369

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69625256T Expired - Lifetime DE69625256T2 (de) 1995-05-02 1996-04-22 Mikrorechner

Country Status (4)

Country Link
US (6) US5867726A (de)
EP (2) EP0741358B1 (de)
KR (2) KR100439367B1 (de)
DE (1) DE69625256T2 (de)

Families Citing this family (119)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5867726A (en) * 1995-05-02 1999-02-02 Hitachi, Ltd. Microcomputer
TW439380B (en) * 1995-10-09 2001-06-07 Hitachi Ltd Terminal apparatus
US6453409B1 (en) * 1996-11-07 2002-09-17 Yamaha Corporation Digital signal processing system
US6202143B1 (en) * 1997-08-21 2001-03-13 Samsung Electronics Co., Ltd. System for fetching unit instructions and multi instructions from memories of different bit widths and converting unit instructions to multi instructions by adding NOP instructions
JP3650519B2 (ja) * 1997-12-17 2005-05-18 株式会社ルネサステクノロジ マイクロコンピュータ
JPH11338716A (ja) * 1998-05-29 1999-12-10 Nec Corp 無線端末、及び無線端末における受信方法
US6237078B1 (en) * 1998-08-21 2001-05-22 Advanced Micro Devices, Inc. Code segment default operation determination
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
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
EP1188112A2 (de) * 1999-05-12 2002-03-20 Analog Devices, Inc. Berechnungskern eines digitalen signalprozessors
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
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
JP3616556B2 (ja) * 1999-06-29 2005-02-02 株式会社東芝 拡張命令を処理する並列プロセッサ
DE19939763A1 (de) * 1999-08-21 2001-02-22 Philips Corp Intellectual Pty Multiprozessorsystem
US6836818B1 (en) * 1999-09-29 2004-12-28 Emc Corporation Central processing unit
US6701405B1 (en) 1999-10-01 2004-03-02 Hitachi, Ltd. DMA handshake protocol
US6629115B1 (en) 1999-10-01 2003-09-30 Hitachi, Ltd. Method and apparatus for manipulating vectored data
US6615370B1 (en) 1999-10-01 2003-09-02 Hitachi, Ltd. Circuit for storing trace information
US6591369B1 (en) 1999-10-01 2003-07-08 Stmicroelectronics, Ltd. System and method for communicating with an integrated circuit
US6633971B2 (en) 1999-10-01 2003-10-14 Hitachi, Ltd. Mechanism for forward data in a processor pipeline using a single pipefile connected to the pipeline
US6598128B1 (en) 1999-10-01 2003-07-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6412047B2 (en) 1999-10-01 2002-06-25 Stmicroelectronics, Inc. Coherency protocol
US6820195B1 (en) 1999-10-01 2004-11-16 Hitachi, Ltd. Aligning load/store data with big/little endian determined rotation distance control
US6665816B1 (en) 1999-10-01 2003-12-16 Stmicroelectronics Limited Data shift register
JP2001142692A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
US6732307B1 (en) 1999-10-01 2004-05-04 Hitachi, Ltd. Apparatus and method for storing trace information
US6772325B1 (en) * 1999-10-01 2004-08-03 Hitachi, Ltd. Processor architecture and operation for exploiting improved branch control instruction
US6463553B1 (en) 1999-10-01 2002-10-08 Stmicroelectronics, Ltd. Microcomputer debug architecture and method
US6412043B1 (en) 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6496905B1 (en) 1999-10-01 2002-12-17 Hitachi, Ltd. Write buffer with burst capability
US6298394B1 (en) 1999-10-01 2001-10-02 Stmicroelectronics, Ltd. System and method for capturing information on an interconnect in an integrated circuit
US6449712B1 (en) 1999-10-01 2002-09-10 Hitachi, Ltd. Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions
US6918065B1 (en) 1999-10-01 2005-07-12 Hitachi, Ltd. Method for compressing and decompressing trace information
US6684348B1 (en) 1999-10-01 2004-01-27 Hitachi, Ltd. Circuit for processing trace information
US6928073B2 (en) * 1999-10-01 2005-08-09 Stmicroelectronics Ltd. Integrated circuit implementing packet transmission
US6487683B1 (en) 1999-10-01 2002-11-26 Stmicroelectronics Limited Microcomputer debug architecture and method
US6779145B1 (en) 1999-10-01 2004-08-17 Stmicroelectronics Limited System and method for communicating with an integrated circuit
US6574651B1 (en) 1999-10-01 2003-06-03 Hitachi, Ltd. Method and apparatus for arithmetic operation on vectored data
US6557119B1 (en) 1999-10-01 2003-04-29 Stmicroelectronics Limited Microcomputer debug architecture and method
US6693914B1 (en) 1999-10-01 2004-02-17 Stmicroelectronics, Inc. Arbitration mechanism for packet transmission
US6351803B2 (en) 1999-10-01 2002-02-26 Hitachi Ltd. Mechanism for power efficient processing in a pipeline processor
US6598177B1 (en) 1999-10-01 2003-07-22 Stmicroelectronics Ltd. Monitoring error conditions in an integrated circuit
US6590907B1 (en) 1999-10-01 2003-07-08 Stmicroelectronics Ltd. Integrated circuit with additional ports
US6434665B1 (en) 1999-10-01 2002-08-13 Stmicroelectronics, Inc. Cache memory store buffer
US6553460B1 (en) 1999-10-01 2003-04-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6542983B1 (en) 1999-10-01 2003-04-01 Hitachi, Ltd. Microcomputer/floating point processor interface and method
US6502210B1 (en) 1999-10-01 2002-12-31 Stmicroelectronics, Ltd. Microcomputer debug architecture and method
US7072817B1 (en) * 1999-10-01 2006-07-04 Stmicroelectronics Ltd. Method of designing an initiator in an integrated circuit
US6859891B2 (en) 1999-10-01 2005-02-22 Stmicroelectronics Limited Apparatus and method for shadowing processor information
US6629207B1 (en) 1999-10-01 2003-09-30 Hitachi, Ltd. Method for loading instructions or data into a locked way of a cache memory
US7793261B1 (en) 1999-10-01 2010-09-07 Stmicroelectronics Limited Interface for transferring debug information
US6546480B1 (en) 1999-10-01 2003-04-08 Hitachi, Ltd. Instructions for arithmetic operations on vectored data
US7260745B1 (en) 1999-10-01 2007-08-21 Stmicroelectronics Ltd. Detection of information on an interconnect
US6826191B1 (en) 1999-10-01 2004-11-30 Stmicroelectronics Ltd. Packets containing transaction attributes
US6530047B1 (en) 1999-10-01 2003-03-04 Stmicroelectronics Limited System and method for communicating with an integrated circuit
US6460174B1 (en) 1999-10-01 2002-10-01 Stmicroelectronics, Ltd. Methods and models for use in designing an integrated circuit
US7266728B1 (en) 1999-10-01 2007-09-04 Stmicroelectronics Ltd. Circuit for monitoring information on an interconnect
US6601189B1 (en) 1999-10-01 2003-07-29 Stmicroelectronics Limited System and method for communicating with an integrated circuit
US6457118B1 (en) 1999-10-01 2002-09-24 Hitachi Ltd Method and system for selecting and using source operands in computer system instructions
US7000078B1 (en) 1999-10-01 2006-02-14 Stmicroelectronics Ltd. System and method for maintaining cache coherency in a shared memory system
US6408381B1 (en) 1999-10-01 2002-06-18 Hitachi, Ltd. Mechanism for fast access to control space in a pipeline processor
US6349371B1 (en) 1999-10-01 2002-02-19 Stmicroelectronics Ltd. Circuit for storing information
US6567932B2 (en) 1999-10-01 2003-05-20 Stmicroelectronics Limited System and method for communicating with an integrated circuit
US6330660B1 (en) * 1999-10-25 2001-12-11 Vxtel, Inc. Method and apparatus for saturated multiplication and accumulation in an application specific signal processor
US6732203B2 (en) * 2000-01-31 2004-05-04 Intel Corporation Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus
US6832309B2 (en) 2000-02-14 2004-12-14 Oki Electric Industry Co., Ltd. Generation of modified commands repeatedly from feedback or base command
KR100469237B1 (ko) * 2000-03-09 2005-01-31 엘지전자 주식회사 상호 프로세서 통신 장치
US6735687B1 (en) * 2000-06-15 2004-05-11 Hewlett-Packard Development Company, L.P. Multithreaded microprocessor with asymmetrical central processing units
JP2002215606A (ja) * 2001-01-24 2002-08-02 Mitsubishi Electric Corp データ処理装置
US6963829B1 (en) * 2001-02-08 2005-11-08 3Com Corporation Method and apparatus for interfacing a spectrum digital incorporated TMS470 evaluation board with a spectrum digital incorporated TMS320LC54X evaluation board
US20040078608A1 (en) * 2001-04-02 2004-04-22 Ruban Kanapathippillai Method and apparatus for power reduction in a digital signal processor integrated circuit
US6937084B2 (en) * 2001-06-01 2005-08-30 Microchip Technology Incorporated Processor with dual-deadtime pulse width modulation generator
US7020788B2 (en) * 2001-06-01 2006-03-28 Microchip Technology Incorporated Reduced power option
US6934728B2 (en) * 2001-06-01 2005-08-23 Microchip Technology Incorporated Euclidean distance instructions
US7003543B2 (en) 2001-06-01 2006-02-21 Microchip Technology Incorporated Sticky z bit
US20030028696A1 (en) * 2001-06-01 2003-02-06 Michael Catherwood Low overhead interrupt
US6976158B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US6975679B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Configuration fuses for setting PWM options
US7007172B2 (en) * 2001-06-01 2006-02-28 Microchip Technology Incorporated Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection
US6985986B2 (en) * 2001-06-01 2006-01-10 Microchip Technology Incorporated Variable cycle interrupt disabling
US20030023836A1 (en) * 2001-06-01 2003-01-30 Michael Catherwood Shadow register array control instructions
US6728856B2 (en) * 2001-06-01 2004-04-27 Microchip Technology Incorporated Modified Harvard architecture processor having program memory space mapped to data memory space
US20020184566A1 (en) * 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US20030005268A1 (en) * 2001-06-01 2003-01-02 Catherwood Michael I. Find first bit value instruction
US7467178B2 (en) * 2001-06-01 2008-12-16 Microchip Technology Incorporated Dual mode arithmetic saturation processing
US20030005269A1 (en) * 2001-06-01 2003-01-02 Conner Joshua M. Multi-precision barrel shifting
US6952711B2 (en) * 2001-06-01 2005-10-04 Microchip Technology Incorporated Maximally negative signed fractional number multiplication
US6601160B2 (en) * 2001-06-01 2003-07-29 Microchip Technology Incorporated Dynamically reconfigurable data space
US7383421B2 (en) * 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
US7107478B2 (en) * 2002-12-05 2006-09-12 Connex Technology, Inc. Data processing system having a Cartesian Controller
EP1286268A1 (de) * 2001-08-21 2003-02-26 Alcatel Integrierte Schaltung mit Zuordnung von Adressbereichen
US20060095723A1 (en) * 2001-11-05 2006-05-04 Moyer William C Method and apparatus for interfacing a processor to a coprocessor
EP1387250B8 (de) * 2002-07-31 2012-02-29 Texas Instruments Inc. Prozessor mit Mehrfachbefehlssätzen und Mehrfachdecodierungsmodi
CN100409221C (zh) * 2002-12-05 2008-08-06 亮标公司 具有笛卡尔控制器的数据处理系统以及处理数据的方法
KR20040081030A (ko) * 2003-03-07 2004-09-20 마츠시타 덴끼 산교 가부시키가이샤 마이크로컴퓨터 응용시스템, 마이크로컴퓨터,신호처리시스템 및 신호처리lsi
JP4549652B2 (ja) 2003-10-27 2010-09-22 パナソニック株式会社 プロセッサシステム
US7721069B2 (en) * 2004-07-13 2010-05-18 3Plus1 Technology, Inc Low power, high performance, heterogeneous, scalable processor architecture
US7774748B1 (en) * 2004-08-03 2010-08-10 Tensilica, Inc. System and method for automatic conversion of a partially-explicit instruction set to an explicit instruction set
JP2006101462A (ja) * 2004-09-30 2006-04-13 Sanyo Electric Co Ltd 画像信号処理装置
US7451293B2 (en) * 2005-10-21 2008-11-11 Brightscale Inc. Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing
US20070143579A1 (en) * 2005-12-19 2007-06-21 King Billion Electronics Co. Ltd. Integrated data processor
US20070162722A1 (en) * 2006-01-10 2007-07-12 Lazar Bivolarski Method and apparatus for processing algorithm steps of multimedia data in parallel processing systems
JP4662474B2 (ja) 2006-02-10 2011-03-30 ルネサスエレクトロニクス株式会社 データ処理デバイス
EP2045722A4 (de) * 2006-07-20 2010-07-21 Nec Corp Steuervorrichtung für speicherzugang, steuerverfahren für speicherzugang, datenspeicherverfahren und steuerprogramm für speicherzugang
WO2008027567A2 (en) * 2006-09-01 2008-03-06 Brightscale, Inc. Integral parallel machine
US20080059763A1 (en) * 2006-09-01 2008-03-06 Lazar Bivolarski System and method for fine-grain instruction parallelism for increased efficiency of processing compressed multimedia data
US20080059762A1 (en) * 2006-09-01 2008-03-06 Bogdan Mitu Multi-sequence control for a data parallel system
US9563433B1 (en) 2006-09-01 2017-02-07 Allsearch Semi Llc System and method for class-based execution of an instruction broadcasted to an array of processing elements
US20080244238A1 (en) * 2006-09-01 2008-10-02 Bogdan Mitu Stream processing accelerator
US20080055307A1 (en) * 2006-09-01 2008-03-06 Lazar Bivolarski Graphics rendering pipeline
US20080059467A1 (en) * 2006-09-05 2008-03-06 Lazar Bivolarski Near full motion search algorithm
US8370606B2 (en) * 2007-03-16 2013-02-05 Atmel Corporation Switching data pointers based on context
US7797516B2 (en) * 2007-03-16 2010-09-14 Atmel Corporation Microcontroller with low-cost digital signal processing extensions
DE102008009652A1 (de) * 2008-02-18 2009-08-27 Robert Bosch Gmbh Überwachungseinrichtung und Überwachungsverfahren für einen Sensor, sowie Sensor
US20120137108A1 (en) * 2008-02-19 2012-05-31 Koch Iii Kenneth Elmon Systems and methods integrating boolean processing and memory
JP2010003151A (ja) 2008-06-20 2010-01-07 Renesas Technology Corp データ処理装置
WO2010074974A1 (en) * 2008-12-15 2010-07-01 Boolean Core Devices Llc Systems and methods integrating boolean processing and memory
KR102224510B1 (ko) * 2016-12-09 2021-03-05 베이징 호라이즌 인포메이션 테크놀로지 컴퍼니 리미티드 데이터 관리를 위한 시스템들 및 방법들
CN111971663A (zh) 2018-04-16 2020-11-20 埃米尔·巴登霍斯特 处理器和操作处理器的方法

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4450519A (en) * 1980-11-24 1984-05-22 Texas Instruments Incorporated Psuedo-microprogramming in microprocessor in single-chip microprocessor with alternate IR loading from internal or external program memories
US4626985A (en) * 1982-12-30 1986-12-02 Thomson Components - Mostek Corporation Single-chip microcomputer with internal time-multiplexed address/data/interrupt bus
JPS6297062A (ja) * 1985-10-23 1987-05-06 Mitsubishi Electric Corp デイジタルシグナルプロセツサ
US5193159A (en) 1986-09-24 1993-03-09 Hitachi, Ltd. Microprocessor system
JP2844591B2 (ja) * 1987-01-16 1999-01-06 株式会社日立製作所 ディジタル信号処理装置
JPS63216170A (ja) * 1987-03-05 1988-09-08 Mitsubishi Electric Corp デイジタル信号処理プロセツサ
US4862407A (en) * 1987-10-05 1989-08-29 Motorola, Inc. Digital signal processing apparatus
JPH01119861A (ja) * 1987-11-02 1989-05-11 Sharp Corp ディジタル信号処理用lsi
US5155819A (en) * 1987-11-03 1992-10-13 Lsi Logic Corporation Flexible ASIC microcomputer permitting the modular modification of dedicated functions and macroinstructions
JPH01226066A (ja) * 1988-03-04 1989-09-08 Hitachi Ltd ディジタル信号処理プロセッサ
US5293611A (en) * 1988-09-20 1994-03-08 Hitachi, Ltd. Digital signal processor utilizing a multiply-and-add function for digital filter realization
US5051885A (en) * 1988-10-07 1991-09-24 Hewlett-Packard Company Data processing system for concurrent dispatch of instructions to multiple functional units
JPH0711793B2 (ja) * 1989-07-13 1995-02-08 株式会社東芝 マイクロプロセッサ
JPH0398145A (ja) * 1989-09-11 1991-04-23 Hitachi Ltd マイクロプロセッサ
JP2835103B2 (ja) * 1989-11-01 1998-12-14 富士通株式会社 命令指定方法及び命令実行方式
EP0442041A3 (en) * 1990-01-18 1991-09-04 National Semiconductor Corporation Integrated digital signal processor/general purpose cpu with shared internal memory
JPH0423063A (ja) 1990-05-17 1992-01-27 Ricoh Co Ltd 信号処理装置
US6230255B1 (en) * 1990-07-06 2001-05-08 Advanced Micro Devices, Inc. Communications processor for voice band telecommunications
KR920008280A (ko) * 1990-10-18 1992-05-27 박노철 폐타이어를 이용한 법면 블록 및 그 시공방법
JPH0594546A (ja) * 1991-02-05 1993-04-16 American Teleph & Telegr Co <Att> デジタルプロセツサ
JP2882495B2 (ja) * 1991-02-08 1999-04-12 三菱電機株式会社 通信機
US5475556A (en) * 1991-04-18 1995-12-12 Korea Electric Power Corporation Apparatus for detecting high impedance fault
JP2680483B2 (ja) * 1991-05-02 1997-11-19 株式会社東芝 デジタル信号処理装置
US5218564A (en) * 1991-06-07 1993-06-08 National Semiconductor Corporation Layout efficient 32-bit shifter/register with 16-bit interface
US5659797A (en) * 1991-06-24 1997-08-19 U.S. Philips Corporation Sparc RISC based computer system including a single chip processor with memory management and DMA units coupled to a DRAM interface
FR2678400B1 (fr) * 1991-06-27 1995-08-04 Texas Instruments France Processeur de protocole destine a l'execution d'un ensemble d'instructions en un nombre reduit d'operation.
US5588118A (en) * 1991-08-21 1996-12-24 Zilog, Inc. Single chip dual processor
EP0545581B1 (de) * 1991-12-06 1999-04-21 National Semiconductor Corporation Integriertes Datenverarbeitungssystem mit CPU-Kern und unabhängigem parallelen, digitalen Signalprozessormodul
JPH05210640A (ja) * 1992-01-31 1993-08-20 Hitachi Ltd マルチプロセッサシステム
US5524259A (en) 1992-04-28 1996-06-04 Kabushiki Kaisha Toshiba Processor system having an external arithmetic device for high speed execution of computation of data
JP2822782B2 (ja) * 1992-05-20 1998-11-11 日本電気株式会社 シングルチップマイクロコンピュータ
ES2143490T3 (es) * 1992-08-12 2000-05-16 Advanced Micro Devices Inc Decodificador de instrucciones.
JP3231429B2 (ja) * 1992-11-06 2001-11-19 株式会社日立製作所 中央処理装置と乗算器とを有する半導体集積回路装置
US5361373A (en) * 1992-12-11 1994-11-01 Gilson Kent L Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
JPH06324994A (ja) * 1993-05-14 1994-11-25 Kiyoshi Kase 並列型ディジタル信号処理装置
US5426769A (en) * 1993-08-26 1995-06-20 Metalink Corp. System and method for producing input/output expansion for single chip microcomputers
JP3904244B2 (ja) * 1993-09-17 2007-04-11 株式会社ルネサステクノロジ シングル・チップ・データ処理装置
JP3452655B2 (ja) * 1993-09-27 2003-09-29 株式会社日立製作所 ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法
JPH07110803A (ja) * 1993-10-13 1995-04-25 Nec Corp シングルチップマイクロコンピュータ
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices, Inc. Superskalarmikroprozessoren
GB2289353B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Data processing with multiple instruction sets
US5931941A (en) * 1995-04-28 1999-08-03 Lsi Logic Corporation Interface for a modularized computational unit to a CPU
US5867726A (en) * 1995-05-02 1999-02-02 Hitachi, Ltd. Microcomputer

Also Published As

Publication number Publication date
EP0741358A2 (de) 1996-11-06
EP0741358A3 (de) 1997-04-16
DE69625256D1 (de) 2003-01-16
US7363466B2 (en) 2008-04-22
US7069423B2 (en) 2006-06-27
US6405302B1 (en) 2002-06-11
KR100440841B1 (ko) 2004-07-19
US20080294873A1 (en) 2008-11-27
KR960042365A (ko) 1996-12-21
EP0741358B1 (de) 2001-08-16
US20020184472A1 (en) 2002-12-05
US7558944B2 (en) 2009-07-07
EP1028382B1 (de) 2002-12-04
EP1028382A1 (de) 2000-08-16
US5867726A (en) 1999-02-02
US20060224859A1 (en) 2006-10-05
KR100439367B1 (ko) 2004-08-16
US6434690B1 (en) 2002-08-13

Similar Documents

Publication Publication Date Title
DE69625256T2 (de) Mikrorechner
DE69233412T2 (de) Vorrichtung und Rechnerprogrammprodukt zur Ausführung von Verzweigungsbefehlen
DE19735348B4 (de) Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben
DE19735350B4 (de) Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür
DE69709078T2 (de) Verwaltungssystem zur datenverarbeitung
DE69032635T2 (de) Verfahren und Vorrichtung zur Erkennung von Betriebsmittelkonflikten in einer Pipeline-Verarbeitungseinheit
DE3248215C2 (de)
DE68929215T2 (de) Datenprozessor
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE69900980T2 (de) Verfahren und vorrichtung zur ausführung von verschiebungsoperationen mit gepackten daten
DE69419697T2 (de) Arithmetisch-logische Einheit mit mehreren unabhängigen Abschnitten und ein Register zur Speicherung der Statusbits
DE69625790T2 (de) Verfahren und vorrichtung für anpassbare operationen durch einen prozessor
DE3851858T2 (de) Digitaler Signalprozessor.
DE69933088T2 (de) Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten
DE3650602T2 (de) Datenverarbeitungssystem
DE3752017T2 (de) Mikrorechner mit Zugriffsfähigkeit auf einen internen Speicher mit gewünschter variabler Zugriffszeit
DE3851746T2 (de) Sprungvorhersage.
DE102018005181A1 (de) Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Leistungs-, Richtigkeits- und Energiereduktionsmerkmalen
DE3854701T2 (de) Methode und Vorrichtung zum Verändern von Mikrobefehlen mit einer Makrobefehlspipeline.
DE69033131T2 (de) Logikvorrichtung und Verfahren zur Verwaltung einer Befehlseinheit in einer Pipeline-Verarbeitungseinheit
DE69507975T2 (de) Verarbeitungssystem und -verfahren
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
DE69718485T2 (de) Registeraddressierung in einer datenverarbeitungsvorrichtung
DE3855524T2 (de) Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator
DE3856139T2 (de) Mikroprozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition