JP2005322274A - Microcomputer - Google Patents
Microcomputer Download PDFInfo
- 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
Links
Images
Landscapes
- Microcomputers (AREA)
- Memory System (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
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.
本発明者らはセントラルプロセッシングユニットと共にディジタル信号処理ユニットを一つの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 (
これにより、実行制御手段は、第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,
前記実行制御手段は、前記第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 (
図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
本実施例のマイクロコンピュータ1はそのバス構成として、外部メモリインタフェース12に結合される内部アドレスバスIAB及び内部データバスIDB、外部メモリインタフェース12に結合されない内部アドレスバスXAB及び内部データバスXDB、外部メモリインタフェース12に結合されない内部アドレスバスYAB及び内部データバスYDB、そして内蔵周辺回路10,11のための周辺アドレスバスPAB及び周辺データバスPDBを備える。尚、コントロールバスについては図示を省略してあるが、アドレスバス及びデータバスの対に対応してそれぞれ設けられている。
The
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
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
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のデータ一時記憶領域若しくはワーク領域としても利用可能であることは言うまでもない。
前記割り込みコントローラ8は、内蔵周辺回路10,11などからの割り込み要求信号(Interrupts)81を入力し、各種割込み要求に対する優先順位付けや割込み要求に対するマスキングのための情報に従って割込み要求を調停して受け付け、受け付けた割込み要求に応ずる割り込みベクタ(Interrupt Vector)82をアドレスバスIABに出力し、さらに割り込み信号80をCPUコア2に出力する。
The interrupt
バスステートコントローラ9はアドレスバスIAB,PABとデータバスIDB,PDBに接続され、アドレスバスPAB及びデータバスPDBに接続されている内蔵周辺回路10,11とCPUコア2とのインタフェース制御を行う。
The
外部メモリインターフェース12は、アドレスバスIABとデータバスIDBに接続され、マイクロコンピュータ1のチップ外部の図示を省略したアドレスバスとデータバスに接続され、外部とのインタフェース制御を行う。
The
図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
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
図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
図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
制御ビット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
モジュロアドレスレジスタ(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
尚、ランダムロジック回路201に記載されたOP Codeは命令レジスタ25から供給される命令コードを意味し、CONSTは定数値を意味する。
Note that OP Code written in the
ここで、CPUコア2におけるモジュロ演算動作として、例えば、モジュロアドレスレジスタ(A0x)216を用いて、アドレスバスXABへ供給すべきアドレス情報をモジュロ演算にて生成する動作を説明する。
Here, as the modulo arithmetic operation in the
先ず、モジュロ演算開始アドレスがモジュロスタートアドレスレジスタ(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
セレクタ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
アンドゲート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
上記モジュロ演算の説明では、モジュロアドレスレジスタ(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
図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
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
デコードされた命令が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
デコードされた命令が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
マイクロコンピュータ1の命令セットには命令コード長が、16ビットのものと32ビットのものがあり、上述のように16ビット長命令と32ビット長命令では処理が異なるので、それぞれの場合を分けてその動作を詳述する。
The instruction set of the
始めに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
次に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
図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
前記セレクタ252は、選択制御信号φ4に従って、ポートPaに供給される32ビットの命令データ又はポートPb供給される32ビットの命令データを選択して命令レジスタ25に与える。前記ポートPaには、命令プリフェッチバッファ250の上位16ビット領域UPB1を下位側とし、命令プリフェッチバッファ251の下位16ビット領域LPB2を上位側とする32ビットの命令データが供給される。ポートPbには命令プリフェッチバッファ251に格納されている32ビットの命令データがそのまま供給される。
The
これにより、命令プリフェッチバッファ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
図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
前記制御論理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
前記第1の状態において、命令レジスタ25の上位領域UIRにセットされた命令コードデータをデコード回路240がデコードした結果、それが32ビット命令を構成するものである場合には、そのとき、命令プリフェッチバッファ250にプリフェッチされた32ビットの命令コードデータがそのまま命令プリフェッチバッファ251に転送される。一方、デコード結果によって16ビット命令であることが検出されたときは、命令プリフェッチバッファ250から次段のバッファ251へのデータシフトは行われない。
In the first state, when the
前記第2の状態では、ポートPaを介する命令レジスタ25へのデータセットの後、命令プリフェッチバッファ250にプリフェッチされている32ビットの命令コードデータは、そのまま命令プリフェッチバッファ251にシフトされてセットされる。このシフトセット後、命令プリフェッチバッファ250に未だ実行されていない命令コードデータが存在しないならば、命令プリフェッチバッファ250には、次の命令フェッチタイミングで命令コードデータがプリフェッチされる。
In the second state, after the data is set to the
このような制御により、命令フェッチタイミングの後には、まだ処理されていない命令コードデータが命令レジスタ25にセットされる。このとき、実行されるべき命令が、16ビットCPU命令、16ビットDSP命令又は32ビットDSP命令の何れであっても、その上位側16ビットは必ず第1のデコード回路240に供給されることになる。
By such control, instruction code data not yet processed is set in the
図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
図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
前記DSPデコード信号244は、前述の通り、第1のデコード回路240に供給される命令コードがDSP命令のためのコードデータである場合に有意とされるデコード信号である。有意DSPデコード信号244は、例えば、CPUコア2で行われるアドレス演算に従ってアクセスされるメモリとの間でデータの受け渡しを行うDSPエンジン3内のレジスタ等の指定情報を含んでいる。第1のデコード回路240に供給される命令コードがCPU命令である場合には、DSPデコード信号244は無効を意味するコードにされる。
As described above, the
ここで、マイクロコンピュータ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
図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 (
図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
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 (
図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
図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
実際の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
図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
次に、本実施例のマイクロコンピュータにおける演算制御の内容を図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
図7はCPUコア2内部のALU演算命令の実行タイムチャートを示す。ここではALU演算命令として、ADD Rm, Rn を一例とする。
FIG. 7 shows an execution time chart of the ALU operation instruction in the
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
図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
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
図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
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
図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
命令フェッチの動作は図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
図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
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,
図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
命令フェッチ、命令デコードの動作は図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
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
図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
基本動作は、図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,
図14はDSPエンジン3からメモリへのデータ書込み動作のタイムチャートを示す。DSPエンジン3からメモリへのデータ書込み動作命令の一例として、MOVS.L Ds, @Asを例にとってその動作を説明する。この命令は、Dsで指定したレジスタに格納されているデータをAsで指定したアドレスに転送するという命令である。
FIG. 14 shows a time chart of the data write operation from the
基本動作は図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
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
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演算命令の一例として、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
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演算動作も同時に行なわれる。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
以上のように、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演算命令の第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
この後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
前記Xメモリ4,6とYメモリ5、7の夫々をRAMとROMから構成することにより、マイクロコンピュータの使い勝手を更に向上させることができる。
By configuring each of the
上述のように、内蔵メモリは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
CPUコア2がモジュロアドレス出力部200を備えることにより、CPUコア2における積和演算などの繰返し演算のためのアドレス生成を高速化することができる。
Since the
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
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
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。例えば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 マイクロコンピュータ
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
20
34
5 Y-ROM (first memory)
6 X-RAM (second memory)
7 Y-RAM (first memory)
12 External memory interface
Claims (16)
第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アドレス生成部と、第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プロセッサは、上記第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.
上記第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アドレス信号及び第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.
上記第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により動作制御可能な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.
上記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.
上記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.
上記アドレス出力回路は、上記第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.
上記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.
上記中央処理ユニットは、命令を格納する命令レジスタと、上記命令レジスタに格納された命令を解読し解読結果に基づいた制御信号を供給する命令デコード回路を含み、
上記アドレス供給手段は、上記制御信号に応答して上記第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.
上記ディジタル信号処理ユニットは、上記命令デコード回路から出力される制御信号に応答して、上記乗算器及び算術論理演算手段を制御するための内部制御信号を供給することが可能なデコード回路を含むことを特徴とするマイクロコンピュータ。 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.
上記中央処理部は、上記第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に従って動作し、乗算器を含む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.
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) |
-
2005
- 2005-08-01 JP JP2005222618A patent/JP3733137B2/en not_active Expired - Lifetime
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 |