[go: up one dir, main page]

JP2005322274A - Microcomputer - Google Patents

Microcomputer Download PDF

Info

Publication number
JP2005322274A
JP2005322274A JP2005222618A JP2005222618A JP2005322274A JP 2005322274 A JP2005322274 A JP 2005322274A JP 2005222618 A JP2005222618 A JP 2005222618A JP 2005222618 A JP2005222618 A JP 2005222618A JP 2005322274 A JP2005322274 A JP 2005322274A
Authority
JP
Japan
Prior art keywords
address
data
instruction
buses
dsp
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.)
Granted
Application number
JP2005222618A
Other languages
Japanese (ja)
Other versions
JP3733137B2 (en
Inventor
Hiroshi Osuga
宏 大須賀
Atsushi Kiuchi
淳 木内
Hironori Hasegawa
博宣 長谷川
Toru Umaji
徹 馬路
Yoshiki Noguchi
孝樹 野口
Yasushi Akao
泰 赤尾
Shiro Baba
志朗 馬場
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.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP2005222618A priority Critical patent/JP3733137B2/en
Publication of JP2005322274A publication Critical patent/JP2005322274A/en
Application granted granted Critical
Publication of JP3733137B2 publication Critical patent/JP3733137B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Microcomputers (AREA)
  • Memory System (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To speed up digital signal processing in a microcomputer in which a DSP engine is mounted on a single LSI chip together with a CPU core. <P>SOLUTION: A built-in memory is divided into two types, that is, first memories 5 and 7, and second memories 4 and 6, and is made accessible in parallel by third buses XAB and XDB, and second buses YAB and YDB respectively. Operand access and address calculation processing necessary for data processing by the DSP engine is carried out by a CPU. The CPU core 2 can simultaneously transfer two data values from the built-in memory to the DSP engine 3. The third buses XAB and XDB, and the second buses YAB and YDB are separate from first buses IAB and IDB, and the CPU core 2 can execute instruction fetching, etc. through the first buses IAB and IDB in parallel with the access of the second memories 4 and 6, and the first memories 5 and 7. <P>COPYRIGHT: (C)2006,JPO&NCIPI

Description

本発明はセントラルプロセッシングユニットとディジタル信号処理ユニットとを有する半導体集積回路化された論理LSIに係り、高速演算処理を要するマイクロコンピュータに適用して有効な技術に関する。   The present invention relates to a logic LSI formed as a semiconductor integrated circuit having a central processing unit and a digital signal processing unit, and relates to a technique effective when applied to a microcomputer requiring high-speed arithmetic processing.

算術論理演算器と共に乗算器を同一チップに搭載したマイクロコンピュータについて記載されたものの例としては特願平4−296778号又は米国特許出願第145157号がある。これによればマイクロコンピュータのようなロジックLSIチップは、セントラルプロセッシングユニット、バス、メモリ、乗算器を供え、特にメモリからデータを読み出す間に、該読出しデータに関する乗算命令のコマンドをセントラルプロセッシングユニットから乗算器へ転送するコマンド信号線を有する。その結果、セントラルプロセッシングユニットがメモリからデータを読み出す間に、読み出しデータに関する乗算命令のコマンドをセントラルプロセッシングユニットから乗算器へ転送するので、メモリと乗算器との間で直接データを転送することが可能になる。   Japanese Patent Application No. 4-296778 or US Patent Application No. 145157 is an example of a microcomputer in which a multiplier and an arithmetic logic unit are mounted on the same chip. According to this, a logic LSI chip such as a microcomputer is provided with a central processing unit, a bus, a memory, and a multiplier. In particular, while reading data from the memory, a command of a multiplication instruction relating to the read data is multiplied from the central processing unit. A command signal line to be transferred to the device. As a result, while the central processing unit reads data from the memory, the command of the multiplication instruction relating to the read data is transferred from the central processing unit to the multiplier, so that the data can be directly transferred between the memory and the multiplier. become.

特願平4−296778号公報Japanese Patent Application No. 4-296778 米国特許出願第145157号明細書US Patent Application No. 145157

本発明者らはセントラルプロセッシングユニットと共にディジタル信号処理ユニットを一つのLSIに搭載してディジタル信号処理を高速化することについて検討した。このとき、前記従来技術はメモリから乗算器へ直接データを転送可能にしている点において乗算処理の高速化を実現しているが、セントラルプロセッシングユニットによる命令実行のパイプライン処理を想定したとき、セントラルプロセッシングユニットが実行すべき命令のフェッチサイクルと乗算処理のためのメモリアクセスサイクルとが競合するような事態に対しては考慮されていなかった。また、加算や乗算のための複数のオペランドを並列的にメモリから読み出して演算処理の高速化を図る点についても考慮されていない。更にその場合には、セントラルプロセッシングユニットによる外部アクセスとの関係も考慮しなければ、マイクロコンピュータの使い勝手が悪くなることが見出された。また、セントラルプロセッシングユニットと共にディジタル信号処理ユニットを一つのLSIに搭載する場合、CPU命令とDSP命令とのコード割り当てやDSP命令のフォーマットを工夫することも、命令デコード回路などの論理規模の増大を極力抑える上においては必要であることが見出された。   The inventors of the present invention studied to increase the speed of digital signal processing by mounting a digital signal processing unit together with a central processing unit on one LSI. At this time, the prior art realizes speeding up of multiplication processing in that data can be directly transferred from the memory to the multiplier. However, when pipeline processing of instruction execution by the central processing unit is assumed, The situation where the fetch cycle of the instruction to be executed by the processing unit and the memory access cycle for the multiplication process conflict is not considered. In addition, it is not considered that a plurality of operands for addition and multiplication are read from the memory in parallel to speed up the arithmetic processing. Furthermore, in that case, it was found that the usability of the microcomputer deteriorates if the relationship with the external access by the central processing unit is not taken into consideration. In addition, when a digital signal processing unit is mounted on a single LSI together with a central processing unit, devising the code assignment of CPU instructions and DSP instructions and the format of DSP instructions can increase the logic scale of instruction decode circuits as much as possible. It has been found necessary to suppress.

本発明の目的は、セントラルプロセッシングユニットと共にディジタル信号処理ユニットを一つのLSIに搭載してディジタル信号処理を高速化することにある。本発明の別の目的は、セントラルプロセッシングユニットと共にディジタル信号処理ユニットを一つのLSIに搭載したとき、その物理的な規模の増大を極力抑えることである。   An object of the present invention is to mount a digital signal processing unit together with a central processing unit in one LSI to speed up digital signal processing. Another object of the present invention is to suppress an increase in the physical scale as much as possible when a digital signal processing unit is mounted on a single LSI together with a central processing unit.

本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。   The above and other objects and novel features of the present invention will be apparent from the description of this specification and the accompanying drawings.

本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。   The following is a brief description of an outline of typical inventions disclosed in the present application.

すなわち、マイクロコンピュータは、セントラルプロセッシングユニット(2)と、該セントラルプロセッシングユニットから選択的にアドレスが伝達される第1乃至第3のアドレスバス(IAB,YAB,XAB)と、前記第1のアドレスバス(IAB)及び第2のアドレスバス(YAB)に接続され、セントラルプロセッシングユニットからのアドレスによってアクセスされる第1のメモリ(5,7)と、前記第1のアドレスバス(IAB)及び第3のアドレスバス(XAB)に接続され、セントラルプロセッシングユニットからのアドレスによってアクセスされる第2のメモリ(4,6)と、前記第1及び第2のメモリと前記セントラルプロセッシングユニットとに接続されてデータが伝達される第1のデータバス(IDB)と、前記第1のメモリに接続されてデータが伝達される第2のデータバス(YDB)と、前記第2のメモリに接続されてデータが伝達される第3のデータバス(XDB)と、前記第1のアドレスバスと第1のデータバスに接続された外部インタフェース回路(12)と、第1乃至第3のデータバスに接続されセントラルプロセッシングユニットに同期動作されるディジタル信号処理ユニット(3)と、前記ディジタル信号処理ユニットの動作を制御するDSP制御信号(20)をセントラルプロセッシングユニットからディジタル信号処理ユニットに伝達する制御信号線とを1チップに含んで半導体集積回路化されて成る。   That is, the microcomputer includes a central processing unit (2), first to third address buses (IAB, YAB, XAB) to which addresses are selectively transmitted from the central processing unit, and the first address bus. (IAB) and a second address bus (YAB) connected to the first memory (5, 7) by an address from the central processing unit, and the first address bus (IAB) and the third address bus Data is connected to the second memory (4, 6) connected to the address bus (XAB) and accessed by the address from the central processing unit, and to the first and second memories and the central processing unit. A first data bus (IDB) to be transmitted; A second data bus (YDB) connected to the first memory and transmitting data; a third data bus (XDB) connected to the second memory and transmitting data; and the first data bus An external interface circuit (12) connected to the address bus and the first data bus; a digital signal processing unit (3) connected to the first to third data buses and operated in synchronization with the central processing unit; A single chip includes a control signal line for transmitting a DSP control signal (20) for controlling the operation of the signal processing unit from the central processing unit to the digital signal processing unit.

上記した手段によれば、内蔵メモリは、ディジタル信号処理プロセッサ(3)による積和演算を考慮して第1のメモリ(5,7)と第2のメモリ(4,6)に2面化され、セントラルプロセッシングユニット(2)が第1のメモリと第2のメモリを第3のバス(XAB,XDB)と第2のバス(YAB,YDB)によってそれぞれ並列的にアクセス可能にされている。これにより、内蔵メモリから2個のデータを同時にディジタル信号処理ユニットに転送可能にされる。さらに、第3のバス(XAB,XDB)と第2のバス(YAB,YDB)は、外部にインタフェースされる第1のバス(IAB,IDB)とも個別化されているので、セントラルプロセッシングユニットは第2のメモリ(4,6)と第1のメモリ(5,7)のアクセスに並行して外部メモリアクセスも可能にされる。このように、それぞれセントラルプロセッシングユニット(2)に接続された第1乃至第3の3種類のアドレスバス(IAB,XAB,YAB)及びデータバス(IDB,XDB,YDB)があるために、当該3種類の内部バスを使用して同一クロックサイクルで異なるメモリアクセス動作を実行することが可能である。したがって、プログラムやデータが外部メモリに存在する場合にも容易に対応して演算処理の高速化を実現できる。   According to the above-described means, the built-in memory is divided into two planes, the first memory (5, 7) and the second memory (4, 6) in consideration of the product-sum operation by the digital signal processor (3). The central processing unit (2) allows the first memory and the second memory to be accessed in parallel by the third bus (XAB, XDB) and the second bus (YAB, YDB), respectively. As a result, two pieces of data from the built-in memory can be simultaneously transferred to the digital signal processing unit. Furthermore, since the third bus (XAB, XDB) and the second bus (YAB, YDB) are also individualized with the first bus (IAB, IDB) interfaced to the outside, the central processing unit is the first bus. External memory access is also enabled in parallel with the access to the second memory (4, 6) and the first memory (5, 7). In this way, since there are first to third three types of address buses (IAB, XAB, YAB) and data buses (IDB, XDB, YDB) respectively connected to the central processing unit (2), the 3 Different types of internal buses can be used to perform different memory access operations in the same clock cycle. Therefore, it is possible to easily cope with the case where the program and data exist in the external memory and to speed up the arithmetic processing.

マイクロコンピュータの使い勝手を向上させるには、前記第1のメモリと第2のメモリの夫々をRAMとROMから構成するとよい。   In order to improve the usability of the microcomputer, each of the first memory and the second memory may be composed of a RAM and a ROM.

前記セントラルプロセッシングユニットにおける積和演算などの繰返し演算のためのアドレス生成の高速化のためには、セントラルプロセッシングユニットはモジュロアドレス出力部(200)を備えるとよい。このとき、モジュロアドレス出力部で生成されたアドレスは前記第2又は第3のアドレスバスに選択的に出力可能にすることが望ましい。   In order to increase the speed of address generation for repetitive operations such as product-sum operations in the central processing unit, the central processing unit may include a modulo address output unit (200). At this time, it is preferable that the address generated by the modulo address output unit can be selectively output to the second or third address bus.

前記ディジタル信号処理プロセッサは、第1乃至第3のデータバス(IDB,YDB,XDB)と個別的にインタフェースされる第1乃至第3のデータバッファ手段(MDBI,MDBY,MDBX)と、夫々のデータバッファ手段に内部バスを介して接続可能にされた複数のレジスタ手段(305〜308)と、前記内部バスに接続された乗算器(304)及び算術論理演算器(302)と、前記DSP制御信号をデコードして前記データバッファ手段、乗算器、算術論理演算器、及びレジスタ手段の動作を制御するデコーダ(34)とを含んで構成することができる。   The digital signal processor includes first to third data buffer means (MDBI, MDBY, MDBX) individually interfaced with first to third data buses (IDB, YDB, XDB) and respective data. A plurality of register means (305 to 308) connectable to the buffer means via an internal bus, a multiplier (304) and an arithmetic logic unit (302) connected to the internal bus, and the DSP control signal And a decoder (34) for controlling the operation of the data buffer means, multiplier, arithmetic logic unit, and register means.

命令デコードという点に着目したとき、マイクロコンピュータは、セントラルプロセッシングユニット(2)と、前記セントラルプロセッシングユニットによってアクセス制御されるメモリ(4〜7)と、前記メモリ及び前記セントラルプロセッシングユニットとの間でデータが伝達されセントラルプロセッシングユニットに同期動作されるディジタル信号処理ユニット(3)とを1チップに含んで半導体集積回路化される。このマイクロコンピュータによって実行可能な命令セットは、セントラルプロセッシングユニット(2)が実行すべきCPU命令と、データフェッチのためのアドレス演算等の一部の処理をセントラルプロセッシングユニットに負担させてディジタル信号処理ユニット(3)が実行すべきDSP命令とを含む。前記セントラルプロセッシングユニットは、前記データバスを介して16ビット固定長のCPU命令と、16ビット又は32ビット長のDSP命令とをフェッチする命令レジスタ(25)と、前記命令レジスタにフェッチされた命令の一部の複数ビットに基づいて、CPU命令とDSP命令とを識別し、識別結果に応じて、前記ディジタル信号処理ユニットの動作制御のためのDSP制御信号(20)とセントラルプロセッシングユニットの動作制御のためのCPU制御信号とを生成するデコーダ(24)とを含んで構成することができる。   When attention is focused on instruction decoding, the microcomputer transmits data between the central processing unit (2), the memory (4-7) controlled to be accessed by the central processing unit, and the memory and the central processing unit. And a digital signal processing unit (3) operated in synchronization with the central processing unit on a single chip to be a semiconductor integrated circuit. The instruction set that can be executed by the microcomputer is a digital signal processing unit that causes the central processing unit to bear a part of processing such as CPU instruction to be executed by the central processing unit (2) and address calculation for data fetching. (3) includes a DSP instruction to be executed. The central processing unit includes an instruction register (25) for fetching a 16-bit fixed length CPU instruction and a 16-bit or 32-bit length DSP instruction via the data bus, and an instruction fetched to the instruction register. The CPU instruction and the DSP instruction are identified based on some of the plurality of bits, and the DSP control signal (20) for controlling the operation of the digital signal processing unit and the operation control of the central processing unit are determined according to the identification result. And a decoder (24) for generating a CPU control signal.

例えば、CPU命令は命令コードの最上位4ビットが”0000”〜”1110”とされる範囲に割り当てられている。DSP命令は、命令コードの最上位4ビットが”1111”とされる範囲に割り当てられている。さらに命令コードの最上位6ビットが”111100”及び”111101”の範囲に割り当てられた命令は、DSP命令でも16ビット長の命令コードとされる。命令コードの最上位6ビットが”111110”の命令は、32ビット長の命令コードとされる。命令コードの最上位6ビットが”111111”の範囲には命令を割り当てておらず、その範囲を未使用領域とする。このように、最大32ビットの命令に対するコード割り当てに上記のような規則を設けることにより、各命令コードの一部例えば最上位側6ビットをデコードすれば、当該命令がCPU命令であるか、16ビット長のDSP命令であるか、32ビット長のDSP命令であるかを、小さな論理規模のデコーダで判定することができ、常に32ビット全部を一度にデコードすることを要しない。   For example, the CPU instruction is assigned to a range in which the most significant 4 bits of the instruction code are “0000” to “1110”. The DSP instruction is assigned to a range in which the most significant 4 bits of the instruction code are “1111”. Further, an instruction in which the most significant 6 bits of the instruction code are assigned to a range of “111100” and “111101” is a 16-bit instruction code even in a DSP instruction. An instruction in which the most significant 6 bits of the instruction code are “111110” is a 32-bit instruction code. No instruction is assigned to the range in which the most significant 6 bits of the instruction code are “111111”, and the range is set as an unused area. In this way, by providing the above-described rules for code allocation for instructions of a maximum of 32 bits, if a part of each instruction code, for example, the most significant 6 bits is decoded, whether the instruction is a CPU instruction or 16 Whether the DSP instruction is a bit length DSP instruction or a 32-bit length DSP instruction can be determined by a small logic scale decoder, and it is not always necessary to decode all 32 bits at once.

前記デコーダは、命令レジスタの上位16ビットをデコードして前記CPUデコード信号(243)及びDSPデコード信号(244)を生成する第1のデコード回路(240)と、第1のデコード回路にて32ビット長のDSP命令を識別したときには命令レジスタの下位16ビットをコード化した信号を、それ以外の命令を識別したときには出力が無効であることを意味するコードを出力するコード変換回路(242)とを含み、前記DSPデコード信号及びコード変換回路の出力をDSP制御信号(20)とする。   The decoder decodes the upper 16 bits of the instruction register to generate the CPU decode signal (243) and the DSP decode signal (244), and the first decode circuit has 32 bits. A code conversion circuit (242) for outputting a signal in which the lower 16 bits of the instruction register are encoded when a long DSP instruction is identified, and a code indicating that the output is invalid when identifying other instructions; In addition, the DSP decode signal and the output of the code conversion circuit are set as a DSP control signal (20).

DSP命令の命令フォーマットの点に着目したとき、マイクロコンピュータは、セントラルプロセッシングユニット(2)と、前記セントラルプロセッシングユニットに同期動作されるディジタル信号処理ユニット(3)と、前記セントラルプロセッシングユニット及び前記ディジタル信号処理ユニットが共通接続された内部バス(IDB)とを含んで半導体集積回路化され、前記セントラルプロセッシングユニットは、ディジタル信号処理ユニットとの間でのデータ転送を当該セントラルプロセッシングユニットに対して規定する第1のコード領域(図18に例示される16ビットDSP命令のビット9〜ビット0)を有する第1フォーマットの命令と、前記第1のコード領域と同一フォーマットの第2のコード領域(図20、図21に例示される32ビットのDSP命令のAフィールド)を有すると共に、当該第2のコード領域で規定された転送データを用いた演算処理をディジタル信号処理ユニットに対して規定する第3のコード領域(図20、図21に例示される32ビットのDSP命令のBフィールド)を有する第2フォーマットの命令とを実行するための実行制御手段を備えて成る。   When focusing on the instruction format of the DSP instruction, the microcomputer includes a central processing unit (2), a digital signal processing unit (3) operated in synchronization with the central processing unit, the central processing unit and the digital signal. A processing unit is integrated into a semiconductor integrated circuit including an internally connected internal bus (IDB), and the central processing unit defines data transfer with the digital processing unit with respect to the central processing unit. An instruction of the first format having one code area (bit 9 to bit 0 of the 16-bit DSP instruction illustrated in FIG. 18), and a second code area having the same format as the first code area (FIG. 20, Example in Figure 21 And a third code area (FIG. 20) that defines arithmetic processing using the transfer data defined in the second code area for the digital signal processing unit. , And a second format instruction having a B field of the 32-bit DSP instruction illustrated in FIG. 21.

これにより、実行制御手段は、第1及び第2フォーマットの夫々の命令を実行するとき、第1のコード領域と第2のコード領域に対して共通のデコード論理を持つデコード手段を採用でき、マイクロコンピュータの論理規模の縮小に寄与する。   Thereby, the execution control means can employ a decoding means having a common decoding logic for the first code area and the second code area when executing the instructions in the first and second formats. Contributes to reducing the logical scale of computers.

前記第1フォーマットの命令及び第2フォーマットの命令は、それが第1フォーマットか第2フォーマットかを示すための第4コード領域(例えば16ビットDSP命令におけるビット15〜ビット10、32ビットDSP命令におけるビット32〜ビット26)を有する。   The first format instruction and the second format instruction include a fourth code area (for example, bit 15 to bit 10 in a 16-bit DSP instruction, or a 32-bit DSP instruction to indicate whether the instruction is in the first format or the second format. Bits 32 to 26).

前記実行制御手段は、前記第1フォーマットの命令と第2フォーマットの命令に共通に用いられる命令レジスタ(25)と、前記命令レジスタにフェッチされた命令に含まれる前記第1のコード領域と第4のコード領域又は第2のコード領域と第4のコード領域をデコードするデコード手段(240)と、そのデコード結果に従ってアドレス演算を行い、前記データ転送制御を行う実行手段とを含んで構成することができる。   The execution control means includes an instruction register (25) used in common for the first format instruction and the second format instruction, the first code area included in the instruction fetched in the instruction register, and a fourth Or a decoding means (240) for decoding the second code area and the fourth code area, and an execution means for performing address calculation according to the decoding result and performing the data transfer control. it can.

前記命令レジスタは、前記第1のコード領域と第4のコード領域又は第2のコード領域と第4のコード領域の保持に共用される上位領域(UIR)と、前記第3のコード領域の保持に利用される下位領域(LIR)とを有し、前記デコード手段は、前記第4のコード領域のデコード結果に基づいて、前記命令レジスタが第2フォーマットの命令を保持したことを示す制御信号(248)を出力し、その制御信号に基づいて、前記下位領域から第3のコード領域のコードデータを前記ディジタル信号処理ユニットに向けて供給する手段(242,242A,242B)を含むことができる。   The instruction register includes an upper area (UIR) shared for holding the first code area and the fourth code area or the second code area and the fourth code area, and holding the third code area. The decoding means uses a control signal (indicating that the instruction register holds an instruction of the second format based on the decoding result of the fourth code area). 248) and a means (242, 242A, 242B) for supplying code data of the third code area from the lower area to the digital signal processing unit based on the control signal.

本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。   The effects obtained by the representative ones of the inventions disclosed in the present application will be briefly described as follows.

すなわち、内蔵メモリは、ディジタル信号処理プロセッサによる積和演算を考慮して第1のメモリと第2のメモリに2面化され、第3のバスと第2のバスによってそれぞれ並列的にアクセス可能にされているから、セントラルプロセッシングユニットは内蔵メモリから2個のデータを同時にディジタル信号処理ユニットに転送することができる。   That is, the built-in memory is divided into a first memory and a second memory in consideration of a product-sum operation by the digital signal processor, and can be accessed in parallel by the third bus and the second bus, respectively. Therefore, the central processing unit can simultaneously transfer two pieces of data from the built-in memory to the digital signal processing unit.

さらに、第3のバスと第2のバスは、外部にインタフェースされる第1のバスとも個別化されているので、セントラルプロセッシングユニットは第2のメモリと第1のメモリのアクセスに並行して外部メモリアクセスすることができる。   In addition, since the third bus and the second bus are also individualized with the first bus interfaced to the outside, the central processing unit is externally connected in parallel with the access to the second memory and the first memory. Memory access is possible.

このように、それぞれセントラルプロセッシングユニットに接続された第1乃至第3の3種類のアドレスバス及びデータバスがあるために、当該3種類の内部バスを使用して同一クロックサイクルで異なるメモリアクセス動作を実行することができるので、プログラムやデータが外部メモリに存在する場合にも容易に対応して演算処理の高速化を実現できる。   As described above, since there are the first to third types of address bus and data bus respectively connected to the central processing unit, different memory access operations can be performed in the same clock cycle using the three types of internal buses. Since it can be executed, it is possible to easily cope with a case where a program or data exists in an external memory and to speed up the arithmetic processing.

さらに、内蔵メモリは第1のメモリと第2のメモリに2面化され、2面化された各メモリはROMとRAMを供え、RAMをデータメモリ、ROMをプログラムメモリとすることにより、データメモリとプログラムメモリの分離も可能になり、ディジタル信号処理ユニットに2個のデータを並列的に転送し、また、命令フェッチ、データ転送、及び演算を並列パイプライン処理にて能率的に行うことができる。   Further, the built-in memory is divided into a first memory and a second memory. Each of the two memories is provided with a ROM and a RAM. The RAM is a data memory, and the ROM is a program memory. And program memory can be separated, two data can be transferred in parallel to the digital signal processing unit, and instruction fetch, data transfer, and operation can be efficiently performed by parallel pipeline processing. .

したがって、セントラルプロセッシングユニットと共にディジタル信号処理ユニットを一つのLSIに搭載したときにディジタル信号処理の高速化を実現できる。   Therefore, when the digital signal processing unit is mounted on one LSI together with the central processing unit, the digital signal processing can be speeded up.

CPU命令とDSP命令が混在された命令に対し、命令コードの一部をデコードすることによって当該命令がCPU命令であるか、16ビット長のDSP命令であるか、32ビット長のDSP命令であるかを識別可能に命令コードを割り当てることにより、小さな論理規模のデコーダで命令の種別を判定することができ、常に32ビット全部を一度にデコードすることを要しない。したがって、セントラルプロセッシングユニットと共にディジタル信号処理ユニットを一つのLSIに搭載したとき、その物理的な規模の増大を極力抑えることができる。   By decoding a part of the instruction code for an instruction in which a CPU instruction and a DSP instruction are mixed, the instruction is a CPU instruction, a 16-bit DSP instruction, or a 32-bit DSP instruction. By assigning an instruction code so as to be identifiable, it is possible to determine the type of instruction with a small logic scale decoder, and it is not always necessary to decode all 32 bits at once. Therefore, when the digital signal processing unit is mounted together with the central processing unit in one LSI, the increase in the physical scale can be suppressed as much as possible.

DSP命令の命令フォーマットとして、ディジタル信号処理ユニットとの間でのデータ転送を当該セントラルプロセッシングユニットに対して規定する第1のコード領域(図18に例示される16ビットDSP命令のビット9〜ビット0)を有する第1フォーマットの命令と、前記第1のコード領域と同一フォーマットの第2のコード領域(図20、図21に例示される32ビットのDSP命令のAフィールド)を有すると共に、当該第2のコード領域で規定された転送データを用いた演算処理をディジタル信号処理ユニットに対して規定する第3のコード領域(図20、図21に例示される32ビットのDSP命令のBフィールド)を有する第2フォーマットの命令とを採用することにより、第1及び第2フォーマットの夫々の命令を実行する手段は、第1のコード領域と第2のコード領域に対して共通のデコード論理を持つデコード手段を採用でき、この点においても、マイクロコンピュータの論理規模を縮小することができる。   As the instruction format of the DSP instruction, a first code area (bit 9 to bit 0 of the 16-bit DSP instruction illustrated in FIG. 18) that defines data transfer with the digital signal processing unit to the central processing unit. ) And a second code area (A field of the 32-bit DSP instruction illustrated in FIGS. 20 and 21) having the same format as the first code area. A third code area (B field of the 32-bit DSP instruction illustrated in FIGS. 20 and 21) that defines the arithmetic processing using the transfer data defined in the code area 2 for the digital signal processing unit. The second format instructions are used to execute the first and second format instructions. That means may employ a decoding means having a common decode logic for the first coding region and the second coding region, also in this respect, it is possible to reduce the logical scale of the microcomputer.

図1には本発明の一実施例に係るマイクロコンピュータ1の全体的なブロック図が示される。同図に示されるマイクロコンピュータは半導体集積回路製造技術によって単結晶シリコンのような1個の半導体基板に形成されている。マイクロコンピュータ1は、セントラルプロセッシングユニットとしてのCPUコア(CPU Core)2、ディジタル信号処理ユニットとしてのDSPエンジン(DSP Engine)3、X-ROM4、Y-ROM5、X-RAM6、Y-RAM7、割り込みコントローラ(Interrupt Controller)8、バスステートコントローラ(Bus State Controller)9、内蔵周辺回路(Peripheral Circuit)10、11、外部メモリインターフェース(External Memory Interface)12、クロックパルスジェネレータ(CPG)13より構成されている。前記X-ROM4,Y-ROM5は命令若しくは定数データ等を格納するための読み出し専用又は電気的に書き換え可能なリード・オンリ・メモリであり、X-RAM6,Y-RAM7はデータの一時格納若しくはCPUコア2とDSPエンジン3の作業領域などとして利用されるランダム・アクセス・メモリである。前記X-ROM4とX-RAM6を内部命令/データ用のXメモリ(Internal Instruction/Data X Mem.)と総称し、Y-ROM5とY-RAM7を内部命令/データ用のYメモリ(Internal Instruction/Data Y Mem.)と総称する。   FIG. 1 shows an overall block diagram of a microcomputer 1 according to an embodiment of the present invention. The microcomputer shown in the figure is formed on a single semiconductor substrate such as single crystal silicon by a semiconductor integrated circuit manufacturing technique. The microcomputer 1 includes a CPU core 2 as a central processing unit, a DSP engine 3 as a digital signal processing unit, an X-ROM 4, a Y-ROM 5, an X-RAM 6, a Y-RAM 7, and an interrupt controller. (Interrupt Controller) 8, Bus State Controller 9, Built-in Peripheral Circuits 10 and 11, External Memory Interface 12, and Clock Pulse Generator (CPG) 13. The X-ROM 4 and Y-ROM 5 are read-only or electrically rewritable read-only memories for storing instructions or constant data, and the X-RAM 6 and Y-RAM 7 are temporary data storage or CPU This is a random access memory used as a work area for the core 2 and the DSP engine 3. The X-ROM 4 and the X-RAM 6 are collectively referred to as an internal instruction / data X memory (Internal Instruction / Data X Mem.), And the Y-ROM 5 and the Y-RAM 7 are referred to as an internal instruction / data Y memory (Internal Instruction / Data). Data Y Mem.)

本実施例のマイクロコンピュータ1はそのバス構成として、外部メモリインタフェース12に結合される内部アドレスバスIAB及び内部データバスIDB、外部メモリインタフェース12に結合されない内部アドレスバスXAB及び内部データバスXDB、外部メモリインタフェース12に結合されない内部アドレスバスYAB及び内部データバスYDB、そして内蔵周辺回路10,11のための周辺アドレスバスPAB及び周辺データバスPDBを備える。尚、コントロールバスについては図示を省略してあるが、アドレスバス及びデータバスの対に対応してそれぞれ設けられている。   The microcomputer 1 of this embodiment has, as its bus configuration, an internal address bus IAB and an internal data bus IDB coupled to the external memory interface 12, an internal address bus XAB and an internal data bus XDB not coupled to the external memory interface 12, an external memory An internal address bus YAB and an internal data bus YDB which are not coupled to the interface 12 and a peripheral address bus PAB and a peripheral data bus PDB for the built-in peripheral circuits 10 and 11 are provided. Although the control bus is not shown, it is provided corresponding to a pair of address bus and data bus.

CPUコア2には、外部メモリインターフェース12を通してチップ外部に接続可能なデータバスIDBが接続され、割り込みコントローラ8からの割り込み信号80が与えられる。CPUコア2はDSPエンジン3を制御するための制御信号20をDSPエンジン3に供給する。さらにCPUコア2は、外部メモリインターフェース12を通してチップ外部に接続可能なアドレスバスIABと外部メモリインターフェース12には接続されていないアドレスバスXAB,YABにアドレス信号を出力する。CPUコア2は、クロックパルスジェネレータ(CPG)13から出力されるノンオーバーラップ2相のクロック信号Clock1,Clock2を動作基準クロック信号として動作される。CPUコア2についてはその詳細を後述するが、図1のCPUコア2には、レジスタファイル21、算術論理演算器(ALU)22、アドレス加算器(Add-ALU)23、デコーダ24、命令レジスタ(IR)25が代表的に図示されている。レジスタファイル21はアドレスレジスタやデータレジスタとして任意に利用され、また、プログラムカウンタ、そしてコントロールレジスタなどを含む。デコーダ24は命令レジスタ25にフェッチされた命令をデコードして内部制御信号(図1には図示を省略)及び制御信号20を生成する。命令レジスタ(IR)25は、それぞれ16ビットの上位側領域(UIR)と下位側領域(LIR)から成る。詳細については後述するが、下位側領域(LIR)の値は選択的に上位側領域(UIR)にシフト可能にされている。尚、割込み等の例外発生時の命令実行手順を制御したり、例外発生に対する内部状態の退避復帰をハードウェア的に制御したりするためのシーケンス制御回路は図示を省略してある。   A data bus IDB that can be connected to the outside of the chip through the external memory interface 12 is connected to the CPU core 2, and an interrupt signal 80 from the interrupt controller 8 is given. The CPU core 2 supplies a control signal 20 for controlling the DSP engine 3 to the DSP engine 3. Further, the CPU core 2 outputs address signals to an address bus IAB that can be connected to the outside of the chip through the external memory interface 12 and address buses XAB and YAB that are not connected to the external memory interface 12. The CPU core 2 is operated using the non-overlapping two-phase clock signals Clock 1 and Clock 2 output from the clock pulse generator (CPG) 13 as operation reference clock signals. Details of the CPU core 2 will be described later. The CPU core 2 in FIG. 1 includes a register file 21, an arithmetic logic unit (ALU) 22, an address adder (Add-ALU) 23, a decoder 24, an instruction register ( IR) 25 is representatively shown. The register file 21 is arbitrarily used as an address register or a data register, and includes a program counter and a control register. The decoder 24 decodes the instruction fetched into the instruction register 25 and generates an internal control signal (not shown in FIG. 1) and a control signal 20. The instruction register (IR) 25 includes a 16-bit upper area (UIR) and a lower area (LIR). Although details will be described later, the value of the lower region (LIR) can be selectively shifted to the upper region (UIR). Note that a sequence control circuit for controlling the instruction execution procedure when an exception such as an interrupt occurs or for controlling the saving and restoring of the internal state in response to the occurrence of an exception is not shown.

DSPエンジン3は前記データバスIDB,XDB,YDBに接続され、クロック信号Clock1,Clock2を動作基準クロック信号として動作される。DSPエンジン3についてはその詳細を後述するが、図1のDSPエンジン3には、データレジスタファイル31、算術論理演算器及びシフタ(ALU/Shifter)32、乗算器(MAC)33、及びデコーダ34が代表的に図示されている。データレジスタファイル31は積和演算等に利用される。デコーダ34はCPUコア2から与えられる制御信号20をデコードして、DSPエンジン3の内部制御信号(図1には図示を省略)を生成する。   The DSP engine 3 is connected to the data buses IDB, XDB, and YDB, and is operated using the clock signals Clock1 and Clock2 as operation reference clock signals. Details of the DSP engine 3 will be described later, but the DSP engine 3 of FIG. It is representatively shown. The data register file 31 is used for multiply-add operations and the like. The decoder 34 decodes the control signal 20 supplied from the CPU core 2 and generates an internal control signal (not shown in FIG. 1) of the DSP engine 3.

X-ROM4及びX-RAM6はアドレスバスIAB,XABとデータバスIDB,XDBに接続されている。Y-ROM5及びY-RAM7はアドレスバスIAB,YABとデータバスIDB,YDBに接続されている。内蔵メモリは、DSPエンジン3による積和演算を考慮してXメモリ4,6とYメモリ5,7に2面化され、内部バスXAB,XDBとYAB,YDBによってそれぞれ並列的にアクセス可能にされている。さらに、内部バスXAB,XDBとYAB,YDBは外部にインタフェースされるバスIAB,IDBとも個別化されているので、Xメモリ4,6とYメモリ5,7のアクセスに並行して外部メモリアクセスも可能にされる。Xメモリ4,6及びYメモリ5,7はDSPエンジン3による積和演算のためのデータ一時記憶領域、定数データの記憶領域などとして利用される。尚、X−RAM,Y−RAMはCPUコア2のデータ一時記憶領域若しくはワーク領域としても利用可能であることは言うまでもない。   X-ROM 4 and X-RAM 6 are connected to address buses IAB and XAB and data buses IDB and XDB. Y-ROM 5 and Y-RAM 7 are connected to address buses IAB, YAB and data buses IDB, YDB. The built-in memory is divided into X memory 4 and 6 and Y memory 5 and 7 in consideration of the product-sum operation by the DSP engine 3, and can be accessed in parallel by the internal buses XAB and XDB and YAB and YDB, respectively. ing. Furthermore, since the internal buses XAB, XDB and YAB, YDB are also individually separated from the externally interfaced buses IAB, IDB, external memory access is also performed in parallel with the access to the X memories 4, 6 and the Y memories 5, 7. Made possible. The X memories 4 and 6 and the Y memories 5 and 7 are used as a data temporary storage area, a constant data storage area, etc. for the product-sum operation by the DSP engine 3. Needless to say, the X-RAM and Y-RAM can also be used as a temporary data storage area or work area of the CPU core 2.

前記割り込みコントローラ8は、内蔵周辺回路10,11などからの割り込み要求信号(Interrupts)81を入力し、各種割込み要求に対する優先順位付けや割込み要求に対するマスキングのための情報に従って割込み要求を調停して受け付け、受け付けた割込み要求に応ずる割り込みベクタ(Interrupt Vector)82をアドレスバスIABに出力し、さらに割り込み信号80をCPUコア2に出力する。   The interrupt controller 8 receives an interrupt request signal (Interrupts) 81 from the built-in peripheral circuits 10, 11, etc., and arbitrates and accepts interrupt requests according to information for prioritizing various interrupt requests and masking interrupt requests. Then, an interrupt vector 82 corresponding to the accepted interrupt request is output to the address bus IAB, and an interrupt signal 80 is output to the CPU core 2.

バスステートコントローラ9はアドレスバスIAB,PABとデータバスIDB,PDBに接続され、アドレスバスPAB及びデータバスPDBに接続されている内蔵周辺回路10,11とCPUコア2とのインタフェース制御を行う。   The bus state controller 9 is connected to the address buses IAB and PAB and the data buses IDB and PDB, and performs interface control between the built-in peripheral circuits 10 and 11 connected to the address bus PAB and the data bus PDB and the CPU core 2.

外部メモリインターフェース12は、アドレスバスIABとデータバスIDBに接続され、マイクロコンピュータ1のチップ外部の図示を省略したアドレスバスとデータバスに接続され、外部とのインタフェース制御を行う。   The external memory interface 12 is connected to the address bus IAB and the data bus IDB, is connected to an address bus and a data bus (not shown) outside the chip of the microcomputer 1, and performs interface control with the outside.

図2にマイクロコンピュータ1のアドレスマップの一例が示される。本実施例のマイクロコンピュータ1は32ビットで規定されるアドレス空間を管理する。前記アドレスバスIABはビット幅が32ビットとされる。そのアドレス空間の中には、例外処理ベクタ領域、X-ROM空間(X−ROM4に割り当てられたアドレス空間)、X-RAM空間(X−RAM7に割り当てられたアドレス空間)、Y-ROM空間(Y−ROM5に割り当てられたアドレス空間)、Y-RAM空間(Y−RAM7に割り当てられたアドレス空間)、内蔵周辺回路割付け空間(内蔵周辺回路10,11が割り当てられたアドレス空間)などが存在する。図2の例はX-ROM4は24KB、X-RAM6は4KB、Y-ROM5は24KB、Y-RAM7は4KBが割り当てられている。
図2に従えば、16進数表記でH'00000000〜H'000003FFの空間の256B領域には例外処理ベクタ領域が割り付けられている。H'00000400〜H'01FFFFFFにはユーザによって使用可能な通常空間が割り付けられている。通常空間はマイクロコンピュータ1の外部に接続可能なメモリ領域とされる。H'02000000〜H'02005FFFには、X-ROM空間が割り付けられている。H'02006000〜H'02006FFFには、X-RAM空間が割り付けられている。H'02007000〜H'02007FFFはX-RAM_Mirror空間となっており、ここをアクセスすると実際にはH'02006000〜H'02006FFFのX-RAM空間をアクセスすることになる。H'02008000〜H'0200FFFFは、X-RAM,RAM_Mirror空間となっており、ここをアクセスすると実際にはH'02000000〜H'02007FFFのX-ROM空間およびX-RAM空間をアクセスすることになる。H'02010000〜H'02015FFFには、Y-ROM空間が割り付けられている。H'02016000〜H'02016FFFには、Y-RAM空間が割り付けられている。H'02017000〜H'02017FFFはY-RAM_Mirror空間となっており、ここをアクセスすると実際にはH'02016000〜H'02016FFFのY-RAM空間をアクセスすることになる。H'02018000〜H'0201FFFFは、Y-ROM,RAM_Mirror空間となっており、ここをアクセスすると実際にはH'02010000〜H'02017FFFのY-ROM空間およびY-RAM空間をアクセスすることになる。H'02020000〜H'07FFFFFFFには、通常空間が割り付けられている。H'08000000〜H'1FFFFFFFFには、予約領域が割り付けられている。この予約領域は、ユーザチップ(実チップ)の場合にはアクセス不可能になっており、エバチップ(エミュレーションなどに利用される評価用チップ)の場合にはASE空間(エミュレーション用の制御空間)領域として割り当てられる。H'20000000〜H'27FFFFFFFには、通常空間が割り付けられている。H'28000000〜H'FFFFFDFFには、予約領域が割り付けられている。H'FFFFFE00〜H'FFFFFFFFには 内蔵周辺回路のレジスタアドレス値を割り付ける内蔵周辺回路割り付け領域が割り付けられている。
FIG. 2 shows an example of the address map of the microcomputer 1. The microcomputer 1 of this embodiment manages an address space defined by 32 bits. The address bus IAB has a bit width of 32 bits. The address space includes an exception vector area, an X-ROM space (address space assigned to the X-ROM 4), an X-RAM space (address space assigned to the X-RAM 7), and a Y-ROM space ( Address space allocated to the Y-ROM 5), Y-RAM space (address space allocated to the Y-RAM 7), built-in peripheral circuit allocation space (address space to which the built-in peripheral circuits 10 and 11 are allocated), and the like. . In the example of FIG. 2, X-ROM 4 is assigned 24 KB, X-RAM 6 is assigned 4 KB, Y-ROM 5 is assigned 24 KB, and Y-RAM 7 is assigned 4 KB.
According to FIG. 2, an exception processing vector area is allocated to the 256B area in the space of H'00000000 to H'000003FF in hexadecimal notation. A normal space that can be used by the user is allocated to H'00000040 to H'01FFFFFF. The normal space is a memory area that can be connected to the outside of the microcomputer 1. An X-ROM space is allocated to H'0200000 to H'02005FFF. An X-RAM space is allocated to H'02006600 to H'02006FFF. H'0200700 to H'02007FFF is an X-RAM_Mirror space, and accessing this actually accesses the X-RAM space of H'0200600 to H'02006FFF. H'0208000 to H'0200FFFF is an X-RAM, RAM_Mirror space, and accessing this actually accesses the X-ROM space and the X-RAM space of H'0200000 to H'02007FFF. . A Y-ROM space is allocated to H'02010000 to H'02015FFF. A Y-RAM space is allocated to H'02016600 to H'02016FFF. H'0201000 to H'02017FFF is a Y-RAM_Mirror space, and when this is accessed, the Y-RAM space of H'020016 to H'02016FFF is actually accessed. H'0201000 to H'0201FFFF is a Y-ROM, RAM_Mirror space, and accessing this actually accesses the Y-ROM space and Y-RAM space of H'02010000 to H'02017FFF. . A normal space is allocated to H'02020000 to H'07FFFFFFF. A reserved area is allocated to H'080000 to H'1FFFFFFFF. This reserved area is inaccessible in the case of a user chip (real chip), and as an ASE space (emulation control space) in the case of an evaluation chip (evaluation chip used for emulation). Assigned. A normal space is allocated to H'20000000 to H'27FFFFFFF. A reserved area is allocated to H'2800000 to H'FFFFFDFF. H'FFFFFE00 to H'FFFFFFFF are assigned with built-in peripheral circuit allocation areas for assigning register address values of the built-in peripheral circuits.

図3にはモジュロアドレス出力部を詳細に示したCPUコア2のブロック図が示される。図3において破線で囲った部分がモジュロアドレス出力部200である。モジュロアドレス出力部200は、モジュロアドレスレジスタ(例えばA0X)より出力した値をバッファ(例えばMABX)を通してアドレスバス(例えばXAB)に出力すると同時に、モジュロアドレスレジスタ(A0X)より出力した値を加算手段(例えばALU)で加算して再びモジュロアドレスレジスタ(A0X)に格納するアドレス更新出力動作などを行う回路ブロックであり、積和演算のような繰返し演算のためのデータアクセスアドレスを順次更新して生成する。ランダムロジック回路(Random Logic Circuit)201と記載された回路ブロックは、図1のデコーダ24や前記シーケンス制御回路、そしてコントロールレジスタやステータスレジスタなどを含む回路ブロックである。   FIG. 3 is a block diagram of the CPU core 2 showing the modulo address output unit in detail. A portion surrounded by a broken line in FIG. 3 is a modulo address output unit 200. The modulo address output unit 200 outputs the value output from the modulo address register (for example, A0X) to the address bus (for example, XAB) through the buffer (for example, MABX), and simultaneously adds the value output from the modulo address register (A0X) ( This is a circuit block that performs an address update output operation that is added by, for example, ALU) and stored again in the modulo address register (A0X). . A circuit block described as a random logic circuit 201 is a circuit block including the decoder 24 of FIG. 1, the sequence control circuit, a control register, a status register, and the like.

図3においてC1,C2,DR,A1,B1,A2,B2,DWはそれぞれCPUコア2内部の代表的に示されたバスである。CPUコア2とデータバスIDBとのインタフェースは前記命令レジスタ(IR)25及びデータバッファ(Data Buffer)203にて行われる。命令レジスタ(IR)25にフェッチされた命令はランダムロジック回路(Random Logic Circuit)201に含まれる前記デコーダ24等に供給される。CPUコア2とアドレスバスIABとのインタフェースはプログラムカウンタ(PC)204及びアドレスバッファ(Address Buffer)205で行われる。CPUコア2とアドレスバスXABとのインタフェースはメモリアドレスバッファ(MABX)206で行われ、CPUコア2とアドレスバスYABとのインタフェースはメモリアドレスバッファ(MABY)207で行われる。アドレスバッファ205へのアドレス情報の入力経路は、バスC1,A1,A2の中から選択可能にされ、メモリアドレスバッファ206,207へのアドレス情報の入力経路は、バスC1,C2,A1,A2の中から選択可能にされる。算術演算器(AU)208はプログラムカウンタ204の値のインクリメントに利用される。209は汎用レジスタ(Reg.)、210はアドレスのインデックス修飾に利用されるインデックスレジスタ(Ix)、211は同じくインデックス修飾に利用されるインデックスレジスタ(Iy)、212はアドレス演算専用の加算器(PAU)、213は算術論理演算器(ALU)である。   In FIG. 3, C1, C2, DR, A1, B1, A2, B2, and DW are buses representatively shown in the CPU core 2, respectively. The interface between the CPU core 2 and the data bus IDB is performed by the instruction register (IR) 25 and the data buffer 203. The instruction fetched to the instruction register (IR) 25 is supplied to the decoder 24 included in the random logic circuit 201. The interface between the CPU core 2 and the address bus IAB is performed by a program counter (PC) 204 and an address buffer (Address Buffer) 205. The interface between the CPU core 2 and the address bus XAB is performed by a memory address buffer (MABX) 206, and the interface between the CPU core 2 and the address bus YAB is performed by a memory address buffer (MABY) 207. The address information input path to the address buffer 205 can be selected from the buses C1, A1, and A2. The address information input path to the memory address buffers 206 and 207 can be selected from the buses C1, C2, A1, and A2. It can be selected from the inside. An arithmetic operator (AU) 208 is used to increment the value of the program counter 204. 209 is a general-purpose register (Reg.), 210 is an index register (Ix) used for address index modification, 211 is an index register (Iy) also used for index modification, and 212 is an adder (PAU) dedicated to address calculation. ) 213 is an arithmetic logic unit (ALU).

制御ビットMXYはアドレスバスXAB又はアドレスバスYABのどちらのアドレスに対しモジュロ演算を行うかを指定し、論理値”1”によってアドレスバスXABを、論理値”0”によってアドレスバスYABを指定する。制御ビットDMはモジュロ演算を行うか否かを指示し、論理値”1”によってモジュロ演算を行うことを指示し、論理値”0”によってモジュロ演算を行わないことを指示する。モジュロスタートアドレスレジスタ(MS)214はモジュロ演算開始アドレスを格納し、モジュロエンドアドレスレジスタ(ME)215はモジュロ演算終了アドレスを格納する。   The control bit MXY designates which address of the address bus XAB or the address bus YAB is to be subjected to the modulo operation. The address bus XAB is designated by the logical value “1”, and the address bus YAB is designated by the logical value “0”. The control bit DM indicates whether or not to perform a modulo operation, indicates that a modulo operation is performed by a logical value “1”, and indicates that a modulo operation is not performed by a logical value “0”. The modulo start address register (MS) 214 stores a modulo operation start address, and the modulo end address register (ME) 215 stores a modulo operation end address.

モジュロアドレスレジスタ(A0x,A1x)216は現在のモジュロアドレスを格納するカレントアドレスレジスタ、217はモジュロエンドアドレスレジスタ(ME)215の値とモジュロアドレスレジスタ(A0x,A1x)216の値とを比較するコンパレータ(CMP)、218はコンパレータ217の出力と制御ビットMXY,DMの3入力に対して論理積を採るアンドゲート、219はバスC1の値とモジュロスタートアドレスレジスタ(MS)214の値とを選択するセレクタであり、それらはアドレスバスXABに関するモジュロ演算に利用される。セレクタ219はアンドゲート218の論理値”1”出力によってレジスタ(MS)214の値を選択し、選択した値をモジュロアドレスレジスタ(A0x,A1x)216に与える。モジュロアドレスレジスタ216はA0x又はA1xの何れかが選択されて利用される。   A modulo address register (A0x, A1x) 216 is a current address register that stores the current modulo address, and 217 is a comparator that compares the value of the modulo end address register (ME) 215 with the value of the modulo address register (A0x, A1x) 216 (CMP) 218 is an AND gate that takes the logical product of the output of the comparator 217 and the three inputs of the control bits MXY and DM, and 219 selects the value of the bus C1 and the value of the modulo start address register (MS) 214. Selectors, which are used for modulo operations on the address bus XAB. The selector 219 selects the value of the register (MS) 214 by the logical value “1” output of the AND gate 218, and supplies the selected value to the modulo address register (A0x, A1x) 216. The modulo address register 216 is used by selecting either A0x or A1x.

モジュロアドレスレジスタ(A0y,A1y)226は現在のモジュロアドレスを格納するカレントアドレスレジスタ、227はモジュロエンドアドレスレジスタ(ME)215の値とモジュロアドレスレジスタ(A0y,A1y)216の値とを比較するコンパレータ(CMP)、228はコンパレータ227の出力と制御ビットMXYの反転ビットと制御ビットDMとの3入力に対して論理積を採るアンドゲート、229はバスC2の値とモジュロスタートアドレスレジスタ(MS)214の値とを選択するセレクタであり、それらはアドレスバスYABに関するモジュロ演算に利用される。セレクタ229はアンドゲート228の論理値”1”出力によってレジスタ(MS)214の値を選択し、選択した値をモジュロアドレスレジスタ(A0y,A1y)226に与える。モジュロアドレスレジスタ226はA0y又はA1yの何れかが選択されて利用される。   A modulo address register (A0y, A1y) 226 is a current address register that stores the current modulo address, and 227 is a comparator that compares the value of the modulo end address register (ME) 215 with the value of the modulo address register (A0y, A1y) 216. (CMP) 228 is an AND gate that takes the logical product of three outputs of the output of the comparator 227, the inverted bit of the control bit MXY, and the control bit DM, and 229 is the value of the bus C2 and the modulo start address register (MS) 214. These selectors are used for modulo operation on the address bus YAB. The selector 229 selects the value of the register (MS) 214 by the logical value “1” output of the AND gate 228 and supplies the selected value to the modulo address register (A0y, A1y) 226. The modulo address register 226 is used by selecting either A0y or A1y.

尚、ランダムロジック回路201に記載されたOP Codeは命令レジスタ25から供給される命令コードを意味し、CONSTは定数値を意味する。   Note that OP Code written in the random logic circuit 201 means an instruction code supplied from the instruction register 25, and CONST means a constant value.

ここで、CPUコア2におけるモジュロ演算動作として、例えば、モジュロアドレスレジスタ(A0x)216を用いて、アドレスバスXABへ供給すべきアドレス情報をモジュロ演算にて生成する動作を説明する。   Here, as the modulo arithmetic operation in the CPU core 2, for example, an operation for generating address information to be supplied to the address bus XAB by modulo arithmetic using the modulo address register (A0x) 216 will be described.

先ず、モジュロ演算開始アドレスがモジュロスタートアドレスレジスタ(MS)214に、モジュロ演算終了アドレスがモジュロエンドアドレスレジスタ(ME)215にそれぞれ書き込まれる。モジュロアドレスレジスタ(A0x)にはモジュロ演算を開始するアドレス値が書き込まれる。次にアドレスバスXABのアドレスに対しモジュロ演算を行うので、XAB、YABのどちらのアドレスに対しモジュロ演算を行うかを決定する制御ビットMXYに対し論理値”1”が書き込まれる(アドレスバスYABに対しモジュロ演算を行う場合は、制御ビットMXYに論理値”0”が書き込まれる)。最後にモジュロ演算を行うか否かを判定する制御ビットDMに論理値”1”が書き込まれる。   First, the modulo calculation start address is written in the modulo start address register (MS) 214, and the modulo calculation end address is written in the modulo end address register (ME) 215. In the modulo address register (A0x), an address value for starting the modulo operation is written. Next, since the modulo operation is performed on the address of the address bus XAB, the logical value “1” is written to the control bit MXY for determining which address of the XAB or YAB the modulo operation is to be performed (the address bus YAB). When a modulo operation is performed, a logical value “0” is written in the control bit MXY). Finally, a logical value “1” is written in a control bit DM for determining whether or not to perform a modulo operation.

モジュロ演算命令は例えば、MOVS.W @Ax, Dxとされる。この命令記述において、Axはモジュロアドレスレジスタ(A0x)216又はモジュロアドレスレジスタ(A1x)216とされ、DxはDSPエンジン3内のレジスタに対応する。図3にはDxは図示されていない。上記モジュロ演算命令が実行されると、モジュロアドレスレジスタ(A0x)216より値が読み出され、メモリアドレスバッファ(MABX)206及び算術論理演算器(ALU)213に入力される。メモリアドレスバッファ(MABX)206に入力された値はそのままアドレスバスXABに出力されて、XROM4またはXRAM6のアドレスを指定する。一方、算術論理演算器(ALU)213に入力されたモジュロアドレスレジスタ(A0x)216の値は、インデックスレジスタ(Ix)210の値又は定数(Const)が加算される。インデックスレジスタ(Ix)210との加算を行なう場合は、命令MOVS.W @(Ax, Ix), Dx等を実行したときであり、定数加算される場合は命令MOVS.W @Ax, Dx等を実行したときである。その加算結果は算術論理演算器(ALU)213より出力される。算術論理演算器(ALU)213より出力された値は、セレクタ219に入る。このセレクタ219のもう一方の入力は、モジュロスタートアドレスレジスタ(MS)214に格納されているモジュロ演算開始アドレスである。   The modulo operation instruction is, for example, MOVS.W @Ax, Dx. In this instruction description, Ax is a modulo address register (A0x) 216 or a modulo address register (A1x) 216, and Dx corresponds to a register in the DSP engine 3. In FIG. 3, Dx is not shown. When the modulo operation instruction is executed, a value is read from the modulo address register (A0x) 216 and input to the memory address buffer (MABX) 206 and the arithmetic logic unit (ALU) 213. The value input to the memory address buffer (MABX) 206 is output to the address bus XAB as it is to specify the address of the XROM 4 or XRAM 6. On the other hand, the value of the modulo address register (A0x) 216 input to the arithmetic logic unit (ALU) 213 is added with the value of the index register (Ix) 210 or a constant (Const). When adding to the index register (Ix) 210, the instruction MOVS.W @ (Ax, Ix), Dx, etc. is executed. When adding a constant, the instruction MOVS.W @Ax, Dx, etc. When it is executed. The addition result is output from an arithmetic logic unit (ALU) 213. The value output from the arithmetic logic unit (ALU) 213 enters the selector 219. The other input of the selector 219 is a modulo calculation start address stored in the modulo start address register (MS) 214.

セレクタ219の出力が算術論理演算器(ALU)213の出力になるか、モジュロスタートアドレスレジスタ(MS)214の値になるかは、次のようにして決定される。モジュロアドレスレジスタ(A0x)216の値とモジュロエンドアドレスレジスタ(ME)215の値は、コンパレータ(CMP)217で常に比較されており、一致すればコンパレータ(CMP)217より論理値”1”が出力され、不一致ならば論理値”0”が出力される。コンパレータ(CMP)217より出力された値は、制御ビットDM,MXYと共にアンドゲート218で論理積が採られ(この例の場合、DM、MXY共に論理値”1”なので、コンパレータ217の値がそのままアンドゲート218から出力される。)、セレクタ219に入力される。セレクタ219は、アンドゲート218より入力される値が論理値”1”の場合にモジュロスタートアドレスレジスタ(MS)214の値を選択し、論理値”0”の場合には算術論理演算器(ALU)213からの出力値を選択する。   Whether the output of the selector 219 becomes the output of the arithmetic logic unit (ALU) 213 or the value of the modulo start address register (MS) 214 is determined as follows. The value of the modulo address register (A0x) 216 and the value of the modulo end address register (ME) 215 are always compared by the comparator (CMP) 217, and if they match, the logical value “1” is output from the comparator (CMP) 217. If they do not match, a logical value “0” is output. The value output from the comparator (CMP) 217 is ANDed by the AND gate 218 together with the control bits DM and MXY (in this example, both the DM and MXY are logical values “1”, so the value of the comparator 217 remains unchanged. Output from the AND gate 218) and input to the selector 219. The selector 219 selects the value of the modulo start address register (MS) 214 when the value input from the AND gate 218 is a logical value “1”, and selects the arithmetic logic unit (ALU) when the logical value is “0”. ) Select the output value from 213.

アンドゲート218より入力される値が論理値”0”の間は、算術論理演算器(ALU)213からの出力値を選択し続けるため、アドレスバスXABに出力される値は、順次更新されていく。モジュロエンドアドレスレジスタ(ME)215の値とモジュロアドレスレジスタ(A0x)216の値とが一致すると、アンドゲート218からセレクタ219に入力される値が論理値”1”になり、モジュロスタートアドレスレジスタ(MS)214の値を選択する。それによって、モジュロアドレスレジスタ(A0x)216はモジュロスタートアドレスレジスタ(MS)214の値によって初期化される。   While the value input from the AND gate 218 is the logical value “0”, the output value from the arithmetic logic unit (ALU) 213 is continuously selected, so that the value output to the address bus XAB is sequentially updated. Go. When the value of the modulo end address register (ME) 215 and the value of the modulo address register (A0x) 216 match, the value input from the AND gate 218 to the selector 219 becomes the logical value “1”, and the modulo start address register ( MS) Select a value of 214. Thereby, the modulo address register (A0x) 216 is initialized by the value of the modulo start address register (MS) 214.

上記モジュロ演算の説明では、モジュロアドレスレジスタ(A0x)216を利用したときの動作を説明をしたが、モジュロ演算命令MOVS.W @Ax, DxにおけるAxをモジュロアドレスレジスタ(A1x)216に指定することも可能である。また制御ビットMXYに論理値”0”を指定すれば、アドレスバスYABに対してモジュロ演算が可能になる。この場合、モジュロ演算命令MOVS.W @Ax, DxにおけるAxを、モジュロアドレスレジスタ(A0y)226又は(A1y)226を指定するための値Ayに変更しなければならない。また制御ビットDMに0を指定すれば、モジュロ演算の実行を禁止することもできる。   In the above description of the modulo operation, the operation when the modulo address register (A0x) 216 is used has been described. Is also possible. If a logical value “0” is designated for the control bit MXY, a modulo operation can be performed on the address bus YAB. In this case, Ax in the modulo arithmetic instruction MOVS.W @Ax, Dx must be changed to a value Ay for designating the modulo address register (A0y) 226 or (A1y) 226. If 0 is specified for the control bit DM, execution of the modulo operation can be prohibited.

図4にはDSPエンジン3の一例ブロック図が示される。ランダムロジック回路(Random Logic Circuit)301と記載された回路ブロックは、図1のデコーダ34や制御回路、そしてコントロールレジスタやステータスレジスタなどを含む回路ブロックである。その他にDSPエンジン3は、算術論理演算器(ALU)302、シフタ(SFT)303、乗算器(MAC)304、レジスタ(Reg.)305、レジスタ(A0,A1)306、レジスタ(Y0,Y1)307、レジスタ(X0,X1)308、メモリデータバッファ(MDBI)309、メモリデータバッファ(MDBX)310、メモリデータバッファ(MDBY)311を備える。メモリデータバッファ(MDBY)311はデータバスYDBとバスD2を接続する。メモリデータバッファ(MDBX)310はデータバスXDBとバスD1を接続する。メモリデータバッファ(MDBI)309はデータバスIDBとバスC1,D1,A1,B1に接続している。乗算器(MAC)304はバスA1及びB1よりデータを入力し、それに対する乗算結果をバスC1及びD1に出力する。シフタ(SFT)303はバスA2よりデータを入力し、シフト演算結果をバスC2に出力する。算術論理演算器(ALU)302はバスA2及びB2よりデータを入力し、演算結果をバスC2に出力する。   FIG. 4 shows an example block diagram of the DSP engine 3. A circuit block described as a random logic circuit 301 is a circuit block including the decoder 34, the control circuit, the control register, the status register, and the like in FIG. In addition, the DSP engine 3 includes an arithmetic logic unit (ALU) 302, a shifter (SFT) 303, a multiplier (MAC) 304, a register (Reg.) 305, a register (A0, A1) 306, and a register (Y0, Y1). 307, a register (X0, X1) 308, a memory data buffer (MDBI) 309, a memory data buffer (MDBX) 310, and a memory data buffer (MDBY) 311. A memory data buffer (MDBY) 311 connects the data bus YDB and the bus D2. A memory data buffer (MDBX) 310 connects the data bus XDB and the bus D1. A memory data buffer (MDBI) 309 is connected to the data bus IDB and the buses C1, D1, A1, and B1. A multiplier (MAC) 304 inputs data from the buses A1 and B1, and outputs a multiplication result for the data to the buses C1 and D1. A shifter (SFT) 303 receives data from the bus A2 and outputs a shift operation result to the bus C2. An arithmetic logic unit (ALU) 302 inputs data from the buses A2 and B2, and outputs an operation result to the bus C2.

図5にはマイクロコンピュータ1の命令セットに含まれる命令のフォーマット及び命令コードの一例が示される。マイクロコンピュータ1は、CPU命令とDSP命令の2種類の命令をサポートしている。CPU命令の全てとDSP命令の一部は、16ビット長の命令コードであり、残りのDSP命令は32ビット長の命令コードになっている。CPU命令とは、DSPエンジン3を動作させることなく専らCPUコア2によって実行される命令である。DSP命令とは、アドレス演算若しくはオペランドアクセスなどの一部の処理をCPUコア2に負担させてDSPエンジン3が実行する命令である。   FIG. 5 shows an example of an instruction format and an instruction code included in the instruction set of the microcomputer 1. The microcomputer 1 supports two types of instructions, a CPU instruction and a DSP instruction. All of the CPU instructions and a part of the DSP instructions are 16-bit instruction codes, and the remaining DSP instructions are 32-bit instruction codes. The CPU command is a command executed exclusively by the CPU core 2 without operating the DSP engine 3. The DSP instruction is an instruction executed by the DSP engine 3 by causing the CPU core 2 to perform a part of processing such as address calculation or operand access.

CPU命令は命令コードの最上位側の4ビットが”0000”〜”1110”までの空間に命令が割り当てられている。DSP命令は、命令コードの最上位側の4ビットが”1111”に全て割り当てられている。さらに命令コードの最上位側の6ビットが”111100”及び”111101”に割り当てられた命令は、DSP命令でも16ビット長の命令コードになっている。命令コードの最上位側の6ビットが”111110”の命令は、32ビット長の命令コードになっている。命令コードの最上位側の6ビットが”111111”の空間には命令を割り当てておらず、未使用領域(未定義命令領域)となっている。将来この領域を利用して命令コードを更に拡張することができる。この命令フォーマットより明らかなように、各命令コードの最上位側の6ビットをデコードすれば、当該命令がCPU命令であるか、16ビット長のDSP命令であるか、32ビット長のDSP命令であるか、未定義命令であるかの判定を、小さな論理規模のデコーダで行うことができる。図5のCPU命令フォーマットにおいて、nnnnはディスティネーションオペランドの指定領域、ssssはソースオペランドの指定領域、ddddはディスプレースメントの指定領域、iiiiiiiiはイミディエイト値の指定領域である。尚、ADD命令などの場合は、nnnnもソースオペランドの指定領域とされ、演算結果はnnnnに格納される。また、図3に基づいて説明した前記モジュロ演算命令は、図5の命令MOVS.W @R2,A0に対応されるが、図5における命令記述はオペランド指定の記述形態が図3で説明した内容と相違されている。これは単なる形式の相違であり、実質は同じである。   The CPU instruction is assigned to a space in which the most significant 4 bits of the instruction code are “0000” to “1110”. In the DSP instruction, the most significant 4 bits of the instruction code are all assigned to “1111”. Further, an instruction in which 6 bits on the most significant side of the instruction code are assigned to “111100” and “111101” is a 16-bit instruction code even in a DSP instruction. An instruction in which the most significant 6 bits of the instruction code are “111110” is a 32-bit instruction code. No instruction is assigned to the space in which the most significant 6 bits of the instruction code are “111111”, which is an unused area (undefined instruction area). In the future, this area can be used to further extend the instruction code. As is clear from this instruction format, if the most significant 6 bits of each instruction code are decoded, the instruction is a CPU instruction, a 16-bit DSP instruction, or a 32-bit DSP instruction. It is possible to determine whether there is an undefined instruction or not with a small logic scale decoder. In the CPU instruction format of FIG. 5, nnnn is a destination operand designation area, ssss is a source operand designation area, dddd is a displacement designation area, and iiiiii is an immediate value designation area. In the case of an ADD instruction or the like, nnnn is also designated as a source operand designation area, and the operation result is stored in nnnn. The modulo operation instruction explained based on FIG. 3 corresponds to the instruction MOVS.W @ R2, A0 of FIG. 5. The instruction description in FIG. Is different. This is just a difference in form and is essentially the same.

図6にはCPUコア2のデコーダ24とDSPエンジン3のデコーダ34との接続構成例が示される。マイクロコンピュータ1による命令フェッチは32ビット単位で命令レジスタ(IR)25に行われる。デコーダ24は第1のデコード回路240、第2のデコード回路241、及びコード変換回路242を備える。第1のデコード回路240は命令レジスタ(IR)25の上位側16ビットの領域(UIR)の値をデコードして、当該命令がCPU命令か、16ビットのDSP命令か、32ビットのDSP命令かに応じて、CPUデコード信号243、DSPデコード信号244、コード変換制御信号245、及びシフト制御信号246を生成する。第2のデコード回路241はCPUデコード信号243をデコードして、CPUコア2内部の演算器やレジスタ選択などを行う各種内部制御信号(CPU制御信号)247を生成する。コード変換回路242は、コード変換制御信号245にて活性化されると、命令レジスタ(IR)25の下位側16ビットの領域(LIR)が保持する情報のビット数を圧縮し若しくはそのまま出力し、コード変換制御信号245にて非活性化されると、その出力の無効を意味する情報(ノンオペレーションコード)を出力する。コード変換回路242は、信号245が非活性状態のとき下位側16ビットの領域(LIR)の値に代えてノンオペレーションコードを出力するという意味では、セレクタによって実現することも可能である。DSPデコード信号244とコード変換回路242の出力は、前記DSP制御信号20としてDSPエンジン3のデコーダ34に供給される。前記第1のデコード回路240は、命令レジスタ(IR)25の上位側16ビットの領域(UIR)に格納された最上位側の6ビットをデコードすることにより、当該命令コードがCPU命令か、16ビットのDSP命令か、32ビットのDSP命令かを判定することができる。   FIG. 6 shows a connection configuration example between the decoder 24 of the CPU core 2 and the decoder 34 of the DSP engine 3. Instruction fetch by the microcomputer 1 is performed in the instruction register (IR) 25 in units of 32 bits. The decoder 24 includes a first decoding circuit 240, a second decoding circuit 241, and a code conversion circuit 242. The first decoding circuit 240 decodes the value of the upper 16-bit area (UIR) of the instruction register (IR) 25 and determines whether the instruction is a CPU instruction, a 16-bit DSP instruction, or a 32-bit DSP instruction. In response, the CPU decode signal 243, the DSP decode signal 244, the code conversion control signal 245, and the shift control signal 246 are generated. The second decoding circuit 241 decodes the CPU decoding signal 243 and generates various internal control signals (CPU control signals) 247 for selecting an arithmetic unit and a register in the CPU core 2. When activated by the code conversion control signal 245, the code conversion circuit 242 compresses or outputs the number of bits of information held in the lower 16-bit area (LIR) of the instruction register (IR) 25, When deactivated by the code conversion control signal 245, information (non-operation code) indicating that the output is invalid is output. The code conversion circuit 242 can also be realized by a selector in the sense that when the signal 245 is inactive, it outputs a non-operation code instead of the value of the lower 16-bit area (LIR). The DSP decode signal 244 and the output of the code conversion circuit 242 are supplied to the decoder 34 of the DSP engine 3 as the DSP control signal 20. The first decoding circuit 240 decodes the most significant 6 bits stored in the upper 16-bit area (UIR) of the instruction register (IR) 25, so that the instruction code is a CPU instruction or 16 It can be determined whether the instruction is a bit DSP instruction or a 32-bit DSP instruction.

デコードされた命令が16ビット命令である場合、コード変換制御信号245は非活性状態とされ、それによってコード変換回路242は出力の無効を意味するノンオペレーションコードを出力する。また、デコードされた命令が16ビット命令である場合にはシフト制御信号246が活性化され、それを受ける命令レジスタ(IR)25はその下位側16ビットの領域(LIR)の値を上位側16ビットの領域(LIR)にシフトさせ、シフトされた命令を次に実行すべき命令の全部若しくは一部として利用する。例えば命令レジスタIRの上位側16ビット領域UIRに16ビットCPU命令が格納され、下位側ビット領域LIRに32ビットDSP命令の上位16ビットの命令コードが格納された場合について説明する。まず、上位側16ビット領域UIRに格納された16ビットCPU命令が第1デコード回路240にてデコードされ、その結果に従ってCPUコア2はその命令を実行し、下位側16ビット領域LIRに格納された32ビットDSP命令の上位16ビットの命令コードデータは、上位側16ビット領域UIRに転送される。このときランダムロジック回路201は、算術演算器AU208に対し、プログラムカウンタPCに格納されるべきアドレスのアドレス演算を実行させる。プログラムカウンタPCは、算術演算器AU208によって演算されたアドレス演算結果に従うアドレスを格納する。プログラムカウンタPCに格納されたアドレスに従って、上記32ビットDSP命令の下位16ビットの命令コードデータが、それを格納する命令メモリから命令レジスタIRの下位側16ビット領域LIRに転送される。これにより、32ビットDSP命令が命令レジスタIRに格納される。そして、この命令レジスタIRに格納された32ビットDSP命令は、デコーダ24を介してDSPエンジン3のデコーダ34に供給される。また、他の方法として、図示していないが、複数の命令プリフェッチバッファがCPUコア2内に設けられている。複数の命令プリフェッチバッファは、現在実行されている命令から数サイクル先に実行されるべき命令をプリフェッチする。このようなプリフェッチバッファが設けられている場合において、上述のように32ビットDSP命令の上位16ビットの命令コードデータが下位側領域LIRから上位側16ビット領域UIRに転送されるとき、ランダムロジック回路201は、上記32ビットDSP命令の下位16ビットの命令コードデータがプリフェッチされている命令プリフェッチバッファを選択する。その選択された命令プリフェッチバッファから32ビットDSP命令の下位16ビットの命令コードデータが読み出され、命令レジスタIRの下位側16ビット領域LIRに格納される。   When the decoded instruction is a 16-bit instruction, the code conversion control signal 245 is deactivated, and the code conversion circuit 242 outputs a non-operation code indicating that the output is invalid. When the decoded instruction is a 16-bit instruction, the shift control signal 246 is activated, and the instruction register (IR) 25 that receives it activates the lower 16-bit area (LIR) value to the upper 16 Shift to a bit area (LIR) and use the shifted instruction as all or part of the next instruction to be executed. For example, a case where a 16-bit CPU instruction is stored in the upper 16-bit area UIR of the instruction register IR and an upper 16-bit instruction code of the 32-bit DSP instruction is stored in the lower-side bit area LIR will be described. First, the 16-bit CPU instruction stored in the upper 16-bit area UIR is decoded by the first decoding circuit 240, and the CPU core 2 executes the instruction in accordance with the result, and is stored in the lower 16-bit area LIR. The upper 16-bit instruction code data of the 32-bit DSP instruction is transferred to the upper 16-bit area UIR. At this time, the random logic circuit 201 causes the arithmetic operation unit AU 208 to perform an address operation of an address to be stored in the program counter PC. The program counter PC stores an address according to the address calculation result calculated by the arithmetic operator AU208. According to the address stored in the program counter PC, the lower 16-bit instruction code data of the 32-bit DSP instruction is transferred from the instruction memory storing the 32-bit DSP instruction to the lower 16-bit area LIR of the instruction register IR. As a result, the 32-bit DSP instruction is stored in the instruction register IR. The 32-bit DSP instruction stored in the instruction register IR is supplied to the decoder 34 of the DSP engine 3 via the decoder 24. As another method, though not shown, a plurality of instruction prefetch buffers are provided in the CPU core 2. The plurality of instruction prefetch buffers prefetch instructions to be executed several cycles ahead of the currently executed instruction. When such a prefetch buffer is provided, when the upper 16-bit instruction code data of the 32-bit DSP instruction is transferred from the lower-side area LIR to the upper-side 16-bit area UIR as described above, the random logic circuit 201 selects an instruction prefetch buffer in which instruction code data of lower 16 bits of the 32-bit DSP instruction is prefetched. The lower 16-bit instruction code data of the 32-bit DSP instruction is read from the selected instruction prefetch buffer and stored in the lower 16-bit area LIR of the instruction register IR.

デコードされた命令が16ビットのCPU命令である場合、DSPデコード信号244はノンオペレーションを意味するコードとされる。デコードされた命令が16ビットのDSP命令である場合には、CPU制御信号247はCPUデコード信号243に基づいて第2のデコード回路241が生成し、DSPエンジン3内部の制御信号は実質的にDSPデコード信号244をデコーダ34が解読して生成する。デコードされた命令が32ビットのDSP命令である場合、CPU制御信号247はCPUデコード信号243に基づいて第2のデコード回路241が生成し、DSPエンジン3内部の制御信号はDSPデコード信号244とコード変換回路242の出力をデコーダ34が解読して生成する。   When the decoded instruction is a 16-bit CPU instruction, the DSP decode signal 244 is a code meaning non-operation. When the decoded instruction is a 16-bit DSP instruction, the CPU control signal 247 is generated by the second decoding circuit 241 based on the CPU decode signal 243, and the control signal inside the DSP engine 3 is substantially the DSP. Decode signal 244 is decoded by decoder 34 and generated. When the decoded instruction is a 32-bit DSP instruction, the CPU control signal 247 is generated by the second decoding circuit 241 based on the CPU decode signal 243, and the control signal inside the DSP engine 3 is the DSP decode signal 244 and the code. The decoder 34 decodes and generates the output of the conversion circuit 242.

マイクロコンピュータ1の命令セットには命令コード長が、16ビットのものと32ビットのものがあり、上述のように16ビット長命令と32ビット長命令では処理が異なるので、それぞれの場合を分けてその動作を詳述する。   The instruction set of the microcomputer 1 has an instruction code length of 16 bits and 32 bits, and the processing is different between the 16-bit instruction and the 32-bit instruction as described above. The operation will be described in detail.

始めに16ビット長命令の場合について説明する。第1のデコード回路240は命令レジスタ(IR)25にフェッチされた32ビットの命令コードの内、上位16ビットをデコードする。第1のデコード回路240では、命令コードの最上位6ビットのコードが”111110”、”11111”以外のときは16ビット長命令であることがわかるので、このときはCPUデコード信号243とDSPデコード信号244の出力と共に、命令レジスタ(IR)25の下位16ビット領域LIRの命令コードデータを上位16ビット領域UIRにシフトさせるシフト制御信号246を活性化する。活性化されたシフト制御信号246を受けた命令レジスタ(IR)25は、下位16ビット領域LIRに格納されている命令コードを上位16ビット領域UIRにシフトする。シフトされた命令コードは、その次に第1のデコード回路240でデコードされることになる。デコーダ24より出力されるCPUデコード信号243は、第2デコード回路241に出力され、DSPデコード信号244は、DSPエンジン3に供給される。また、第1のデコード回路240は16ビット長命令であることがわかると、コード変換制御信号245を非活性とし、これによってコード変換回路242は、下位16ビットの命令コードが無効であることを示すコードをDSP制御信号20の一部として生成する。DSPエンジン3側では第1のデコード回路240より出力されたDSPデコード信号244とコード変換回路242より出力されたコード信号とをDSP制御信号20として入力すると、デコーダ34が当該DSP制御信号20のデコードを行なう。16ビットのDSP命令の場合、コード変換回路242より出力されたDSP制御信号は無効を表わす信号になっているので、デコーダ34はDSPデコード信号244に着目して、DSPエンジン3内にある乗算器(MAC)304、算術論理演算器(ALU)302、及びシフタ(SFT)303等の制御信号を出力する。DSPエンジン3はそれら制御信号に従って演算処理を行なう。   First, the case of a 16-bit instruction will be described. The first decoding circuit 240 decodes the upper 16 bits of the 32-bit instruction code fetched into the instruction register (IR) 25. In the first decoding circuit 240, when the most significant 6-bit code of the instruction code is other than “111110” and “11111”, it is understood that the instruction is a 16-bit length instruction. Along with the output of the signal 244, the shift control signal 246 for activating the instruction code data in the lower 16-bit area LIR of the instruction register (IR) 25 to the upper 16-bit area UIR is activated. In response to the activated shift control signal 246, the instruction register (IR) 25 shifts the instruction code stored in the lower 16-bit area LIR to the upper 16-bit area UIR. The shifted instruction code is then decoded by the first decoding circuit 240. The CPU decode signal 243 output from the decoder 24 is output to the second decode circuit 241, and the DSP decode signal 244 is supplied to the DSP engine 3. If the first decoding circuit 240 is found to be a 16-bit instruction, the code conversion control signal 245 is deactivated, and the code conversion circuit 242 confirms that the lower 16-bit instruction code is invalid. The code shown is generated as part of the DSP control signal 20. On the DSP engine 3 side, when the DSP decode signal 244 output from the first decode circuit 240 and the code signal output from the code conversion circuit 242 are input as the DSP control signal 20, the decoder 34 decodes the DSP control signal 20. To do. In the case of a 16-bit DSP instruction, the DSP control signal output from the code conversion circuit 242 is a signal indicating invalidity. Therefore, the decoder 34 pays attention to the DSP decode signal 244 and a multiplier in the DSP engine 3. Control signals such as (MAC) 304, arithmetic logic unit (ALU) 302, and shifter (SFT) 303 are output. The DSP engine 3 performs arithmetic processing according to these control signals.

次に32ビット長命令の場合について説明する。CPUコア2内部にある第1のデコード回路240では、命令レジスタ(IR)25に32ビットの命令コードを格納する。そして上位16ビットを第1のデコード回路240でデコードし、デコード信号243,244を出力する。第1のデコード回路240では、命令コードの最上位6ビットのコードが”111110”のときは32ビット長命令であることがわかるので、コード変換制御信号245を活性化し、これによってコード変換回路242は、命令レジスタ(IR)25の下位16ビットの命令コードをコード変換する。コード変換された情報はDSPデコード信号244と共にDSPエンジン3にDSP制御信号20として供給される。デコーダ34はDSP制御信号20をデコードしてDSPエンジン3内部の制御信号を生成する。尚、デコーダ24,34は例えばランダムロジック回路で実現することができる。   Next, the case of a 32-bit length instruction will be described. In the first decoding circuit 240 in the CPU core 2, a 32-bit instruction code is stored in the instruction register (IR) 25. Then, the upper 16 bits are decoded by the first decoding circuit 240 and decoded signals 243 and 244 are output. In the first decoding circuit 240, when the most significant 6-bit code of the instruction code is “111110”, it can be seen that the instruction is a 32-bit length instruction. Converts the instruction code of the lower 16 bits of the instruction register (IR) 25. The code-converted information is supplied as a DSP control signal 20 to the DSP engine 3 together with the DSP decode signal 244. The decoder 34 decodes the DSP control signal 20 to generate a control signal inside the DSP engine 3. The decoders 24 and 34 can be realized by a random logic circuit, for example.

図17には図6に対応される別の実施例が示される。図6の実施例では、命令レジスタ25の下位領域LIRの命令データが上位領域UIRにシフトされるものとして説明した。図17の実施例は、前記命令レジスタ25と内部データバスIDBとの間に、命令プリフェッチキューを構成する直列2段の命令プリフェッチバッファ250,251を供え、命令プリフェッチバッファ250,251の保持データをセレクタ252で選択して命令レジスタ25に与えるようになっている。命令プリフェッチバッファ250,251及び命令レジスタ25の夫々は、32ビット単位でデータを保持し、その保持動作は、制御信号φ1〜φ3(CLK1に同期)によって制御される。特に図示されないが、命令プリフェッチバッファ250,251及び命令レジスタ25の夫々は、マスタ・スレーブの構成を有し、マスタ段は対応される制御信号の立ち上がりに同期して入力のラッチ動作を行い、スレーブ段は対応される制御信号の立ち下がりに同期して入力のラッチ動作を行う。これによって、直列2段の命令プリフェッチバッファ250,251には、プリフェッチされた前後の命令データが格納される。   FIG. 17 shows another embodiment corresponding to FIG. In the embodiment of FIG. 6, the instruction data in the lower area LIR of the instruction register 25 is described as being shifted to the upper area UIR. The embodiment of FIG. 17 is provided with serial two-stage instruction prefetch buffers 250 and 251 constituting an instruction prefetch queue between the instruction register 25 and the internal data bus IDB. The data is selected by the selector 252 and given to the instruction register 25. Each of the instruction prefetch buffers 250 and 251 and the instruction register 25 holds data in units of 32 bits, and the holding operation is controlled by control signals φ1 to φ3 (synchronized with CLK1). Although not shown in particular, each of the instruction prefetch buffers 250 and 251 and the instruction register 25 has a master / slave configuration, and the master stage performs an input latch operation in synchronization with the rise of the corresponding control signal, and the slave The stage performs an input latch operation in synchronization with the fall of the corresponding control signal. As a result, the instruction data before and after the prefetch are stored in the instruction prefetch buffers 250 and 251 in two stages in series.

前記セレクタ252は、選択制御信号φ4に従って、ポートPaに供給される32ビットの命令データ又はポートPb供給される32ビットの命令データを選択して命令レジスタ25に与える。前記ポートPaには、命令プリフェッチバッファ250の上位16ビット領域UPB1を下位側とし、命令プリフェッチバッファ251の下位16ビット領域LPB2を上位側とする32ビットの命令データが供給される。ポートPbには命令プリフェッチバッファ251に格納されている32ビットの命令データがそのまま供給される。   The selector 252 selects 32-bit instruction data supplied to the port Pa or 32-bit instruction data supplied to the port Pb in accordance with the selection control signal φ4, and supplies it to the instruction register 25. The port Pa is supplied with 32-bit instruction data having the upper 16-bit area UPB1 of the instruction prefetch buffer 250 as the lower side and the lower 16-bit area LPB2 of the instruction prefetch buffer 251 as the upper side. The port Pb is supplied with the 32-bit instruction data stored in the instruction prefetch buffer 251 as it is.

これにより、命令プリフェッチバッファ251が32ビットのDSP命令を保持しているとき、セレクタ252は、ポートPbの出力を選択することによって当該32ビットのDSP命令を命令レジスタ25にセットすることができる。命令プリフェッチバッファ251が16ビットのDSP命令又は16ビットのCPU命令を上位領域UPB2に保持しているとき、セレクタ252は、ポートPbの出力を選択することによって当該16ビットの命令を命令レジスタ25の上位領域UIRにセットすることができる。命令プリフェッチバッファ251が16ビットのDSP命令又は16ビットのCPU命令を下位領域LPB2に保持しているときは、セレクタ252が、ポートPaの出力を選択することによって当該16ビットの命令を命令レジスタ25の上位領域UIRにセットすることができる。命令プリフェッチバッファ251が32ビットDSP命令の上位側16ビット命令コードを下位領域LPB2に保持し、命令プリフェッチバッファ250がその上位領域UPB1に当該32ビットDSP命令の下位側16ビット命令コードを保持しているときは、セレクタ252が、ポートPaの出力を選択することによって当該32ビットDSP命令を命令レジスタ25にセットすることができる。   Thus, when the instruction prefetch buffer 251 holds a 32-bit DSP instruction, the selector 252 can set the 32-bit DSP instruction in the instruction register 25 by selecting the output of the port Pb. When the instruction prefetch buffer 251 holds a 16-bit DSP instruction or a 16-bit CPU instruction in the upper area UPB2, the selector 252 selects the output of the port Pb to select the 16-bit instruction in the instruction register 25. It can be set in the upper area UIR. When the instruction prefetch buffer 251 holds a 16-bit DSP instruction or a 16-bit CPU instruction in the lower area LPB2, the selector 252 selects the output of the port Pa to select the 16-bit instruction in the instruction register 25. Can be set in the upper region UIR of the. The instruction prefetch buffer 251 holds the upper 16-bit instruction code of the 32-bit DSP instruction in the lower area LPB2, and the instruction prefetch buffer 250 holds the lower 16-bit instruction code of the 32-bit DSP instruction in the upper area UPB1. When the selector 252 selects the output of the port Pa, the 32-bit DSP instruction can be set in the instruction register 25.

図17において253は、前記命令プリフェッチバッファのラッチ制御信号φ1,φ2、命令レジスタ25のラッチ制御信号φ3、及び前記選択制御信号φ4を生成する制御ロジックである。この制御ロジック253は、16ビット命令か32ビット命令かを示す制御信号248と命令プリフェッチバッファ250,251の各領域に実行されないまま残っている命令コードの状態に従って、前記制御信号φ1〜φ4を生成する。この制御ロジック253は命令フェッチのための制御論理の一部を構成する。尚、前記制御信号248は、第1のデコード回路240が命令レジスタ25の上位領域UIRから供給される命令コードデータの上位側6ビットをデコードして生成されるものであり、その詳細については後述する。   In FIG. 17, reference numeral 253 denotes control logic for generating the latch control signals φ1 and φ2 of the instruction prefetch buffer, the latch control signal φ3 of the instruction register 25, and the selection control signal φ4. The control logic 253 generates the control signals φ1 to φ4 in accordance with the control signal 248 indicating whether the instruction is a 16-bit instruction or a 32-bit instruction and the state of the instruction code that remains unexecuted in each area of the instruction prefetch buffers 250 and 251. To do. This control logic 253 constitutes a part of control logic for instruction fetch. The control signal 248 is generated when the first decoding circuit 240 decodes the upper 6 bits of the instruction code data supplied from the upper area UIR of the instruction register 25, and details thereof will be described later. To do.

前記制御論理253による命令レジスタ25への命令コードデータのセットは以下のようにされる。外部からの命令フェッチは、CPUコア2の命令フェッチタイミング(例えば後述する複数段のパイプラインステージにおける命令フェッチステージIF)において、命令プリフェッチバッファ250に32ビットの命令コードデータを新たに格納する余地がある場合に行われる。そのタイミングで命令フェッチが行われるときは、命令プリフェッチバッファ251にはまだ実行されていない命令が残っている。命令プリフェッチバッファ251の領域UPB2,LPB2に格納されている命令コードの双方がまだ実行されていない第1の状態の場合には、命令プリフェッチバッファ251の32ビットの出力がポートPbを介してセレクタ252で選択されて命令レジスタ25にセットされる。一方、命令プリフェッチバッファ251の下位領域LPB2に格納されている命令コードだけがまだ実行されていない第2の状態の場合には、命令プリフェッチバッファ250にプリフェッチした上位領域UPB1と命令プリフェッチバッファ251の下位領域LPB2の命令コードデータがポートPaを介して命令レジスタ25にセットされる。   The instruction code data is set in the instruction register 25 by the control logic 253 as follows. In the instruction fetch from the outside, there is room for newly storing 32-bit instruction code data in the instruction prefetch buffer 250 at the instruction fetch timing of the CPU core 2 (for example, an instruction fetch stage IF in a plurality of pipeline stages described later). Done in some cases. When an instruction fetch is performed at that timing, an instruction that has not yet been executed remains in the instruction prefetch buffer 251. In the first state where both the instruction codes stored in the areas UPB2 and LPB2 of the instruction prefetch buffer 251 are not yet executed, the 32-bit output of the instruction prefetch buffer 251 is sent to the selector 252 via the port Pb. Is selected and set in the instruction register 25. On the other hand, in the second state where only the instruction code stored in the lower area LPB2 of the instruction prefetch buffer 251 is not yet executed, the upper area UPB1 prefetched to the instruction prefetch buffer 250 and the lower area of the instruction prefetch buffer 251 are displayed. The instruction code data in the area LPB2 is set in the instruction register 25 via the port Pa.

前記第1の状態において、命令レジスタ25の上位領域UIRにセットされた命令コードデータをデコード回路240がデコードした結果、それが32ビット命令を構成するものである場合には、そのとき、命令プリフェッチバッファ250にプリフェッチされた32ビットの命令コードデータがそのまま命令プリフェッチバッファ251に転送される。一方、デコード結果によって16ビット命令であることが検出されたときは、命令プリフェッチバッファ250から次段のバッファ251へのデータシフトは行われない。   In the first state, when the decode circuit 240 decodes the instruction code data set in the upper area UIR of the instruction register 25, when it constitutes a 32-bit instruction, the instruction prefetch is performed at that time. The 32-bit instruction code data prefetched to the buffer 250 is transferred to the instruction prefetch buffer 251 as it is. On the other hand, when it is detected from the decoding result that the instruction is a 16-bit instruction, data shift from the instruction prefetch buffer 250 to the next-stage buffer 251 is not performed.

前記第2の状態では、ポートPaを介する命令レジスタ25へのデータセットの後、命令プリフェッチバッファ250にプリフェッチされている32ビットの命令コードデータは、そのまま命令プリフェッチバッファ251にシフトされてセットされる。このシフトセット後、命令プリフェッチバッファ250に未だ実行されていない命令コードデータが存在しないならば、命令プリフェッチバッファ250には、次の命令フェッチタイミングで命令コードデータがプリフェッチされる。   In the second state, after the data is set to the instruction register 25 via the port Pa, the 32-bit instruction code data prefetched to the instruction prefetch buffer 250 is shifted and set to the instruction prefetch buffer 251 as it is. . After this shift set, if there is no instruction code data not yet executed in the instruction prefetch buffer 250, the instruction code data is prefetched into the instruction prefetch buffer 250 at the next instruction fetch timing.

このような制御により、命令フェッチタイミングの後には、まだ処理されていない命令コードデータが命令レジスタ25にセットされる。このとき、実行されるべき命令が、16ビットCPU命令、16ビットDSP命令又は32ビットDSP命令の何れであっても、その上位側16ビットは必ず第1のデコード回路240に供給されることになる。   By such control, instruction code data not yet processed is set in the instruction register 25 after the instruction fetch timing. At this time, regardless of whether the instruction to be executed is a 16-bit CPU instruction, a 16-bit DSP instruction, or a 32-bit DSP instruction, the upper 16 bits are always supplied to the first decoding circuit 240. Become.

図6で説明したコード変換回路242は、図17ではセレクタ242Aとコード変換ロジック242Bによって構成される。また、第1のデコード回路240は、図6の説明ではそれがデコードした命令コードが16ビット命令であるか否かによってそのレベルが制御される制御信号245,246を生成したが、図17の例では、それがデコードした命令コードが16ビット命令であるのか32ビット命令(本実施例において32ビット命令はDSP命令である)であるのかを識別するための制御信号248を出力する。セレクタ242Aは、制御信号248が16ビット命令を意味するときは、ノーオペレーションコードNOPを選択してコード変換ロジック242Bに供給し、制御信号248が32ビットDSP命令であることを意味するときは、命令レジスタ25の下位領域LIRの命令コードをコード変換ロジック242Bに供給する。コード変換ロジック242Bは、特に制限されないが、命令レジスタ25の下位領域LIRの命令コードデータの一部例えばレジスタ選択のためのコード情報をDSPエンジン3のデコーダ34に適する形態に修正して出力する。   The code conversion circuit 242 described with reference to FIG. 6 includes a selector 242A and code conversion logic 242B in FIG. Further, in the description of FIG. 6, the first decoding circuit 240 generates the control signals 245 and 246 whose levels are controlled depending on whether or not the instruction code decoded by the first decoding circuit 240 is a 16-bit instruction. In the example, a control signal 248 for identifying whether the decoded instruction code is a 16-bit instruction or a 32-bit instruction (in this embodiment, the 32-bit instruction is a DSP instruction) is output. When the control signal 248 means a 16-bit instruction, the selector 242A selects and supplies the no-operation code NOP to the code conversion logic 242B, and when the control signal 248 means a 32-bit DSP instruction, The instruction code in the lower area LIR of the instruction register 25 is supplied to the code conversion logic 242B. Although not particularly limited, the code conversion logic 242B corrects and outputs a part of the instruction code data in the lower area LIR of the instruction register 25, for example, code information for register selection, to a form suitable for the decoder 34 of the DSP engine 3.

図17の実施例において第1のデコード回路240は命令レジスタ25の上位領域UIRが保持する16ビットの命令コードデータを解読し、これによって得られたCPUデコード信号243を第2のデコード回路243に与え、また、DSPデコード信号244をデコーダ34に与える。CPUデコード信号243は、CPU命令及びDSP命令の何れにおいても有意とされ、第2のデコード回路241に供給される。第2のデコード回路241は、CPUデコード信号243をデコードして、CPUコア2が行うべきアドレス演算やデータ演算のための制御情報、及び内部メモリX−ROM4,Y−ROM5,X−RAM,Y−RAMそして外部メモリをアクセスしたりするためのアドレスバスやデータバスの選択制御情報等を出力する。前述の通り、DSP命令に対しても、それに必要なアドレス演算やデータパスの選択はCPUコア2が行う。   In the embodiment of FIG. 17, the first decoding circuit 240 decodes the 16-bit instruction code data held in the upper area UIR of the instruction register 25 and sends the CPU decode signal 243 obtained thereby to the second decoding circuit 243. The DSP decode signal 244 is supplied to the decoder 34. The CPU decode signal 243 is significant in both the CPU instruction and the DSP instruction and is supplied to the second decode circuit 241. The second decode circuit 241 decodes the CPU decode signal 243 to control information for address calculation and data calculation to be performed by the CPU core 2, and internal memories X-ROM 4, Y-ROM 5, X-RAM, Y Outputs address bus and data bus selection control information for accessing the RAM and external memory. As described above, the CPU core 2 performs address calculation and data path selection necessary for a DSP instruction.

前記DSPデコード信号244は、前述の通り、第1のデコード回路240に供給される命令コードがDSP命令のためのコードデータである場合に有意とされるデコード信号である。有意DSPデコード信号244は、例えば、CPUコア2で行われるアドレス演算に従ってアクセスされるメモリとの間でデータの受け渡しを行うDSPエンジン3内のレジスタ等の指定情報を含んでいる。第1のデコード回路240に供給される命令コードがCPU命令である場合には、DSPデコード信号244は無効を意味するコードにされる。   As described above, the DSP decode signal 244 is a decode signal that is significant when the instruction code supplied to the first decode circuit 240 is code data for a DSP instruction. The significant DSP decode signal 244 includes, for example, designation information such as a register in the DSP engine 3 that exchanges data with a memory that is accessed according to an address calculation performed in the CPU core 2. When the instruction code supplied to the first decoding circuit 240 is a CPU instruction, the DSP decode signal 244 is set to a code meaning invalid.

ここで、マイクロコンピュータ1の命令セットに含まれる前記DSP命令のコードを更に詳述する。図18及び図19は夫々16ビットのDSP命令の命令コードが示され、図20及び図21には32ビットのDSP命令の命令コードが示される。前述のように、DSP命令は、命令コードの最上位側の4ビットが”1111”に割り当てられ、命令コードの最上位側の6ビットが”111100”及び”111101”は16ビットのDSP命令、命令コードの最上位側の6ビットが”111110”の命令は32ビットのDSP命令とされる。   Here, the code of the DSP instruction included in the instruction set of the microcomputer 1 will be described in more detail. FIGS. 18 and 19 show instruction codes of 16-bit DSP instructions, respectively, and FIGS. 20 and 21 show instruction codes of 32-bit DSP instructions. As described above, in the DSP instruction, the most significant 4 bits of the instruction code are assigned to “1111”, and the most significant 6 bits of the instruction code are “111100” and “111101” are 16-bit DSP instructions, An instruction whose uppermost 6 bits of the instruction code is “111110” is a 32-bit DSP instruction.

図18の第1欄(X Side of Data Transfer)に示される16ビットDSP命令の命令フォーマットはXメモリ(X−ROM4,X−RAM6)とDSPエンジン3の内蔵レジスタとの間におけるデータ転送命令であり、第2欄(Y Side of Data Transfer)に示される命令フォーマットはYメモリ(Y−ROM5,Y−RAM7)とDSPエンジン3の内蔵レジスタとの間におけるデータ転送命令である。上記命令フォーマットにおいて、Ax,AyはCPUコア2に含まれるレジスタアレイ209(図3参照)に含まれるレジスタを指定し、Ax=”0”はレジスタR4を指定し、Ax=”1”はレジスタR5を指定し、Ay=”0”はレジスタR6を指定し、Ay=”1”はレジスタR7を指定する。Dx,Dy,DaはDSPエンジンに含まれるレジスタを指定し、Dx=”0”はレジスタX0、Dx=”1”はレジスタX1、Dy=”0”はレジスタY0、Dy=”1”はレジスタY1、Da=”0”はレジスタA0、Da=”1”はレジスタA1を夫々指定する。Ix,Iyはイミディエイト値を意味する。   The instruction format of the 16-bit DSP instruction shown in the first column (X Side of Data Transfer) in FIG. 18 is a data transfer instruction between the X memory (X-ROM 4, X-RAM 6) and the built-in register of the DSP engine 3. The instruction format shown in the second column (Y Side of Data Transfer) is a data transfer instruction between the Y memory (Y-ROM 5, Y-RAM 7) and the built-in register of the DSP engine 3. In the above instruction format, Ax and Ay designate a register included in the register array 209 (see FIG. 3) included in the CPU core 2, Ax = "0" designates the register R4, and Ax = "1" designates the register. R5 is designated, Ay = "0" designates the register R6, and Ay = "1" designates the register R7. Dx, Dy, Da specify registers included in the DSP engine, Dx = "0" is register X0, Dx = "1" is register X1, Dy = "0" is register Y0, Dy = "1" is register Y1, Da = "0" designates the register A0, and Da = "1" designates the register A1. Ix and Iy mean immediate values.

図19に示される16ビットDSP命令の命令フォーマットは、マイクロコンピュータ1の外部に接続された図示しないメモリとDSPエンジン3の内蔵レジスタとの間におけるデータ転送命令である。AsはCPUコア2に内蔵されたレジスタアレイ209(図3参照)に含まれるレジスタを指定し、DsはDSPエンジンに内蔵されるレジスタX1,X0,Y1,Y0,A1,A0やレジスタアレイ305(図4参照)に含まれるレジスタを指定する。   The instruction format of the 16-bit DSP instruction shown in FIG. 19 is a data transfer instruction between a memory (not shown) connected to the outside of the microcomputer 1 and a built-in register of the DSP engine 3. As designates a register included in a register array 209 (see FIG. 3) built in the CPU core 2, and Ds designates a register X1, X0, Y1, Y0, A1, A0 built in the DSP engine or a register array 305 ( The register included in (see FIG. 4) is designated.

32ビットDSP命令のフォーマットは、32ビットDSP命令であることを示すコード”111110”の領域(ビット31〜ビット26)、Aフィールド(ビット25〜ビット16)及びBフィールド(ビット15〜ビット0)に大別される。図20はAフィールドに着目した場合の当該フィールドのコードとそれに対応されるにニーモニックを示し、図21はBフィールドに着目した場合の当該フィールドのコードとそれに対応されるにニーモニックを示す。   The format of the 32-bit DSP instruction is a code “111110” area (bits 31 to 26) indicating that it is a 32-bit DSP instruction, an A field (bits 25 to 16), and a B field (bits 15 to 0). It is divided roughly into. FIG. 20 shows a mnemonic corresponding to the code of the field when focusing on the A field, and FIG. 21 shows a mnemonic corresponding to the code of the field when focusing on the B field.

図20に示されるAフィールドのコードは、図18に示される16ビットDSP命令のビット9〜ビット0のコードと同一であり、第20図の第1欄(X Side of Data Transfer)に示されるAフィールドのコードはXメモリ(X−ROM4,X−RAM6)とDSPエンジン3の内蔵レジスタとの間におけるデータ転送を規定し、第2欄(Y Side of Data Transfer)に示されるAフィールドのコードはYメモリ(Y−ROM5,Y−RAM7)とDSPエンジン3の内蔵レジスタとの間におけるデータ転送を規定する。当該Aフィールドに含まれるビットAx,Ay,Dx,Dy,Daが指定する内容は図18と全く同じである。   The code of the A field shown in FIG. 20 is the same as the code of bit 9 to bit 0 of the 16-bit DSP instruction shown in FIG. 18, and is shown in the first column (X Side of Data Transfer) of FIG. The A field code defines the data transfer between the X memory (X-ROM 4, X-RAM 6) and the built-in register of the DSP engine 3, and the A field code shown in the second column (Y Side of Data Transfer). Defines data transfer between the Y memory (Y-ROM5, Y-RAM7) and the built-in register of the DSP engine 3. The contents designated by the bits Ax, Ay, Dx, Dy, Da included in the A field are exactly the same as those in FIG.

図21に示されるBフィールドのコードは、DSPエンジン3の内部で行われる算術演算、論理演算、シフト演算、レジスタ間のロード/ストアなどの処理を規定する。例えば、DSPエンジン3の内部で行われる乗算(PMULS)、減算(PSUB)、加算(PADD)、丸め(PRND)、シフト(PSHL)、論理積(PAND)、排他的論理和(XOR)、論理和(OR)、インクリメント(PINC)、ディクリメント(PDEC)、クリア(CLR)等の演算や、DSPエンジン3の内部で行われるロード(PLDS)及びストア(PSTS)等を規定する。図21の第3欄(3 Operand Operation with Condition)は、条件付きのコードであり、その条件(if cc)としては、DC(データコンプリート)ビット(データの処理完了を示すビット)の論理値又は無視を選択することができる。   The code in the B field shown in FIG. 21 defines processing such as arithmetic operation, logical operation, shift operation, and load / store between registers performed in the DSP engine 3. For example, multiplication (PMULS), subtraction (PSUB), addition (PADD), rounding (PRND), shift (PSHL), logical product (PAND), exclusive logical sum (XOR), logical operation performed in the DSP engine 3 It defines operations such as sum (OR), increment (PINC), decrement (PDEC), clear (CLR), and loads (PLDS) and stores (PSTS) performed inside the DSP engine 3. The third column (3 Operand Operation with Condition) in FIG. 21 is a conditional code, and the condition (if cc) includes a logical value of a DC (data complete) bit (a bit indicating completion of data processing) or You can choose to ignore.

実際の32ビットDSP命令は、BフィールドのコードとAフィールドのコードとが任意に組み合わされて記述される。即ち、32ビットのDSP命令は、マイクロコンピュータ1の内部又は外部から演算対象とされるオペランドをフェッチし、それをDSPエンジン3の内部で演算する処理を規定する。上述の説明から明らかなように、オペランドフェッチのためのアドレス演算やデータパスの選択はCPU2によって行われる。32ビットDSP命令においてオペランドフェッチを規定するAフィールドのコードは16ビットのDSP命令と同じである。16ビットDSP命令は、DSPエンジン3内部のレジスタに対する初期設定などに利用される。   An actual 32-bit DSP instruction is described by arbitrarily combining a B field code and an A field code. That is, the 32-bit DSP instruction defines a process of fetching an operand to be operated from inside or outside the microcomputer 1 and calculating it inside the DSP engine 3. As is apparent from the above description, the address calculation and data path selection for operand fetch are performed by the CPU 2. The code of the A field that defines the operand fetch in the 32-bit DSP instruction is the same as that of the 16-bit DSP instruction. The 16-bit DSP instruction is used for initial setting for a register in the DSP engine 3.

図17等に示される構成を参照しても明らかなように、32ビットDSP命令のAフィールドのコードデータは命令レジスタ25における上位領域UIRにセットされる。また、Aフィールドと同一のフォーマットを有する16ビットDSP命令も上位領域UIRにセットされる。したがって、その何れにおいても、CPUコア2は、必要なアドレス演算及びデータフェッチ(若しくはオペランドフェッチ)に必要なデータパスの選択を同様に行えばよい。換言すれば、32ビットDSP命令を実行するためのデータフェッチ(若しくはオペランドフェッチ)と16ビットDSP命令を実行するためのデータフェッチ(若しくはオペランドフェッチ)とに必要とされるデコード回路240、241が共通化され、この点においても、マイクロコンピュータ1の論理規模の縮小に寄与する。32ビットDSP命令のAフィールドが指定するDSPエンジン3の内部レジスタの指定情報や16ビットDSP命令が指定するDSPエンジン3の内部レジスタの指定情報は、前記DSPデコード信号244としてDSPエンジン3に与えられる。DSPデコード信号244を有意とするか否かは、前記第1のデコード回路240が上位領域UIRの最上位側の4ビットをデコードして決定する。   As apparent from the configuration shown in FIG. 17 and the like, the code data of the A field of the 32-bit DSP instruction is set in the upper area UIR in the instruction register 25. A 16-bit DSP instruction having the same format as the A field is also set in the upper area UIR. Therefore, in any of them, the CPU core 2 may similarly select a data path necessary for necessary address calculation and data fetch (or operand fetch). In other words, the decoding circuits 240 and 241 required for the data fetch (or operand fetch) for executing the 32-bit DSP instruction and the data fetch (or operand fetch) for executing the 16-bit DSP instruction are common. This also contributes to the reduction of the logical scale of the microcomputer 1. The designation information of the internal register of the DSP engine 3 designated by the A field of the 32-bit DSP instruction and the designation information of the internal register of the DSP engine 3 designated by the 16-bit DSP instruction are given to the DSP engine 3 as the DSP decode signal 244. . Whether the DSP decode signal 244 is significant or not is determined by the first decoding circuit 240 by decoding the most significant 4 bits of the upper area UIR.

次に、本実施例のマイクロコンピュータにおける演算制御の内容を図7乃至図16の命令実行タイミングチャートを参照しながら説明する。本実施例のマイクロコンピュータ1は、IF,ID,EX,MA,WB/DSPステージの5段パイプライン動作を行なっている。IFは命令フェッチステージ、IDは命令デコードステージ、EXは演算実行ステージ、MAはメモリアクセスステージ、WB/DSPはメモリから取得したデータをCPUコア2のレジスタに取り込むステージまたはDSPエンジン3がDSP命令を実行するステージである。各図においてInstruction/Data Accessは内部バスIAB,IDBを介するメモリアクセスを意味し、アクセス対象は内蔵メモリ4〜7の他にマイクロコンピュータ1の外部メモリも可能にされる。X,Y Mem. Accessは内部バスXAB,XDBやYAB,YDBを介するメモリアクセスを意味し、アクセス対象は内蔵メモリ4〜7に限られる。Isnt.Fetchは命令レジスタ(IR)25への命令フェッチタイミング、Fetch.Regは命令レジスタ(IR)25、Source Data Outはソースデータ出力、Destination Inはディスティネーションデータの入力タイミング、Destination Registerはディスティネーションレジスタ、をそれぞれ意味する。Pointer Reg.はポインターレジスタ、Address Calc.はアドレス演算、Data Fetchはデータフェッチ、DSP Control signal Decord Timingはデコーダ34によるDSP制御信号20のデコードタイミングを意味する。   Next, the contents of the arithmetic control in the microcomputer of the present embodiment will be described with reference to the instruction execution timing charts of FIGS. The microcomputer 1 of this embodiment performs a five-stage pipeline operation of IF, ID, EX, MA, and WB / DSP stages. IF is an instruction fetch stage, ID is an instruction decode stage, EX is an operation execution stage, MA is a memory access stage, WB / DSP is a stage for fetching data acquired from memory into a register of CPU core 2, or DSP engine 3 receives a DSP instruction The stage to execute. In each figure, Instruction / Data Access means memory access via the internal buses IAB and IDB, and the access target can be an external memory of the microcomputer 1 in addition to the built-in memories 4-7. X, Y Mem. Access means memory access via the internal buses XAB, XDB, YAB, YDB, and the access target is limited to the built-in memories 4-7. Isnt.Fetch is the instruction fetch timing to the instruction register (IR) 25, Fetch.Reg is the instruction register (IR) 25, Source Data Out is the source data output, Destination In is the destination data input timing, and Destination Register is the destination Each means a register. Pointer Reg. Means a pointer register, Address Calc. Means an address operation, Data Fetch means data fetch, and DSP Control signal Decord Timing means a decoding timing of the DSP control signal 20 by the decoder 34.

図7はCPUコア2内部のALU演算命令の実行タイムチャートを示す。ここではALU演算命令として、ADD Rm, Rn を一例とする。   FIG. 7 shows an execution time chart of the ALU operation instruction in the CPU core 2. Here, ADD Rm, Rn is taken as an example as an ALU operation instruction.

IFステージ直前におけるクロック信号Clock2の立ち上がりのタイミングに同期して、実行すべき命令(ADD Rm, Rn )が格納されているアドレスがアドレスバスIABに出力される。Instruction/Data Mem. Accessでは、IFステージでメモリアクセス動作が行われる。具体的にはクロック信号Clock1の立ち上がりからクロック信号Clock2の立ち上りの期間でアドレスバスIABで指定されたアドレスのデコードが行われ、IFステージのクロック信号Clock2の立ち上がりから次のクロック信号Clock1の立ち上がりの期間で命令アクセスが行われる。そのためIFステージのクロック信号Clock2の立ち上がりからデータバスIDBに命令が出力される。データバスIDBに出力された命令は、IDステージのクロック信号Clock1の立ち上がりのタイミングに同期して命令レジスタ(IR)25に取り込まれる。IDステージでは命令レジスタ(IR)25に取り込まれたデータのデコードが行なわれる。EXステージのクロック信号Clock1の立ち上がりのタイミングに同期して、ソースデータが格納されているレジスタがアクセスされ、CPUコア2の内部バスA1,B1にレジスタの値が出力される。命令ADD Rm, Rnでは、RmとRnに指定したレジスタがソースレジスタとされる。RmとRnはCPUコア2の内部の任意のレジスタ(図3では、レジスタ209内の任意のレジスタ、A0x,A1x,Ix,A0y,A1y,Iy、RmおよびRnとして指定可能)を指定できる。CPUコア2の内部バスA1,B1に出力されたデータは算術論理演算器(ALU)213で加算演算が行われ、その結果はCPUコア2の内部バスC1に出力される。CPUコア2の内部バスC1に出力された演算結果は、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してディステネーションレジスタ(ディステネーションレジスタは、ADD Rm, Rn 命令でRnに指定したレジスタとされる)に格納される。このように、CPUコア2の内部のALU演算命令では、IF,ID,EXの3段のパイプラインステージで命令実行動作が完了する。   In synchronization with the rising timing of the clock signal Clock2 immediately before the IF stage, an address in which an instruction (ADD Rm, Rn) to be executed is stored is output to the address bus IAB. In Instruction / Data Mem. Access, a memory access operation is performed in the IF stage. Specifically, the address specified by the address bus IAB is decoded in the period from the rising edge of the clock signal Clock1 to the rising edge of the clock signal Clock2, and the period from the rising edge of the clock signal Clock2 in the IF stage to the next rising edge of the clock signal Clock1. Instruction access is performed at. Therefore, an instruction is output to the data bus IDB from the rise of the clock signal Clock2 of the IF stage. The instruction output to the data bus IDB is taken into the instruction register (IR) 25 in synchronization with the rising timing of the clock signal Clock1 of the ID stage. In the ID stage, the data fetched into the instruction register (IR) 25 is decoded. In synchronization with the rising timing of the clock signal Clock 1 of the EX stage, the register storing the source data is accessed, and the value of the register is output to the internal buses A 1 and B 1 of the CPU core 2. In the instructions ADD Rm and Rn, the registers specified in Rm and Rn are the source registers. Rm and Rn can designate any register in the CPU core 2 (in FIG. 3, any register in the register 209, A0x, A1x, Ix, A0y, A1y, Iy, Rm, and Rn can be designated). The data output to the internal buses A1 and B1 of the CPU core 2 is subjected to an addition operation by an arithmetic logic unit (ALU) 213, and the result is output to the internal bus C1 of the CPU core 2. The calculation result output to the internal bus C1 of the CPU core 2 is a destination register in synchronization with the rising timing of the clock signal Clock2 of the EX stage (the destination register is designated as Rn by an ADD Rm, Rn instruction) Stored in a register). As described above, in the ALU operation instruction in the CPU core 2, the instruction execution operation is completed in the three pipeline stages of IF, ID, and EX.

図8はメモリからCPUコア2へのデータ読み込み動作のタイムチャートを示す。メモリからCPUコア2へのデータ読み込み動作命令の一例として、MOV.L @Rm, Rnを例にとって動作説明をする。命令フェッチ(IF)、命令デコード(ID)までの動作は図7と同じなのでその部分の詳細な説明は省略する。   FIG. 8 shows a time chart of data reading operation from the memory to the CPU core 2. The operation will be described by taking MOV.L @Rm, Rn as an example of a data read operation instruction from the memory to the CPU core 2. Since the operations up to instruction fetch (IF) and instruction decode (ID) are the same as those in FIG. 7, detailed description thereof will be omitted.

EXステージのクロック信号Clock1の立ち上がりのタイミングに同期して、アドレスポインタとなるレジスタのデータはCPUコア2の内部バスA1に出力される。この例では、アドレスポインタとなるレジスタは、Rmで指定したレジスタになる。Rmに指定できるレジスタは、CPUコア2に含まれる任意のレジスタ(図3では、Reg.に含まれる任意のレジスタ、A0x,A1x,Ix,A0y,A1y,IyがRmとして指定可能)である。CPUコア2の内部バスA1に出力されたデータは、アドレスバッファ205に格納され、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してアドレスバスIABに出力される。一方CPUコア2の内部バスA1に出力されたデータは算術論理演算器(ALU)213で演算が行なわれる。この場合、算術論理演算器(ALU)213は0加算演算を行なう。その結果はCPUコア2の内部バスC1に出力される。CPUコア2の内部バスC1に出力された演算結果は、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してポインタレジスタ(この場合、Rmで指定されレジスタ)に格納される。Instruction/Data Mem. Accessでは、MAステージのクロック信号Clock1の立ち上がりからクロック信号Clock2の立ち上りの期間で、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期して、アドレスバスIABに出力したアドレスのデコードが行なわれ、MAステージのクロック信号Clock2の立ち上がりから次のクロック信号Clock1の立ち上がりの期間でデータアクセスを行なう。そのためMAステージのクロック信号Clock2の立ち上がりからデータバスIDBにデータが出力される。データバスIDBに出力されたデータは、WB/DSPステージのクロック信号Clock1の立ち上がりのタイミングに同期してCPUコア2に取り込まれ、CPUコア2の内部バスDWにデータが出力される。WB/DSPステージのクロック信号Clock2の立ち上がりのタイミングに同期してCPUコア2の内部バスDW上のデータがディステネーションレジスタに格納されて、動作を終了する。この例では、ディステネーションレジスタはRnに指定したレジスタになる。Rnに指定できるレジスタは、CPUコア2に含まれる任意のレジスタ(図3では、Reg.内の任意のレジスタ、A0x,A1x,Ix,A0y,A1y,IyがRnとして指定可能)である。以上のようにメモリからCPUコア2へのデータ読み込み動作命令では、IF,ID,EX,MA,WB/DSPの5段のパイプラインステージで命令実行動作が完了する。   In synchronization with the rising timing of the clock signal Clock 1 of the EX stage, the register data serving as the address pointer is output to the internal bus A 1 of the CPU core 2. In this example, the register serving as the address pointer is the register specified by Rm. Registers that can be specified as Rm are arbitrary registers included in the CPU core 2 (in FIG. 3, any register included in Reg., A0x, A1x, Ix, A0y, A1y, and Iy can be specified as Rm). The data output to the internal bus A1 of the CPU core 2 is stored in the address buffer 205 and output to the address bus IAB in synchronization with the rising timing of the clock signal Clock2 of the EX stage. On the other hand, the data output to the internal bus A1 of the CPU core 2 is operated by an arithmetic logic unit (ALU) 213. In this case, the arithmetic logic unit (ALU) 213 performs 0 addition operation. The result is output to the internal bus C1 of the CPU core 2. The calculation result output to the internal bus C1 of the CPU core 2 is stored in a pointer register (in this case, a register designated by Rm) in synchronization with the rising timing of the clock signal Clock2 of the EX stage. In Instruction / Data Mem. Access, the address output to the address bus IAB is decoded in synchronization with the rising timing of the EX stage clock signal Clock 2 in the period from the rising edge of the clock signal Clock 1 of the MA stage to the rising edge of the clock signal Clock 2. The data access is performed in the period from the rise of the clock signal Clock2 of the MA stage to the rise of the next clock signal Clock1. Therefore, data is output to the data bus IDB from the rise of the clock signal Clock2 of the MA stage. The data output to the data bus IDB is taken into the CPU core 2 in synchronization with the rising timing of the clock signal Clock 1 of the WB / DSP stage, and the data is output to the internal bus DW of the CPU core 2. The data on the internal bus DW of the CPU core 2 is stored in the destination register in synchronization with the rising timing of the clock signal Clock2 of the WB / DSP stage, and the operation ends. In this example, the destination register is a register designated as Rn. Registers that can be designated as Rn are any registers included in the CPU core 2 (in FIG. 3, any register in Reg., A0x, A1x, Ix, A0y, A1y, and Iy can be designated as Rn). As described above, in the data read operation instruction from the memory to the CPU core 2, the instruction execution operation is completed in the five pipeline stages of IF, ID, EX, MA, and WB / DSP.

図9はCPUコア2からメモリへのデータ書込み動作命令のタイムチャートを示す。CPUコア2からメモリへのデータ書込み動作命令の一例として、MOV.L Rm, @Rnを例にとって動作を説明する。命令フェッチ(IF)、命令デコード(ID)の動作は図8と同じなので、その部分の詳細な説明は省略する。   FIG. 9 shows a time chart of a data write operation instruction from the CPU core 2 to the memory. The operation will be described by taking MOV.L Rm, @Rn as an example of a data write operation command from the CPU core 2 to the memory. Since the instruction fetch (IF) and instruction decode (ID) operations are the same as those in FIG. 8, a detailed description thereof will be omitted.

EXステージのクロック信号Clock1の立ち上がりのタイミングに同期して、アドレスポインタとなるレジスタのデータがCPUコア2の内部バスA1に出力される。この例では、アドレスポインタとなるレジスタは、Rnで指定したレジスタになる。Rnに指定できるレジスタは、CPUコア2に含まれる任意のレジスタ(図3では、Reg.内の任意のレジスタ,A0x,A1x,Ix,A0y,A1y,IyがRnとして指定可能)である。CPUコア2の内部バスA1に出力されたデータは、アドレスバッファ205に格納され、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してアドレスバスIABに出力される。一方CPUコア2の内部バスA1に出力されたデータは算術論理演算器(ALU)213で演算が行われる。この場合、算術論理演算器(ALU)213は0加算演算を行なう。その演算結果はCPUコア2の内部バスC1に出力される。CPUコア2の内部バスC1に出力された演算結果は、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してポインタレジスタ(この場合、Rnで指定したレジスタ)に格納される。命令 MOV.L Rm, @Rnの場合、EXステージでアドレス演算を行なうと同時に、メモリへ書き込むべきデータをデータバスIDBに出力する準備が行われる。EXステージのクロック信号Clock1の立ち上がりのタイミングに同期して、メモリへ書き込むべきデータが格納されているレジスタよりCPUコア2の内部バスDRへ値が出力される。この例の場合、メモリへ書き込むべきデータが格納されているレジスタは、Rmで指定したレジスタになる。Rmに指定できるレジスタは、CPUコア2に含まれる任意のレジスタ(図3では、Reg.内の任意のレジスタ,A0x,A1x,Ix,A0y,A1y,IyがRmとして指定可能)である。CPUコア2の内部バスDRへ出力された値は、MAステージのクロック信号Clock2の立ち上がりのタイミングに同期してデータバスIDBに出力される。Instruction/Data Mem. Accessでは、MAステージのクロック信号Clock1の立ち上がりからクロック信号Clock2の立ち上りの期間で、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してアドレスバスIABに出力されたアドレスのデコードが行なわれ、MAステージのクロック信号Clock2の立ち上がりのタイミングに同期してデータバスIDBに出力されたデータが書込まれて、動作を終了する。メモリからCPUコア2へのデータ書込み動作命令では、CPUコア2としてはデータバスIDBにデータを出力した時点で動作が終了するので、IF,ID,EX,MAの4段のパイプラインステージで動作が完了する。   Data in a register serving as an address pointer is output to the internal bus A1 of the CPU core 2 in synchronization with the rising timing of the clock signal Clock1 of the EX stage. In this example, the register serving as the address pointer is the register specified by Rn. Registers that can be designated as Rn are any registers included in the CPU core 2 (in FIG. 3, any register in Reg., A0x, A1x, Ix, A0y, A1y, and Iy can be designated as Rn). The data output to the internal bus A1 of the CPU core 2 is stored in the address buffer 205 and output to the address bus IAB in synchronization with the rising timing of the clock signal Clock2 of the EX stage. On the other hand, the data output to the internal bus A1 of the CPU core 2 is operated by an arithmetic logic unit (ALU) 213. In this case, the arithmetic logic unit (ALU) 213 performs 0 addition operation. The calculation result is output to the internal bus C1 of the CPU core 2. The calculation result output to the internal bus C1 of the CPU core 2 is stored in a pointer register (in this case, a register designated by Rn) in synchronization with the rising timing of the clock signal Clock2 of the EX stage. In the case of the instruction MOV.L Rm, @Rn, an address calculation is performed at the EX stage, and at the same time, preparation for outputting data to be written to the memory to the data bus IDB is performed. A value is output to the internal bus DR of the CPU core 2 from a register storing data to be written to the memory in synchronization with the rising timing of the clock signal Clock1 of the EX stage. In this example, the register storing data to be written to the memory is a register specified by Rm. Registers that can be designated as Rm are any registers included in the CPU core 2 (in FIG. 3, any register in Reg., A0x, A1x, Ix, A0y, A1y, and Iy can be designated as Rm). The value output to the internal bus DR of the CPU core 2 is output to the data bus IDB in synchronization with the rising timing of the clock signal Clock2 of the MA stage. In the Instruction / Data Mem. Access, the address output to the address bus IAB is decoded in synchronization with the rising timing of the EX stage clock signal Clock 2 in the period from the rising edge of the clock signal Clock 1 of the MA stage to the rising edge of the clock signal Clock 2. The data output to the data bus IDB is written in synchronization with the rising timing of the clock signal Clock2 of the MA stage, and the operation is terminated. In the data write operation command from the memory to the CPU core 2, the operation ends when the data is output to the data bus IDB as the CPU core 2, so that it operates in four pipeline stages of IF, ID, EX, and MA. Is completed.

図10はDSP命令を実行するときのタイムチャートを示す。DSP命令の一例として、PADDC Sx, Sy, Dz NOPX NOPY を例にとって動作説明を行う。この命令は、DSPエンジン3内のレジスタに格納されているデータの加算を行ない、DSPエンジン3とX-ROM4やX-RAM6、及びY-ROM5やY-RAM7との間でのデータ転送は行なわないという命令である。   FIG. 10 shows a time chart when the DSP instruction is executed. As an example of the DSP instruction, the operation will be described using PADDC Sx, Sy, Dz NOPX NOPY as an example. This instruction adds the data stored in the register in the DSP engine 3 and transfers data between the DSP engine 3 and the X-ROM 4 and X-RAM 6 and the Y-ROM 5 and Y-RAM 7. There is no order.

命令フェッチの動作は図7と同じなのでその部分の詳細な説明は省略する。IDステージでは、クロック信号Clock1からクロック信号Clock2の期間でCPUコア2で取り込んだ命令コードのデコードが行なわれ、IDステージのクロック信号Clock2のタイミングで命令コードをデコードした結果がDSP制御信号20としてDSPエンジン3に出力される。DSPエンジン3では、CPUコア2よりDSP制御信号20を入力すると、MAステージまでの期間で入力したDSP制御信号20をデコードする。WB/DSPステージのクロック信号Clock1の立ち上がりのタイミングに同期して、ソースデータが格納されているレジスタがアクセスされ、DSPエンジン3の内部バスA2,B2にレジスタの値が出力される。この例では、ソースデータが格納されているレジスタは、SxおよびSyで指定したレジスタになる。SxおよびSyに指定できるレジスタは、DSPエンジン3内部の任意のレジスタ(図4では、Reg.内の任意のレジスタがSxおよびSyとして指定可能)である。DSPエンジン3の内部バスA2,B2に出力されたデータは算術論理演算器(ALU)302で演算が行なわれ、その結果はDSPエンジン3の内部バスC2に出力される。DSPエンジン3の内部バスC2に出力された演算結果は、WB/DSPステージのクロック信号Clock2の立ち上がりのタイミングに同期してディステネーションレジスタに格納される。この例では、ディステネーションレジスタは、Dzで指定されたレジスタになる。Dzに指定できるレジスタは、DSPエンジン3内部の任意のレジスタ(図4では、Reg.内の任意のレジスタ)である。以上のようなDSP命令では、IF,ID,EX,MA,WB/DSPの5段のパイプラインステージで動作が完了する。   Since the instruction fetch operation is the same as in FIG. 7, a detailed description thereof is omitted. In the ID stage, the instruction code fetched by the CPU core 2 is decoded during the period from the clock signal Clock 1 to the clock signal Clock 2, and the result of decoding the instruction code at the timing of the clock signal Clock 2 of the ID stage is the DSP control signal 20 as a DSP. It is output to the engine 3. In the DSP engine 3, when the DSP control signal 20 is input from the CPU core 2, the DSP control signal 20 input in the period up to the MA stage is decoded. In synchronization with the rising timing of the clock signal Clock 1 of the WB / DSP stage, the register storing the source data is accessed, and the value of the register is output to the internal buses A 2 and B 2 of the DSP engine 3. In this example, the register storing the source data is a register specified by Sx and Sy. Registers that can be designated as Sx and Sy are arbitrary registers within the DSP engine 3 (in FIG. 4, any register in Reg. Can be designated as Sx and Sy). The data output to the internal buses A 2 and B 2 of the DSP engine 3 is operated by an arithmetic logic unit (ALU) 302, and the result is output to the internal bus C 2 of the DSP engine 3. The calculation result output to the internal bus C2 of the DSP engine 3 is stored in the destination register in synchronization with the rising timing of the clock signal Clock2 of the WB / DSP stage. In this example, the destination register is a register specified by Dz. A register that can be designated as Dz is an arbitrary register in the DSP engine 3 (an arbitrary register in Reg. In FIG. 4). With the DSP instruction as described above, the operation is completed in five pipeline stages of IF, ID, EX, MA, and WB / DSP.

図11はX,Yメモリ4〜7からDSPエンジン3へのデータ読み込み動作命令のタイムチャートを示す。X,Yメモリ4〜7からDSPエンジン3へのデータ読み込み動作命令の一例として、MOVX.W @Ax, Dx MOVY.W @Ay, Dy を例にとってその動作を説明する。この命令は、AxおよびAyで指定したアドレスに格納されているデータをDxおよびDyで指定したレジスタに転送するという命令である。命令フェッチ、命令デコードの動作は図10と同じなのでその部分の詳細な説明は省略する。   FIG. 11 shows a time chart of data read operation commands from the X and Y memories 4 to 7 to the DSP engine 3. As an example of a data read operation command from the X, Y memories 4 to 7 to the DSP engine 3, the operation will be described by taking MOVX.W @Ax, Dx MOVY.W @Ay, Dy as an example. This instruction is an instruction to transfer data stored at an address designated by Ax and Ay to a register designated by Dx and Dy. Since the instruction fetch and instruction decode operations are the same as those in FIG. 10, a detailed description thereof will be omitted.

X,Yメモリ4〜7からDSPエンジン3へのデータ読み込み動作命令を実行する場合、アクセスするメモリのアドレスはCPUコア2が生成する。そのためEXステージにおけるクロック信号Clock1の立ち上がりのタイミングに同期して、アクセスすべきアドレスが格納されているレジスタがアクセスされ、CPUコア2の内部バスA1〜A2にレジスタの値が出力される。この例では、アクセスすべきアドレスが格納されているレジスタは、Ax,Ayで指定したレジスタになる。Axに指定できるレジスタはCPUコア2に含まれるレジスタA0x,A1xであり、Ayに指定できるレジスタはCPUコア2に含まれるレジスタA0y,A1yである。CPUコア2の内部バスA1〜A2に出力されたデータは、メモリアドレスバッファ(MABX,MABY)に格納され、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してアドレスバスXAB,YABに出力される。一方CPUコア2の内部バスA1〜A2に出力されたデータはALU213,PAU212でアドレス演算が行なわれる。この場合、ALU213およびPAU212は0加算演算を行なう。その演算結果はCPUコア2の内部バスC1及びC2に出力される。CPUコア2の内部バスC1及びC2に出力された演算結果は、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してポインタレジスタ(この場合、AxおよびAyで指定したレジスタ)に格納される。X,Yメモリ4〜7では、MAステージのクロック信号Clock1の立ち上がりからクロック信号Clock2の立ち上りの期間で、EXステージクロック信号Clock2の立ち上がりのタイミングでアドレスバスXAB,YABに出力されたアドレスのデコードが行なわれ、MAステージのクロック信号Clock2の立ち上がりから次のクロック信号Clock1の立ち上がりの期間でデータアクセスが行なわれる。そのためMAステージのクロック信号Clock2の立ち上がりからデータバスXDB,YDBにデータが出力される。データバスXDB,YDBに出力されたデータは、WB/DSPステージのクロック信号Clock1の立ち上がりのタイミングに同期してDSPエンジン3に取り込まれ、DSPエンジン3の内部バスD1,D2にデータが供給される。WB/DSPステージのクロック信号Clock2の立ち上がりのタイミングに同期してDSPエンジン3の内部バスD1,D2上のデータがディステネーションレジスタに格納されて、動作を終了する。この例では、ディステネーションレジスタはDxおよびDyに指定したレジスタになる。Dxに指定できるレジスタは、DSPエンジン3に含まれるレジスタX0,X1であり、Dyに指定できるレジスタは、DSPエンジン3に含まれるレジスタY0,Y1である。以上のようにメモリからDSPエンジン3へのデータ読み込み動作命令では、IF,ID,EX,MA,WB/DSPの5段のパイプラインステージで動作が完了する。斯る並列的なデータ読込み動作は、相互に独立したバスXAB,XDBとYAB,YDBとを介してCPUコア2がX,Yメモリ4〜7をアクセスできるようになっているからである。   When a data read operation instruction from the X, Y memories 4 to 7 to the DSP engine 3 is executed, the CPU core 2 generates an address of the memory to be accessed. Therefore, in synchronization with the rising timing of the clock signal Clock 1 in the EX stage, the register storing the address to be accessed is accessed, and the value of the register is output to the internal buses A 1 to A 2 of the CPU core 2. In this example, the register storing the address to be accessed is a register designated by Ax and Ay. Registers that can be specified as Ax are registers A0x and A1x included in the CPU core 2, and registers that can be specified as Ay are registers A0y and A1y included in the CPU core 2. Data output to the internal buses A1 to A2 of the CPU core 2 is stored in the memory address buffer (MABX, MABY) and output to the address buses XAB, YAB in synchronization with the rising timing of the clock signal Clock2 of the EX stage. The On the other hand, the data output to the internal buses A1 to A2 of the CPU core 2 is subjected to address calculation by the ALU 213 and PAU 212. In this case, the ALU 213 and the PAU 212 perform 0 addition operation. The calculation result is output to the internal buses C1 and C2 of the CPU core 2. The calculation results output to the internal buses C1 and C2 of the CPU core 2 are stored in a pointer register (in this case, registers designated by Ax and Ay) in synchronization with the rising timing of the clock signal Clock2 of the EX stage. In the X and Y memories 4 to 7, the addresses output to the address buses XAB and YAB are decoded at the rising timing of the EX stage clock signal Clock2 in the period from the rising edge of the clock signal Clock1 of the MA stage to the rising edge of the clock signal Clock2. The data access is performed during the period from the rise of the clock signal Clock2 of the MA stage to the rise of the next clock signal Clock1. Therefore, data is output to the data buses XDB and YDB from the rise of the clock signal Clock2 of the MA stage. The data output to the data buses XDB and YDB is taken into the DSP engine 3 in synchronization with the rising timing of the clock signal Clock 1 of the WB / DSP stage, and the data is supplied to the internal buses D 1 and D 2 of the DSP engine 3. . Data on the internal buses D1 and D2 of the DSP engine 3 are stored in the destination register in synchronization with the rising timing of the clock signal Clock2 of the WB / DSP stage, and the operation ends. In this example, the destination register is a register designated as Dx and Dy. Registers that can be specified as Dx are registers X0 and X1 included in the DSP engine 3, and registers that can be specified as Dy are registers Y0 and Y1 included in the DSP engine 3. As described above, in the data read operation instruction from the memory to the DSP engine 3, the operation is completed in five pipeline stages of IF, ID, EX, MA, and WB / DSP. This is because such a parallel data reading operation allows the CPU core 2 to access the X and Y memories 4 to 7 via the mutually independent buses XAB and XDB and YAB and YDB.

図12はDSPエンジン3からX,Yメモリ6,7へのデータ書込み動作のタイムチャートを示す。DSPエンジン3からX,Yメモリ6,7へのデータ書込み動作命令の一例として、MOVX.W Da, @Ax MOVY.W Da, @Ay を例にとってその動作を説明をする。この命令は、Daで指定したレジスタに格納されているデータをAxおよびAyで指定したレジスタに格納されているアドレスに転送するという命令である。   FIG. 12 shows a time chart of a data write operation from the DSP engine 3 to the X and Y memories 6 and 7. As an example of a data write operation instruction from the DSP engine 3 to the X, Y memories 6 and 7, the operation will be described by taking MOVX.W Da, @Ax MOVY.W Da, @Ay as an example. This instruction is an instruction to transfer the data stored in the register designated by Da to the address stored in the register designated by Ax and Ay.

命令フェッチ、命令デコードの動作は図11と同じなのでその部分の詳細な説明は省略する。DSPエンジン3からX,Yメモリ6,7へのデータ書込み動作命令を実行する場合、アクセスされるべきメモリアドレスはCPUコア2が生成する。そのためEXステージにおけるクロック信号Clock1の立ち上がりのタイミングに同期して、アクセスすべきアドレスが格納されているレジスタがアクセスされ、CPUコア2の内部バスA1〜A2にレジスタの値が出力される。この例では、アクセスすべきアドレスが格納されているレジスタは、Ax,Ayで指定したレジスタになる。Axに指定できるレジスタはCPUコア2に含まれるレジスタA0x,A1xであり、Ayに指定できるレジスタはCPUコア2に含まれるレジスタA0y,A1yである。CPUコア2の内部バスA1,A2に出力されたデータは、メモリアドレスバッファ(MABX,MABY)に格納され、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してアドレスバスXAB,YABに出力される。   Since the instruction fetch and instruction decode operations are the same as those in FIG. 11, detailed description thereof will be omitted. When executing a data write operation instruction from the DSP engine 3 to the X and Y memories 6 and 7, the CPU core 2 generates a memory address to be accessed. Therefore, in synchronization with the rising timing of the clock signal Clock 1 in the EX stage, the register storing the address to be accessed is accessed, and the value of the register is output to the internal buses A 1 to A 2 of the CPU core 2. In this example, the register storing the address to be accessed is a register designated by Ax and Ay. Registers that can be specified as Ax are registers A0x and A1x included in the CPU core 2, and registers that can be specified as Ay are registers A0y and A1y included in the CPU core 2. The data output to the internal buses A1 and A2 of the CPU core 2 is stored in the memory address buffer (MABX, MABY) and output to the address buses XAB and YAB in synchronization with the rising timing of the clock signal Clock2 of the EX stage. The

MAステージのクロック信号Clock1の立ち上がりのタイミングに同期して、転送されるべきデータが格納されているDSPエンジン3の内部レジスタがアクセスされ、DSPエンジン3の内部バスD1,D2に当該レジスタの値が出力され、それらがメモリデータバッファ(MDBX,MDBY)に格納される。この例の場合、転送されるべきデータが格納されているDSPエンジン3の内部レジスタはDaで指定されたレジスタになる。Daで指定できるレジスタは、DSPエンジン3に含まれるレジスタA0及びA1である。MAステージのクロック信号Clock2の立ち上がりのタイミングに同期して、メモリデータバッファ(MDBX,MDBY)に格納されたデータはデータバスXDB,YDBに出力される。X,Yメモリ6,7では、MAステージのクロック信号Clock1の立ち上がりからクロック信号Clock2の立ち上りの期間で、EXステージクロック信号Clock2の立ち上がりのタイミングでアドレスバスXAB,YABに出力されたアドレスのデコードが行なわれ、MAステージのクロック信号Clock2の立ち上がりから次のクロック信号Clock1の立ち上がりの期間でデータアクセスが行なわれる。そのため、データバスXDB,YDBに出力されたデータはMAステージのクロック信号Clock2の立ち上がりから書込まれる。以上のようにDSPエンジン3からX,Yメモリ6,7へのデータ書込み動作命令では、IF,ID,EX,MAの4段のパイプラインステージで動作が完了する。斯る並列的なデータ書込み動作は、相互に独立したバスXAB,XDBとTAB,YDBとを介してCPUコア2がX,Yメモリ4,6をアクセスできるようになっているからである。   In synchronization with the rise timing of the clock signal Clock 1 of the MA stage, the internal register of the DSP engine 3 storing the data to be transferred is accessed, and the value of the register is stored in the internal buses D 1 and D 2 of the DSP engine 3. They are output and stored in memory data buffers (MDBX, MDBY). In this example, the internal register of the DSP engine 3 in which data to be transferred is stored is a register designated by Da. Registers that can be designated by Da are the registers A0 and A1 included in the DSP engine 3. The data stored in the memory data buffers (MDBX, MDBY) are output to the data buses XDB, YDB in synchronization with the rising timing of the clock signal Clock2 of the MA stage. In the X and Y memories 6 and 7, the addresses output to the address buses XAB and YAB are decoded at the rising timing of the EX stage clock signal Clock2 during the rising period of the clock signal Clock2 from the rising edge of the clock signal Clock1 of the MA stage. The data access is performed during the period from the rise of the clock signal Clock2 of the MA stage to the rise of the next clock signal Clock1. Therefore, the data output to the data buses XDB and YDB is written from the rising edge of the clock signal Clock2 of the MA stage. As described above, in the data write operation instruction from the DSP engine 3 to the X and Y memories 6 and 7, the operation is completed in four pipeline stages of IF, ID, EX, and MA. This is because such parallel data writing operation allows the CPU core 2 to access the X and Y memories 4 and 6 via the mutually independent buses XAB and XDB and TAB and YDB.

図13はメモリからDSPエンジン3へのデータ読み込み動作のタイムチャートを示す。メモリからDSPエンジン3へのデータ読み込み動作命令の一例として、MOVS.L @As, Ds を例にとってその動作を説明をする。この命令は、Asで指定したアドレスに格納されているデータをDsで指定したレジスタに転送するという命令である。   FIG. 13 shows a time chart of the data reading operation from the memory to the DSP engine 3. As an example of a data read operation command from the memory to the DSP engine 3, the operation will be described by taking MOVS.L @As, Ds as an example. This instruction is an instruction to transfer data stored at an address designated by As to a register designated by Ds.

基本動作は、図11に示したX,Yメモリ4〜7からDSPエンジン3へのデータ読み込み動作と同じである。図11と図13の違いは、図11では対象となるメモリがX,Yメモリ4〜7なのでXバス,Yバスを使用するのに対し、図13では対象となるメモリはマイクロコンピュータ1がサポートする空間に接続されているメモリなので、バスIAB,IDBを使用するということである。EXステージクロック信号Clock1の立ち上がりのタイミングに同期して、アクセスすべきアドレスを保有しているレジスタがアクセスされ、CPUコア2の内部バスA1にレジスタの値が出力される。この例では、アクセスすべきアドレスが格納されているレジスタは、Asで指定したレジスタになる。Asで指定可能なレジスタはCPUコア2に含まれるReg.内の任意のレジスタである。CPUコア2の内部バスA1に出力されたデータは、アドレスバッファ205に格納され、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してアドレスバスIABに出力される。一方CPUコア2の内部バスA1に出力されたデータは算術論理演算器(ALU)213でアドレス演算が行なわれる。この場合、算術論理演算器(ALU)213は0加算演算を行なう。その演算結果はCPUコア2の内部バスC1に出力される。CPUコア2の内部バスC1に出力された演算結果は、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してポインタレジスタ(この場合、Asで指定したレジスタ)に格納される。アクセス対象となるメモリでは、MAステージのクロック信号Clock1の立ち上がりからクロック信号Clock2の立ち上りの期間で、EXステージクロック信号Clock2の立ち上がりのタイミングでアドレスバスIABに出力されたアドレスのデコードが行なわれ、MAステージのクロック信号Clock2の立ち上がりから次のクロック信号Clock1の立ち上がりの期間でデータアクセスが行なわれる。そのためMAステージのクロック信号Clock2の立ち上がりからデータバスIDBにデータが出力される。データバスIDBに出力されたデータは、WB/DSPステージのクロック信号Clock1の立ち上がりのタイミングに同期してDSPエンジン3に取り込まれ、当該データがDSPエンジン3の内部バスD1に供給される。WB/DSPステージのクロック信号Clock2の立ち上がりのタイミングに同期してDSPエンジン3の内部バスD1上のデータがディステネーションレジスタに格納されて、動作を終了する。この例では、ディステネーションレジスタはDsに指定したレジスタになる。Dsに指定できるレジスタは、DSPエンジン3内の任意のレジスタである。以上のようにメモリからDSPエンジン3へのデータ読み込み動作命令では、IF,ID,EX,MA,WB/DSPの5段のパイプラインステージで動作が完了する。   The basic operation is the same as the data reading operation from the X, Y memories 4 to 7 to the DSP engine 3 shown in FIG. The difference between FIG. 11 and FIG. 13 is that the target memory is X and Y memories 4 to 7 in FIG. 11 and the X bus and Y bus are used, whereas in FIG. 13, the target memory is supported by the microcomputer 1. This means that the buses IAB and IDB are used because the memory is connected to the space. In synchronization with the rising timing of the EX stage clock signal Clock 1, the register having the address to be accessed is accessed, and the value of the register is output to the internal bus A 1 of the CPU core 2. In this example, the register storing the address to be accessed is the register specified by As. A register that can be designated by As is an arbitrary register in Reg. Included in the CPU core 2. The data output to the internal bus A1 of the CPU core 2 is stored in the address buffer 205 and output to the address bus IAB in synchronization with the rising timing of the clock signal Clock2 of the EX stage. On the other hand, the data output to the internal bus A1 of the CPU core 2 is subjected to an address operation by an arithmetic logic unit (ALU) 213. In this case, the arithmetic logic unit (ALU) 213 performs 0 addition operation. The calculation result is output to the internal bus C1 of the CPU core 2. The calculation result output to the internal bus C1 of the CPU core 2 is stored in a pointer register (in this case, a register designated by As) in synchronization with the rising timing of the clock signal Clock2 of the EX stage. In the memory to be accessed, the address output to the address bus IAB is decoded at the rising timing of the EX stage clock signal Clock2 during the rising period of the clock signal Clock2 from the rising edge of the clock signal Clock1 of the MA stage. Data access is performed during the period from the rise of the clock signal Clock2 of the stage to the rise of the next clock signal Clock1. Therefore, data is output to the data bus IDB from the rise of the clock signal Clock2 of the MA stage. The data output to the data bus IDB is taken into the DSP engine 3 in synchronization with the rising timing of the clock signal Clock1 of the WB / DSP stage, and the data is supplied to the internal bus D1 of the DSP engine 3. Data on the internal bus D1 of the DSP engine 3 is stored in the destination register in synchronization with the rising timing of the clock signal Clock2 of the WB / DSP stage, and the operation ends. In this example, the destination register is a register designated as Ds. A register that can be designated as Ds is an arbitrary register in the DSP engine 3. As described above, in the data read operation instruction from the memory to the DSP engine 3, the operation is completed in five pipeline stages of IF, ID, EX, MA, and WB / DSP.

図14はDSPエンジン3からメモリへのデータ書込み動作のタイムチャートを示す。DSPエンジン3からメモリへのデータ書込み動作命令の一例として、MOVS.L Ds, @Asを例にとってその動作を説明する。この命令は、Dsで指定したレジスタに格納されているデータをAsで指定したアドレスに転送するという命令である。   FIG. 14 shows a time chart of the data write operation from the DSP engine 3 to the memory. As an example of a data write operation command from the DSP engine 3 to the memory, the operation will be described by taking MOVS.L Ds, @As as an example. This instruction is an instruction to transfer the data stored in the register designated by Ds to the address designated by As.

基本動作は図12に示したDSPエンジン3からX,Yメモリへのデータ書込み動作と同じである。図12と図14の違いは、図12では対象となるメモリがX,YメモリであるのでバスXAB,XDB、バスYAB,YDBを使用するのに対し、図14では対象となるメモリがマイクロコンピュータ1がサポートする空間に接続されているメモリなので、バスIAB,IDBを使用するということである。   The basic operation is the same as the data write operation from the DSP engine 3 to the X and Y memories shown in FIG. The difference between FIG. 12 and FIG. 14 is that in FIG. 12, since the target memory is an X, Y memory, the buses XAB, XDB, and the buses YAB, YDB are used, whereas in FIG. 14, the target memory is a microcomputer. This means that the buses IAB and IDB are used because 1 is a memory connected to a space supported by 1.

EXステージクロック信号Clock1の立ち上がりのタイミングに同期して、転送先のアドレスを保有しているレジスタがアクセスされ、CPUコア2の内部バスA1にレジスタの値が出力される。この例では、アクセスすべきアドレスが格納されているレジスタは、Asで指定したレジスタになる。Asで指定可能なレジスタはCPUコア2に含まれるレジスタReg.内の任意のレジスタである。CPUコア2の内部バスA1に出力されたデータは、アドレスバッファ205に格納され、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してアドレスバスIABに出力される。一方CPUコア2の内部バスA1に出力されたデータは算術論理演算器(ALU)213でアドレス演算が行なわれる。この場合、算術論理演算器(ALU)213は0加算演算を行なう。その演算結果はCPUコア2の内部バスC1に出力される。CPUコア2のバスC1に出力された演算結果は、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してポインタレジスタ(この場合、Asで指定したレジスタ)に格納される。   In synchronization with the rise timing of the EX stage clock signal Clock 1, the register holding the transfer destination address is accessed, and the value of the register is output to the internal bus A 1 of the CPU core 2. In this example, the register storing the address to be accessed is the register specified by As. The register that can be specified by As is an arbitrary register in the register Reg. Included in the CPU core 2. The data output to the internal bus A1 of the CPU core 2 is stored in the address buffer 205 and output to the address bus IAB in synchronization with the rising timing of the clock signal Clock2 of the EX stage. On the other hand, the data output to the internal bus A1 of the CPU core 2 is subjected to an address operation by an arithmetic logic unit (ALU) 213. In this case, the arithmetic logic unit (ALU) 213 performs 0 addition operation. The calculation result is output to the internal bus C1 of the CPU core 2. The calculation result output to the bus C1 of the CPU core 2 is stored in a pointer register (in this case, a register designated by As) in synchronization with the rising timing of the clock signal Clock2 of the EX stage.

MAステージのクロック信号Clock1の立ち上がりのタイミングに同期して、転送すべきデータを格納しているDSPエンジン3内部のレジスタの値がDSPエンジン3の内部バスD1に出力され、メモリデータバッファ(MDBI)に格納される。MAステージのクロック信号Clock2の立ち上がりのタイミングに同期して、メモリデータバッファ(MDBI)に格納されたデータがデータバスIDBに出力される。この例では、転送すべきデータを格納しているDSPエンジン3内部のレジスタはDsに指定したレジスタになる。Dsに指定できるレジスタは、DSPエンジン3内の任意のレジスタである。アクセス対象となるメモリでは、MAステージのクロック信号Clock1の立ち上がりからクロック信号Clock2の立ち上りの期間で、EXステージクロック信号Clock2の立ち上がりのタイミングでアドレスバスIABに出力したアドレスのデコードが行なわれ、MAステージのクロック信号Clock2の立ち上がりから次のクロック信号Clock1の立ち上がりの期間でデータアクセスが行なわれる。そのためMAステージのクロック信号Clock2の立ち上がりタイミングで、DSPエンジン3より出力されたデータがメモリに書込まれる。以上のようにDSPエンジン3から外部メモリへのデータ書込み動作命令では、IF,ID,EX,MAの4段のパイプラインステージで動作が完了する。   In synchronism with the rising timing of the clock signal Clock1 of the MA stage, the value of the register in the DSP engine 3 storing the data to be transferred is output to the internal bus D1 of the DSP engine 3, and the memory data buffer (MDBI) Stored in Data stored in the memory data buffer (MDBI) is output to the data bus IDB in synchronization with the rising timing of the clock signal Clock2 of the MA stage. In this example, a register in the DSP engine 3 storing data to be transferred is a register designated by Ds. A register that can be designated as Ds is an arbitrary register in the DSP engine 3. In the memory to be accessed, the address output to the address bus IAB is decoded at the rising timing of the EX stage clock signal Clock2 during the rising period of the clock signal Clock2 from the rising edge of the clock signal Clock1 of the MA stage, and the MA stage. Data access is performed during the period from the rising edge of the clock signal Clock2 to the rising edge of the next clock signal Clock1. Therefore, the data output from the DSP engine 3 is written into the memory at the rising timing of the clock signal Clock2 of the MA stage. As described above, in the data write operation instruction from the DSP engine 3 to the external memory, the operation is completed in four pipeline stages of IF, ID, EX, and MA.

次に、DSP演算命令の一例として、PADD Sx, Sy, Du PMUL Se, Sf, Dg MOVX.W @Ax, Dx MOVY.W @Ay, Dy を例にとり、図15を用いてその動作説明をする。この命令は、DSPエンジン3内のレジスタに格納されているデータの加算、乗算を行ない、X-ROM4やX-RAM6及びY-ROM5やY-RAM7からDSPエンジン3へのデータ転送を行なうという命令であり、図10と図11の動作を合わせた動作である。命令フェッチ、命令デコードの動作は図10と同じなのでその部分の詳細な説明は省略する。   Next, as an example of the DSP operation instruction, PADD Sx, Sy, Du PMUL Se, Sf, Dg MOVX.W @Ax, Dx MOVY.W @Ay, Dy will be described as an example and the operation will be described with reference to FIG. . This instruction adds and multiplies data stored in a register in the DSP engine 3 and transfers data from the X-ROM 4, X-RAM 6, Y-ROM 5, and Y-RAM 7 to the DSP engine 3. The operation is a combination of the operations shown in FIGS. Since the instruction fetch and instruction decode operations are the same as those in FIG. 10, a detailed description thereof will be omitted.

X,YメモリからDSPエンジン3へのデータ読み込み動作命令を実行する場合、アクセスすべきメモリのアドレスはCPUコア2が生成する。そのためEXステージにおけるクロック信号Clock1の立ち上がりのタイミングに同期して、アクセスすべきアドレスを保有するレジスタがアクセスされ、CPUコア2の内部バスA1,A2にレジスタの値が出力される。この例では、アクセスすべきアドレスが格納されているレジスタは、Ax,Ayで指定したレジスタになる。Axに指定できるレジスタはCPUコア2に含まれるレジスタA0x,A1xであり,Ayに指定できるレジスタはCPUコア2に含まれるレジスタA0y,A1yである。CPUコア2の内部バスA1,A2に出力されたデータは、メモリアドレスバッファ(MABX,MABY)に格納され、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してアドレスバスXAB,YABに出力される。一方CPU内部バスA1,A2に出力されたデータはALU213,PAU212でアドレス演算が行なわれ(この場合、ALU213およびPAU212は0加算演算を行なう)、その結果はCPUコア2の内部バスC1及びC2に出力される。CPUコア2の内部バスC1及びC2に出力された演算結果は、EXステージのクロック信号Clock2の立ち上がりのタイミングに同期してポインタレジスタ(この場合、AxおよびAyで指定したレジスタ)に格納される。X,Yメモリでは、MAステージのクロック信号Clock1の立ち上がりからクロック信号Clock2の立ち上りの期間で、EXステージのクロック信号Clock2の立ち上がりのタイミングでアドレスバスXAB,YABに出力されたアドレスのデコードが行なわれ、MAステージのクロック信号Clock2の立ち上がりから次のクロック信号Clock1の立ち上がりの期間でデータアクセスが行なわれる。そのためMAステージのクロック信号Clock2の立ち上がりからデータバスXDB,YDBにデータが出力される。データバスXDB,YDBに出力されたデータは、WB/DSPステージのクロック信号Clock1の立ち上がりのタイミングに同期してDSPエンジン3に取り込まれ、DSPエンジン3の内部バスD1,D2にデータが出力される。WB/DSPステージのクロック信号Clock2の立ち上がりのタイミングに同期してDSPエンジン3の内部バスD1,D2上のデータがディステネーションレジスタ(Destination Reg.)に格納されて、動作を終了する。この例では、ディステネーションレジスタはDxおよびDyに指定したレジスタになる。Dxに指定できるレジスタは、DSPエンジン3内のX0,X1、Dyに指定できるレジスタは、DSPエンジン3内のY0,Y1である。   When a data read operation instruction from the X, Y memory to the DSP engine 3 is executed, the CPU core 2 generates an address of the memory to be accessed. Therefore, in synchronization with the rising timing of the clock signal Clock 1 in the EX stage, the register having the address to be accessed is accessed, and the value of the register is output to the internal buses A 1 and A 2 of the CPU core 2. In this example, the register storing the address to be accessed is a register designated by Ax and Ay. Registers that can be specified as Ax are registers A0x and A1x included in the CPU core 2, and registers that can be specified as Ay are registers A0y and A1y included in the CPU core 2. The data output to the internal buses A1 and A2 of the CPU core 2 is stored in the memory address buffer (MABX, MABY) and output to the address buses XAB and YAB in synchronization with the rising timing of the clock signal Clock2 of the EX stage. The On the other hand, the data output to the CPU internal buses A1 and A2 is subjected to an address operation in the ALU 213 and PAU 212 (in this case, the ALU 213 and PAU 212 perform 0 addition operation), and the result is sent to the internal buses C1 and C2 of the CPU core 2. Is output. The calculation results output to the internal buses C1 and C2 of the CPU core 2 are stored in a pointer register (in this case, registers designated by Ax and Ay) in synchronization with the rising timing of the clock signal Clock2 of the EX stage. In the X and Y memories, the addresses output to the address buses XAB and YAB are decoded at the timing of the rise of the clock signal Clock2 of the EX stage during the period of rise of the clock signal Clock2 from the rise of the clock signal Clock1 of the MA stage. Data access is performed in the period from the rise of the clock signal Clock2 of the MA stage to the rise of the next clock signal Clock1. Therefore, data is output to the data buses XDB and YDB from the rise of the clock signal Clock2 of the MA stage. The data output to the data buses XDB and YDB is taken into the DSP engine 3 in synchronization with the rising timing of the clock signal Clock1 of the WB / DSP stage, and the data is output to the internal buses D1 and D2 of the DSP engine 3. . Data on the internal buses D1 and D2 of the DSP engine 3 are stored in the destination register (Destination Reg.) In synchronization with the rising timing of the clock signal Clock2 of the WB / DSP stage, and the operation ends. In this example, the destination register is a register designated as Dx and Dy. Registers that can be specified for Dx are X0 and X1 in the DSP engine 3, and registers that can be specified for Dy are Y0 and Y1 in the DSP engine 3.

上記データ転送に並行して、DSP演算動作も同時に行なわれる。WB/DSPステージのクロック信号Clock1の立ち上がりのタイミングに同期して、ソースデータが格納されているレジスタがアクセスされ、DSPエンジン3の内部バスA1,A2、B1,B2にレジスタの値が出力される。この例では、ソースデータが格納されているレジスタは、ADD(加算)動作の場合はSxおよびSyで指定したレジスタになり、MUL(乗算)動作の場合はSeおよびSfで指定したレジスタになる。Sx,Sy,Se及びSfに指定できるレジスタは、DSPエンジン3内部の任意のレジスタである。DSPエンジン3の内部バスA1,B1に出力されたデータはMAC304で乗算演算が行なわれ、その結果はDSPエンジン3内部バスC1に出力される。DSPエンジン3の内部バスA2,B2に出力されたデータはALU302で加算演算が行なわれ、その結果はDSPエンジン3内部バスC2に出力される。DSPエンジン3の内部バスC1およびC2に出力された演算結果は、WB/DSPステージのクロック信号Clock2の立ち上がりのタイミングに同期してディステネーションレジスタに格納される。この例のディステネーションレジスタは、ADD動作の場合はDu,MUL動作の場合はDgで指定したレジスタになる。DuおよびDgに指定できるレジスタは、DSPエンジン3内部の任意のレジスタである。   In parallel with the data transfer, a DSP calculation operation is also performed simultaneously. In synchronization with the rising timing of the clock signal Clock 1 of the WB / DSP stage, the register storing the source data is accessed, and the register value is output to the internal buses A 1, A 2, B 1, B 2 of the DSP engine 3. . In this example, the register storing the source data is a register designated by Sx and Sy in the case of an ADD (addition) operation, and a register designated by Se and Sf in the case of a MUL (multiplication) operation. Registers that can be designated as Sx, Sy, Se, and Sf are arbitrary registers in the DSP engine 3. The data output to the internal buses A1 and B1 of the DSP engine 3 is multiplied by the MAC 304, and the result is output to the DSP engine 3 internal bus C1. The data output to the internal buses A2 and B2 of the DSP engine 3 are added by the ALU 302, and the result is output to the DSP engine 3 internal bus C2. The calculation results output to the internal buses C1 and C2 of the DSP engine 3 are stored in the destination register in synchronization with the rising timing of the clock signal Clock2 of the WB / DSP stage. The destination register in this example is a register designated by Du for the ADD operation and Dg for the MUL operation. Registers that can be specified for Du and Dg are arbitrary registers in the DSP engine 3.

以上のように、DSPエンジン3内のレジスタに格納されているデータの加算、乗算を行ない、X-ROM4やX-RAM6及びY-ROM5やY-RAM7からDSPエンジン3へのデータ転送を行なう命令では、IF,ID,EX,MA,WB/DSPの5段のパイプラインステージで動作が完了する。   As described above, an instruction for adding and multiplying data stored in a register in the DSP engine 3 and transferring data from the X-ROM 4, the X-RAM 6, the Y-ROM 5, and the Y-RAM 7 to the DSP engine 3. The operation is completed in five pipeline stages of IF, ID, EX, MA, and WB / DSP.

DSP演算命令の第2の例として、
Inst1: PADD A0, M0, A0 PMUL A1, X0, A1 MOVX.W @R4, X1 MOVY.W @R6, Y0
Inst2: ADD R8, R9
Inst3: ADD R10, R11
Inst4: ADD R12, R13
の4つの連続する命令を例にとり、図16を用いてその動作説明をする。この4つの命令は、アドレスバスIAB,XAB、及びYABを同時に使用することで、同一クロックサイクルに異なる動作を実現する例である。Inst1からInst4までの命令動作は、図7及び図15と同じなのでその部分の詳細な説明は省略する。
As a second example of a DSP operation instruction,
Inst1: PADD A0, M0, A0 PMUL A1, X0, A1 MOVX.W @ R4, X1 MOVY.W @ R6, Y0
Inst2: ADD R8, R9
Inst3: ADD R10, R11
Inst4: ADD R12, R13
As an example, the operation will be described with reference to FIG. These four instructions are examples in which different operations are realized in the same clock cycle by using the address buses IAB, XAB, and YAB simultaneously. Since the instruction operations from Inst1 to Inst4 are the same as those in FIGS. 7 and 15, detailed description thereof will be omitted.

始めにInst1のIFステージで、Inst1の命令フェッチが行われる。Inst1のIDステージ時に、Inst2ではIFステージになるため、命令フェッチが行われる。   First, an instruction fetch of Inst1 is performed at the IF stage of Inst1. At the time of Inst1 ID stage, Inst2 is in the IF stage, so instruction fetch is performed.

Inst1のEXステージでは、X,Yメモリへのアクセスを行うためのアドレス演算を行っているときに、Inst2ではIDステージのため命令デコードを行い、Inst3ではIFステージのため命令フェッチを行う。   In the EX stage of Inst1, instruction calculation is performed for the ID stage in Inst2 and instruction fetch is performed for the IF stage in Inst3 while performing address calculation for accessing the X and Y memories.

Inst1のMAステージでは、EXステージで演算されたアドレスがアドレスバスXAB、およびYABに出力され(実際にアドレスを出力するタイミングは、EXステージのクロック信号Clock2の立ち上がりのタイミングからである)、データバスXDB及びYDBよりデータが取り込まれる。このときInst2ではEXステージのためR8とR9のADD演算を行って動作が完了され、Inst3はIDステージのため命令デコードを行う。そしてInst4はIFステージのため、Inst4が格納されているアドレスをアドレスバスIABへ出力する。実際にアドレスバスIABへ出力するタイミングは、Inst4のIFステージの半サイクル前のクロック信号Clock2の立ち上がりのタイミングからである。このタイミングは、Inst1においてアドレスバスXAB,YABにアドレスを出力するタイミング(EXステージの後半及びMAステージの前半)と同じタイミングである。すなわちアドレスバスXAB及びYABはデータ転送のために使用され、アドレスバスIABでは命令フェッチのために使用される。マイクロコンピュータ1では、それぞれCPUコア2に接続された内部アドレスバスIAB,XAB,YABと内部データバスIDB,XDB,YDBがあるために、当該3種類の内部バスを使用して同一クロックサイクルで異なるメモリアクセス動作を実行することが可能である。   In the Inst1 MA stage, the address calculated in the EX stage is output to the address buses XAB and YAB (the timing at which the address is actually output is from the rising timing of the clock signal Clock2 of the EX stage). Data is taken in from XDB and YDB. At this time, since Inst2 is an EX stage, the ADD operation of R8 and R9 is performed and the operation is completed. Inst3 is an ID stage and instruction decoding is performed. Since Inst4 is an IF stage, the address where Inst4 is stored is output to the address bus IAB. The timing for actually outputting to the address bus IAB is from the rising timing of the clock signal Clock2 half a cycle before the IF stage of Inst4. This timing is the same as the timing of outputting addresses to the address buses XAB and YAB in Inst 1 (the second half of the EX stage and the first half of the MA stage). That is, the address buses XAB and YAB are used for data transfer, and the address bus IAB is used for instruction fetch. In the microcomputer 1, since there are internal address buses IAB, XAB, YAB and internal data buses IDB, XDB, YDB respectively connected to the CPU core 2, these three types of internal buses are used to be different in the same clock cycle. Memory access operations can be performed.

この後Inst1は、WB/DSPステージにおいてDSP演算を行って動作を完了し、Inst2はすでに動作完了、Inst3はEXステージのためR10とR11のADD演算を行って動作完了し、Inst4ではIDステージのため命令デコードを行う。   Thereafter, Inst1 completes the operation by performing the DSP operation in the WB / DSP stage, Inst2 has already completed the operation, and Inst3 has completed the operation by performing the ADD operation of R10 and R11, and inst4 has completed the operation. Therefore, instruction decoding is performed.

次のサイクルでは、Inst4のEXステージのみが行われ、R12とR13のADD演算を行い動作を完了する。   In the next cycle, only the EX stage of Inst4 is performed, and the ADD operation of R12 and R13 is performed to complete the operation.

本実施例によれば以下の作用効果を得る。内蔵メモリは、DSPエンジン3による積和演算を考慮してYメモリ5,7とXメモリ4,6に2面化され、CPUコア2がYメモリ5,7とXメモリ4,6を内部バスXAB,XDBと内部バスYAB,YDBによってそれぞれ並列的にアクセス可能にされている。これにより、内蔵メモリ4〜7から2個のデータを同時にDSPエンジン3に転送可能にされる。さらに、内部バスXAB,XDBと内部バスバスYAB,YDBは、外部にインタフェースされる内部バスIAB,IDBとも個別化されているので、CPUコア2はXメモリ4,6とYメモリ5,7のアクセスに並行して外部メモリアクセスも可能にされる。このように、それぞれCPUコア2に接続された3種類のアドレスバスIAB,XAB,YAB及びデータバスIDB,XDB,YDBがあるために、当該3種類の内部バスを使用して同一クロックサイクルで異なるメモリアクセス動作を実行することが可能である。したがって、プログラムやデータが外部メモリに存在する場合にも容易に対応して演算処理の高速化を実現できる。   According to the present embodiment, the following effects are obtained. The built-in memory is divided into Y memory 5 and 7 and X memory 4 and 6 in consideration of the product-sum operation by the DSP engine 3, and the CPU core 2 uses the Y memory 5 and 7 and X memory 4 and 6 as an internal bus. XAB and XDB and internal buses YAB and YDB are respectively accessible in parallel. As a result, two pieces of data from the built-in memories 4 to 7 can be simultaneously transferred to the DSP engine 3. Further, since the internal buses XAB and XDB and the internal bus buses YAB and YDB are also individually separated from the internal buses IAB and IDB interfaced to the outside, the CPU core 2 accesses the X memories 4 and 6 and the Y memories 5 and 7. In parallel, external memory access is also possible. Thus, since there are three types of address buses IAB, XAB, YAB and data buses IDB, XDB, YDB respectively connected to the CPU core 2, these three types of internal buses are used to be different in the same clock cycle. Memory access operations can be performed. Therefore, it is possible to easily cope with the case where the program and data exist in the external memory and to speed up the arithmetic processing.

前記Xメモリ4,6とYメモリ5、7の夫々をRAMとROMから構成することにより、マイクロコンピュータの使い勝手を更に向上させることができる。   By configuring each of the X memories 4 and 6 and the Y memories 5 and 7 from a RAM and a ROM, the usability of the microcomputer can be further improved.

上述のように、内蔵メモリはXメモリ4、6とYメモリ5,7に2面化され、2面化された各メモリはROMとRAMを供え、RAMをデータメモリ、ROMをプログラムメモリとすることにより、データメモリとプログラムメモリの分離も可能になり、DSPエンジン3に2個のデータを並列的に転送し、また、命令フェッチ、データ転送、及び演算を並列パイプライン処理にて能率的に行うことができる。   As described above, the built-in memory is divided into the X memory 4 and 6 and the Y memory 5 and 7, and each of the divided memories is provided with the ROM and the RAM. The RAM is the data memory and the ROM is the program memory. This makes it possible to separate the data memory and the program memory, transfer two pieces of data to the DSP engine 3 in parallel, and efficiently perform instruction fetch, data transfer, and computation by parallel pipeline processing. It can be carried out.

CPUコア2がモジュロアドレス出力部200を備えることにより、CPUコア2における積和演算などの繰返し演算のためのアドレス生成を高速化することができる。   Since the CPU core 2 includes the modulo address output unit 200, it is possible to speed up address generation for repetitive operations such as a product-sum operation in the CPU core 2.

CPU命令は命令コードの最上位4ビットが”0000”〜”1110”までの空間に命令が割り当てられている。DSP命令は、命令コードの最上位4ビットが”1111”に全て割り当てられている。さらに命令コードの最上位6ビットが”111100”及び”111101”の空間に割り当てられた命令は、DSP命令でも16ビット長の命令コードになっている。命令コードの最上位6ビットが”111110”の命令は、32ビット長の命令コードになっている。命令コードの最上位6ビットが”111111”の空間には命令を割り当てておらず、未使用領域となっている。このように、最大32ビットの命令に対するコード割り当てに上記のような規則を設けることにより、命令コードの最上位側6ビットをデコードすれば、当該命令がCPU命令であるか、16ビット長のDSP命令であるか、32ビット長のDSP命令であるかを、小さな論理規模のデコーダで判定することができ、常に32ビット全部を一度にデコードすることを要しない。   In the CPU instruction, the most significant 4 bits of the instruction code are assigned to a space from “0000” to “1110”. In the DSP instruction, the most significant 4 bits of the instruction code are all assigned to “1111”. Further, the instruction assigned to the space where the most significant 6 bits of the instruction code are “111100” and “111101” is a 16-bit instruction code even in a DSP instruction. An instruction in which the most significant 6 bits of the instruction code are “111110” is an instruction code having a 32-bit length. No instruction is assigned to the space in which the most significant 6 bits of the instruction code are “111111”, which is an unused area. In this way, by providing the above-described rules for code allocation for instructions of a maximum of 32 bits, if the most significant 6 bits of the instruction code are decoded, the instruction is a CPU instruction or a 16-bit DSP Whether it is an instruction or a 32-bit DSP instruction can be determined by a small logic scale decoder, and it is not always necessary to decode all 32 bits at once.

図17に基づいて説明したように、命令フェッチタイミングの後には、まだ処理されていない命令コードデータが命令レジスタ25にセットされ、このとき、実行されるべき命令が、16ビットCPU命令、16ビットDSP命令又は32ビットDSP命令の何れであっても、その上位側16ビットを必ず第1のデコード回路240に供給することができる。   As described with reference to FIG. 17, after the instruction fetch timing, instruction code data not yet processed is set in the instruction register 25. At this time, an instruction to be executed is a 16-bit CPU instruction, 16-bit CPU instruction. Whether the DSP instruction or the 32-bit DSP instruction, the upper 16 bits can be supplied to the first decoding circuit 240 without fail.

32ビットDSP命令のAフィールドのコードは命令レジスタ25における上位領域UIRにセットされ、Aフィールドと同一のフォーマットを有する16ビットDSP命令も上位領域UIRにセットされる。したがって、その何れにおいても、CPUコア2は、必要なアドレス演算及びデータフェッチに必要なデータパスの選択を同様に行うことができる。すなわち、32ビットDSP命令を実行するためのデータフェッチと16ビットDSP命令を実行するためのデータフェッチとのためにデコード回路240、241を共通化でき、この点においても、マイクロコンピュータ1の論理規模を縮小することができる。   The code of the A field of the 32-bit DSP instruction is set in the upper area UIR in the instruction register 25, and the 16-bit DSP instruction having the same format as the A field is also set in the upper area UIR. Accordingly, in any of them, the CPU core 2 can similarly perform a necessary address calculation and a data path selection necessary for data fetching. In other words, the decode circuits 240 and 241 can be shared for data fetch for executing a 32-bit DSP instruction and data fetch for executing a 16-bit DSP instruction. Can be reduced.

以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。例えばCPU命令、16ビットDSP命令、32ビットDSP命令の識別は命令の最上位6ビットを利用することに限定されず、命令コードの数に応じて増減できる。また、命令レジスタに対する下位16ビットを上位へシフトさせる機能は別の機能に置き換え可能である。また、CPUコアやDSPエンジンに含まれるレジスタ本数や演算器の種類は上記実施例に限定されず適宜変更可能である。また、メモリの数を2個に限定せずに増加させることが可能である。そしてメモリの数に合わせてメモリに接続されるアドレスバス、データバスの本数を増加させることは可能である。例えば、X,Yメモリの他に新たにZメモリを設ける。それに合わせてCPUとZメモリの間にアドレスバスZAB,DSPエンジンとZメモリの間にデータバスZDBを接続する。このような構成にすれば、積和演算時にX,YメモリからデータをDSPエンジンに取り込むだけでなく、現在実行中の命令以前に演算終了しているデータをZバスを介してZメモリ回路に同時に書き込むことが可能となる。1つの命令で演算データの取り込み、メモリへの書き込みが可能となるのでマイクロコンピュータ全体のスループットがさらに向上する。本発明は、移動体通信機器における情報の圧縮伸張処理やフィルタリング処理、サーボ制御、プリンタにおける画像処理等に適用される機器組み込み制御用マイクロコンピュータとしての利用に最適である。   Although the invention made by the present inventor has been specifically described based on the embodiments, it is needless to say that the present invention is not limited thereto and can be variously modified without departing from the gist thereof. For example, identification of a CPU instruction, a 16-bit DSP instruction, and a 32-bit DSP instruction is not limited to using the most significant 6 bits of the instruction, and can be increased or decreased according to the number of instruction codes. Further, the function of shifting the lower 16 bits for the instruction register to the upper side can be replaced with another function. Further, the number of registers and the types of arithmetic units included in the CPU core and the DSP engine are not limited to the above embodiments, and can be changed as appropriate. Further, the number of memories can be increased without being limited to two. The number of address buses and data buses connected to the memory can be increased according to the number of memories. For example, a Z memory is newly provided in addition to the X and Y memories. Accordingly, an address bus ZAB is connected between the CPU and the Z memory, and a data bus ZDB is connected between the DSP engine and the Z memory. With such a configuration, not only the data from the X and Y memories is taken into the DSP engine during the product-sum operation, but also the data that has been calculated before the currently executing instruction is transferred to the Z memory circuit via the Z bus. It becomes possible to write simultaneously. Since the calculation data can be fetched and written into the memory with one instruction, the throughput of the entire microcomputer is further improved. The present invention is most suitable for use as a device-embedded control microcomputer applied to information compression / decompression processing and filtering processing in a mobile communication device, servo control, image processing in a printer, and the like.

本発明の一実施例に係るマイクロコンピュータの全体ブロック図である。1 is an overall block diagram of a microcomputer according to an embodiment of the present invention. マイクロコンピュータの一例アドレスマップである。It is an example address map of a microcomputer. モジュロアドレス出力部を詳細に示したCPUコアのブロック図である。It is a block diagram of a CPU core showing a modulo address output unit in detail. DSPエンジンの一例ブロック図である。It is an example block diagram of a DSP engine. マイクロコンピュータの命令フォーマット及び命令コードに関する一例説明図である。It is an example explanatory drawing regarding the instruction format and instruction code of a microcomputer. CPUコアのデコーダとDSPエンジンのデコーダとの接続構成を示すブロック図である。It is a block diagram which shows the connection structure of the decoder of a CPU core, and the decoder of a DSP engine. CPUコア内部でのALU演算命令の実行タイムチャートである。It is an execution time chart of an ALU operation instruction in the CPU core. メモリからCPUコアへデータを読込む命令の実行タイムチャートである。It is an execution time chart of the instruction which reads data from a memory to a CPU core. CPUコアからメモリへデータを書込み命令の実行タイムチャートである。6 is an execution time chart of a command for writing data from a CPU core to a memory. DSP命令を実行するときの一例タイムチャートである。It is an example time chart when a DSP command is executed. X,YメモリからDSPエンジンへデータを読込む命令の実行タイムチャートである。It is an execution time chart of an instruction for reading data from an X, Y memory to a DSP engine. DSPエンジンからX,Yメモリへデータを書込む命令の実行タイムチャートである。6 is an execution time chart of an instruction for writing data from a DSP engine to X and Y memories. メモリからDSPエンジンへデータを読込む命令の実行タイムチャートである。It is an execution time chart of the instruction which reads data from a memory to a DSP engine. DSPエンジンからメモリへデータを書込む命令の実行タイムチャートである。It is an execution time chart of the instruction which writes data from a DSP engine to memory. DSP演算命令の一例実行タイムチャートである。It is an example execution time chart of a DSP operation instruction. DSP演算命令を連続して実行するときの一例タイムチャートである。It is an example time chart when a DSP operation instruction is executed continuously. 図6に対応される別の実施例を示すブロック図である。It is a block diagram which shows another Example corresponding to FIG. マイクロコンピュータの内蔵メモリとDSPエンジン3の内蔵レジスタとの間におけるデータ転送を規定する16ビットDSP命令のコードを示す命令フォーマット図である。3 is an instruction format diagram showing codes of a 16-bit DSP instruction that defines data transfer between a built-in memory of the microcomputer and a built-in register of the DSP engine 3. FIG. マイクロコンピュータの外部メモリとDSPエンジン3の内蔵レジスタとの間におけるデータ転送を規定する16ビットDSP命令のコードを示す命令フォーマット図である。4 is an instruction format diagram showing codes of a 16-bit DSP instruction that defines data transfer between an external memory of a microcomputer and a built-in register of the DSP engine 3. FIG. 32ビットDSP命令のAフィールドに着目した場合における当該フィールドのコードとそれに対応されるにニーモニックなどを示す命令フォーマット図である。When attention is paid to the A field of a 32-bit DSP instruction, it is an instruction format diagram showing a code of the field and a mnemonic corresponding to the code. 32ビットDSP命令のBフィールドに着目した場合における当該フィールドのコードとそれに対応されるにニーモニックなどを示す命令フォーマット図である。When attention is paid to the B field of a 32-bit DSP instruction, it is an instruction format diagram showing a code of the field and a mnemonic corresponding to the code.

符号の説明Explanation of symbols

1 マイクロコンピュータ
2 CPUコア(セントラルプロセッシングユニット)
20 DSP制御信号
24 デコーダ
240 第1のデコード回路
241 第2のデコード回路
242 コード変換回路
243 CPUデコード信号
244 DSPデコード信号
245 コード変換制御信号
247 CPU制御信号
25 命令レジスタ
250,251 命令プリフェッチバッファ
200 モジュロアドレス出力部
206,207 メモリアドレスバッファ
212 アドレス演算器
213 算術論理演算器
214 モジュロスタートアドレスレジスタ
215 モジュロエンドアドレスレジスタ
216、226 モジュロアドレスレジスタ
3 DSPエンジン(ディジタル信号処理ユニット)
34 デコーダ
302 算術論理演算器
304 乗算器
309,310,311 メモリデータバッファ
4 X−ROM(第2のメモリ)
5 Y−ROM(第1のメモリ)
6 X−RAM(第2のメモリ)
7 Y−RAM(第1のメモリ)
12 外部メモリインタフェース
1 Microcomputer 2 CPU core (Central processing unit)
20 DSP control signal 24 Decoder 240 First decode circuit 241 Second decode circuit 242 Code conversion circuit 243 CPU decode signal 244 DSP decode signal 245 Code conversion control signal 247 CPU control signal 25 Instruction register 250, 251 Instruction prefetch buffer 200 Modulo Address output unit 206, 207 Memory address buffer 212 Address operator 213 Arithmetic logic operator 214 Modulo start address register 215 Modulo end address register 216, 226 Modulo address register 3 DSP engine (digital signal processing unit)
34 Decoder 302 Arithmetic Logic Operator 304 Multiplier 309, 310, 311 Memory Data Buffer 4 X-ROM (Second Memory)
5 Y-ROM (first memory)
6 X-RAM (second memory)
7 Y-RAM (first memory)
12 External memory interface

Claims (16)

アドレス生成器を有する第1プロセッサと、
第2プロセッサと、
上記第1プロセッサに接続される第1乃至第3アドレスバスと、
上記第2プロセッサに接続される第1乃至第3データバスと、
上記第1及び第2アドレスバスと、上記第1及び第2データバスとに接続される第1メモリと、
上記第1及び第3アドレスバスと、上記第1及び第3データバスとに接続される第2メモリとを有し、
上記第1プロセッサは上記第1データバスに接続され、
上記アドレス生成器は、上記第1乃至第3アドレスバスに出力するための第1乃至第3アドレス信号を生成可能であって、
上記第1プロセッサは、上記第1アドレス信号によって指定された第1データを、上記第1データバスを介して読み出すことが可能であって、
上記第1データは、命令を含み、
上記第1プロセッサが上記命令を実行することによって、上記アドレス生成器は上記第2及び第3アドレスバスに出力するための上記第2及び第3アドレス信号を生成することが可能であり、
上記第2プロセッサは、上記第1プロセッサによって出力された第2アドレス信号によって指定された上記第1メモリの第2データを上記第2データバスを介して読み出すことが可能であって、上記第3アドレス信号によって指定された上記第2メモリの第3データを上記第3データバスを介して読み出すことが可能であることを特徴とするマイクロプロセッサ。
A first processor having an address generator;
A second processor;
First to third address buses connected to the first processor;
First to third data buses connected to the second processor;
A first memory connected to the first and second address buses and the first and second data buses;
A second memory connected to the first and third address buses and the first and third data buses;
The first processor is connected to the first data bus;
The address generator can generate first to third address signals to be output to the first to third address buses;
The first processor is capable of reading the first data designated by the first address signal via the first data bus,
The first data includes an instruction,
When the first processor executes the instruction, the address generator can generate the second and third address signals to be output to the second and third address buses.
The second processor can read the second data of the first memory designated by the second address signal output by the first processor via the second data bus, and the third processor A microprocessor capable of reading out third data of the second memory designated by an address signal through the third data bus.
請求項1において、
上記アドレス生成器は、第1アドレス生成部と、第2アドレス生成部とを有し、
上記第1アドレス生成部は、上記第1アドレスバスに出力されるための上記第1アドレス信号を生成可能であり、
上記第2アドレス生成部は、上記第1及び第2メモリにアクセスするための上記第2及び第3アドレス信号を生成可能であることを特徴とするマイクロプロセッサ。
In claim 1,
The address generator includes a first address generation unit and a second address generation unit,
The first address generation unit can generate the first address signal to be output to the first address bus.
The microprocessor according to claim 2, wherein the second address generation unit is capable of generating the second and third address signals for accessing the first and second memories.
請求項2において、
上記第2プロセッサは、上記第1プロセッサより出力される上記第2アドレス信号及び上記第3アドレス信号を用いて、上記第2データ及び第3データを同時に取得することが可能であることを特徴とするマイクロプロセッサ。
In claim 2,
The second processor can acquire the second data and the third data at the same time using the second address signal and the third address signal output from the first processor. A microprocessor to do.
請求項3において、
上記第2プロセッサは、上記第2データバス及び第3データバスを介して取得した上記第2データ及び第3データ信号を用いて演算処理を実行することが可能であることを特徴とするマイクロプロセッサ。
In claim 3,
The microprocessor, wherein the second processor is capable of executing arithmetic processing using the second data and the third data signal acquired via the second data bus and the third data bus. .
請求項2において、
上記第2プロセッサは、上記第2アドレス信号及び第3アドレス信号を用いて上記第1メモリおよび第2メモリの少なくとも何れか一方からデータを読み出すことが可能であり、上記読み出したデータを用いて演算処理を実行することが可能であることを特徴とするマイクロプロセッサ。
In claim 2,
The second processor can read data from at least one of the first memory and the second memory using the second address signal and the third address signal, and performs an operation using the read data. A microprocessor capable of executing processing.
請求項3において、
上記第2プロセッサは実行部を有し、
上記実行部は、上記第2データ及び第3データとを用いて動作を実行することが可能であることを特徴とするマイクロプロセッサ。
In claim 3,
The second processor has an execution unit,
The microprocessor, wherein the execution unit is capable of executing an operation using the second data and the third data.
アドレス生成器を有するCPUと、
上記CPUにより動作制御可能なDSPと、
上記CPUに接続される第1乃至第3アドレスバスと、
上記DSPに接続される第1乃至第3データバスと、
上記第1及び第2アドレスバスと、上記第1及び第2データバスとに接続される第1メモリと、
上記第1及び第3アドレスバスと、上記第1及び第3データバスとに接続される第2メモリとを有し、
上記アドレス生成器は、上記第1アドレスバスに出力される第1アドレスと、上記第2アドレスバスに出力される第2アドレスと、上記第3アドレスバスに出力される第3アドレスとを生成可能で、
上記CPUは上記第1データバスを介して、上記第1アドレス信号により指定される第1データを読み取り可能で、
上記DSPは、上記第2アドレスにより指定される第1メモリから第2データを読み出し可能で、上記第3アドレスにより指定される上記第2メモリから第3データを読み出すことが可能であって、
上記DSPは、上記第2データ及び第3データを用いて演算処理を実行することが可能であることを特徴とするマイクロプロセッサ。
A CPU having an address generator;
A DSP whose operation can be controlled by the CPU;
First to third address buses connected to the CPU;
First to third data buses connected to the DSP;
A first memory connected to the first and second address buses and the first and second data buses;
A second memory connected to the first and third address buses and the first and third data buses;
The address generator can generate a first address output to the first address bus, a second address output to the second address bus, and a third address output to the third address bus. so,
The CPU can read the first data designated by the first address signal via the first data bus,
The DSP can read the second data from the first memory specified by the second address, and can read the third data from the second memory specified by the third address,
The microprocessor, wherein the DSP is capable of performing arithmetic processing using the second data and the third data.
請求項7において、
上記CPUは、
アドレスレジスタと、
上記第2又は第3アドレスバスに対して上記アドレスレジスタ内の値を出力し、且つ、上記アドレスレジスタ内の値を繰り返し更新することによってスタートアドレスからエンドアドレスまでアドレスを生成するためのアドレス出力部とを有することを特徴とするマイクロコンピュータ。
In claim 7,
The CPU is
An address register;
An address output unit for generating the address from the start address to the end address by outputting the value in the address register to the second or third address bus and repeatedly updating the value in the address register And a microcomputer.
請求項7において、
上記CPUは、上記第2及び第3アドレスバスヘ上記第2及び第3アドレスを供給するためのアドレス出力回路を含むことを特徴とするマイクロコンピュータ。
In claim 7,
The microcomputer includes an address output circuit for supplying the second and third addresses to the second and third address buses.
請求項9において、
上記アドレス出力回路は、上記第2アドレスバスに接続された第1アドレスバッファと、上記第3アドレスバスに接続された第2アドレスバッファと、上記第1及び第2アドレスバッファヘ供給すべきアドレス情報を演算する演算手段とを含むことを特徴とするマイクロコンピュータ。
In claim 9,
The address output circuit includes a first address buffer connected to the second address bus, a second address buffer connected to the third address bus, and address information to be supplied to the first and second address buffers. And a computing means for computing.
請求項7において、
上記CPUは、上記第1データに含まれる命令をデコードすることによって、上記DSPを制御するための制御信号を生成し、
上記アドレス生成器は、上記制御信号に応じて、上記第2アドレス又は第3アドレスを生成することを特徴とするマイクロコンピュータ。
In claim 7,
The CPU generates a control signal for controlling the DSP by decoding an instruction included in the first data,
The microcomputer, wherein the address generator generates the second address or the third address in response to the control signal.
中央処理ユニットと、
上記中央処理ユニットに同期して動作するディジタル信号処理ユニットと、
上記中央処理ユニットに接続された第1乃至第3アドレスバスと、
上記中央処理ユニット及び上記ディジタル信号処理ユニットに接続された第1データバスと、
上記ディジタル信号処理ユニットに接続された第2及び第3データバスと、
上記第1及び第2アドレスバスと上記第1及び第2データバスとに接続された第1メモリと、
上記第1及び第3アドレスバスと上記第1及び第3データバスとに接続された第2メモリとを含み、
上記中央処理ユニットは、上記第1アドレスバス及び第1データバスに接続されるインタフェース回路を介して、第1アドレス信号によって指定される第1データを取得し、
上記中央処理ユニットは、上記第1及び第2メモリのそれぞれを並列的にアクセスするための第2及び第3アドレス信号を上記第2及び第3アドレスバスのそれぞれへ供給可能なアドレス供給手段を含み、
上記ディジタル信号処理ユニットは、上記第2及び第3アドレス信号に応じた上記第1及び第2メモリから出力されたデータを、上記第2及び第3データバスを介してそれぞれ取り込むための第1及び第2データバッファ手段を含むことを特徴とするマイクロコンピュータ。
A central processing unit;
A digital signal processing unit operating in synchronization with the central processing unit;
First to third address buses connected to the central processing unit;
A first data bus connected to the central processing unit and the digital signal processing unit;
Second and third data buses connected to the digital signal processing unit;
A first memory connected to the first and second address buses and the first and second data buses;
A second memory connected to the first and third address buses and the first and third data buses;
The central processing unit obtains first data specified by a first address signal via an interface circuit connected to the first address bus and the first data bus;
The central processing unit includes address supply means capable of supplying second and third address signals for accessing the first and second memories in parallel to the second and third address buses, respectively. ,
The digital signal processing unit includes first and second data for receiving the data output from the first and second memories according to the second and third address signals via the second and third data buses, respectively. A microcomputer comprising second data buffer means.
請求項12において、
上記中央処理ユニットは、命令を格納する命令レジスタと、上記命令レジスタに格納された命令を解読し解読結果に基づいた制御信号を供給する命令デコード回路を含み、
上記アドレス供給手段は、上記制御信号に応答して上記第2及び第3アドレス信号を対応する上記第2及び第3アドレスバスへ供給し、
上記ディジタル信号処理ユニットは、上記第1及び第2メモリから出力された第2及び第3データを対応する上記第2及び第3データバスを介して取り込むための第1及び第2データバッファ手段と、上記第1及び第2データバッファ手段から供給された上記第2及び第3データを演算することが可能な乗算器及び算術論理演算手段とを含むことを特徴とするマイクロコンピュータ。
In claim 12,
The central processing unit includes an instruction register that stores an instruction, and an instruction decoding circuit that decodes the instruction stored in the instruction register and supplies a control signal based on the decoding result;
The address supply means supplies the second and third address signals to the corresponding second and third address buses in response to the control signal,
The digital signal processing unit includes first and second data buffer means for taking in the second and third data output from the first and second memories via the corresponding second and third data buses. A microcomputer comprising: a multiplier capable of calculating the second and third data supplied from the first and second data buffer means; and an arithmetic logic operation means.
請求項13において、
上記ディジタル信号処理ユニットは、上記命令デコード回路から出力される制御信号に応答して、上記乗算器及び算術論理演算手段を制御するための内部制御信号を供給することが可能なデコード回路を含むことを特徴とするマイクロコンピュータ。
In claim 13,
The digital signal processing unit includes a decoding circuit capable of supplying an internal control signal for controlling the multiplier and arithmetic logic means in response to a control signal output from the instruction decoding circuit. A microcomputer characterized by.
請求項14において、
上記中央処理部は、上記第2及び第3アドレス信号が格納される汎用レジスタを含むことを特徴とするマイクロコンピュータ。
In claim 14,
The microcomputer according to claim 1, wherein the central processing unit includes a general-purpose register in which the second and third address signals are stored.
CPUと、
上記CPUに従って動作し、乗算器を含むDSPと、
上記CPUから選択的にアドレスが供給される第1乃至第3アドレスバスと、
上記CPU及び上記DSPに接続された第1データバスと、
上記DSPに接続された第2及び第3データバスと、
上記第1及び第2アドレスバスと上記第1及び第2データバスとに接続され、上記CPUから供給されるアドレスによってアクセスされる第1メモリと、
上記第1及び第3アドレスバスと上記第1及び第3データバスとに接続され、上記CPUから供給されるアドレスによってアクセスされる第2メモリと、を有し、
上記CPUは上記第1アドレスバスにアドレス信号を出力して上記第1データバスから命令をフェッチし、フェッチした命令に基づいて上記DSPにDSP動作を制御するための第1制御信号を供給することが可能であり、
上記CPUは、上記フェッチした命令に基づいて上記第1メモリまたは第2メモリの少なくとも一方が保有するデータを第2データバス又は第3データバスに出力するためのアドレス信号を生成し、生成したアドレス信号を上記第2アドレスバスまたは第3アドレスバスの少なくとも一方に出力可能であり、
上記DSPは、上記第1制御信号に基づいて上記第2データバス又は第3データバスの少なくとも一方から取得したデータを用いて演算処理を実行することが可能であることを特徴とするマイクロコンピュータ。
CPU,
A DSP that operates according to the CPU and includes a multiplier;
First to third address buses to which addresses are selectively supplied from the CPU;
A first data bus connected to the CPU and the DSP;
Second and third data buses connected to the DSP;
A first memory connected to the first and second address buses and the first and second data buses and accessed by an address supplied from the CPU;
A second memory connected to the first and third address buses and the first and third data buses and accessed by an address supplied from the CPU;
The CPU outputs an address signal to the first address bus, fetches an instruction from the first data bus, and supplies a first control signal for controlling a DSP operation to the DSP based on the fetched instruction. Is possible,
The CPU generates an address signal for outputting data held in at least one of the first memory and the second memory to the second data bus or the third data bus based on the fetched instruction, and generates the generated address A signal can be output to at least one of the second address bus and the third address bus;
The microcomputer according to claim 1, wherein the DSP is capable of executing arithmetic processing using data acquired from at least one of the second data bus or the third data bus based on the first control signal.
JP2005222618A 1995-05-02 2005-08-01 Microcomputer Expired - Lifetime JP3733137B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005222618A JP3733137B2 (en) 1995-05-02 2005-08-01 Microcomputer

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP13290695 1995-05-02
JP2005222618A JP3733137B2 (en) 1995-05-02 2005-08-01 Microcomputer

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP34744195A Division JP3727395B2 (en) 1995-05-02 1995-12-14 Microcomputer

Publications (2)

Publication Number Publication Date
JP2005322274A true JP2005322274A (en) 2005-11-17
JP3733137B2 JP3733137B2 (en) 2006-01-11

Family

ID=35469456

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005222618A Expired - Lifetime JP3733137B2 (en) 1995-05-02 2005-08-01 Microcomputer

Country Status (1)

Country Link
JP (1) JP3733137B2 (en)

Also Published As

Publication number Publication date
JP3733137B2 (en) 2006-01-11

Similar Documents

Publication Publication Date Title
KR100440841B1 (en) Microcomputer
JP3983857B2 (en) Single instruction multiple data processing using multiple banks of vector registers
KR100462951B1 (en) Eight-bit microcontroller having a risc architecture
JP2005525651A (en) Method and apparatus for adding advanced instructions in an extensible processor architecture
JPH0810428B2 (en) Data processing device
JP2003005958A (en) Data processor and method for controlling the same
JPH07120278B2 (en) Data processing device
JP2001504959A (en) 8-bit microcontroller with RISC architecture
US6253305B1 (en) Microprocessor for supporting reduction of program codes in size
JP3727395B2 (en) Microcomputer
JPH11307725A (en) Semiconductor integrated circuit
JP3841820B2 (en) Microcomputer
JPH096614A (en) Data processor
JP3765782B2 (en) Microcomputer
JP3733137B2 (en) Microcomputer
US7877575B2 (en) Microprocessor
JP3786575B2 (en) Data processing device
KR19980018071A (en) Single instruction multiple data processing in multimedia signal processor
US20030009652A1 (en) Data processing system and control method
JP3760093B2 (en) Microcomputer
JP3740321B2 (en) Data processing device
JP2522048B2 (en) Microprocessor and data processing device using the same
JP2956707B2 (en) Information processing device
US5768554A (en) Central processing unit
JPH0769805B2 (en) Data processing device

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20051011

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051014

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081021

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091021

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091021

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101021

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101021

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20161021

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20161021

Year of fee payment: 11

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20161021

Year of fee payment: 11

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term