(57)【要約】【課題】  従来品との互換性を保ちながら、多量の係数データを必要とする積和演算を高速処理できる半導体装置を提供する。【解決手段】  係数データ積和命令に応じて、汎用レジスタ１６は、内部バス１４ａを介してアドレスＧＲ０に記憶している処理対象データｘ（ｉ＋ｊ−ｍ）を積和演算器３０へ転送する。一方、係数データ記憶部１０は、内部バス１４ｂを介して、読出セレクタ２８が選択している係数レジスタ２４のアドレスに記憶している係数データａ（ｊ）を積和演算器３０へ転送する。さらに、積和演算器３０は、汎用レジスタ１６から転送された処理対象データｘ（ｉ＋ｊ−ｍ）と、係数データ記憶部１０から転送された係数データａ（ｊ）とを乗算し、その乗算結果を累積加算する。その後、マルチプレクサ１８は、ポインタレジスタ２０に１を加算する。すると、読出セレクタ２８は、ポインタレジスタ２０からの制御信号により、係数レジスタ２４の次のアドレスを選択する。【選択図】        図１
2005338929.tif 000002
【特許請求の範囲】
【請求項１】
積和演算手段と、
積和演算に用いる処理対象データを記憶し、前記処理対象データを前記積和演算手段へ供給する第１の記憶手段と、
前記積和演算に用いる係数データを記憶し、前記処理対象データに対応する前記係数データを前記積和演算手段へ供給する第２の記憶手段とを備える半導体装置。
【請求項２】
前記第２の記憶手段は、
アドレスに対応付けて複数の係数データを記憶する記憶領域と、
前記記憶領域のアドレスを特定するための読出アドレス特定手段と、
前記読出アドレス特定手段により特定されたアドレスに記憶されている係数データを読出して前記積和演算手段へ供給する読出手段とを含む、請求項１に記載の半導体装置。
【請求項３】
前記読出アドレス特定手段は、前記積和演算の演算過程に応じて、特定されるアドレス値をカウントアップまたはリセットする、請求項２に記載の半導体装置。
【請求項４】
前記第２の記憶手段は、外部から前記係数データを取込み、前記記憶領域に記憶されている係数データを前記取込んだ係数データに置換える更新手段をさらに含む、請求項２または３に記載の半導体装置。
【請求項５】
前記更新手段は、
前記記憶領域のアドレスを特定するための書込アドレス特定手段と、
前記書込アドレス特定手段により特定されたアドレスに新たな係数データを記憶させる書込手段とを含む、請求項４に記載の半導体装置。
【請求項６】
前記書込アドレス特定手段は、外部からの前記係数データの取込過程に応じて、特定されるアドレス値をカウントアップまたはリセットする、請求項５に記載の半導体装置。
【請求項７】
第１のデータ転送指令に応じて、前記第１の記憶手段に記憶されているデータを前記第２の記憶手段に転送する第１の転送手段と、
第２データ転送指令に応じて、前記第２の記憶手段に記憶されているデータを前記第１の記憶手段に転送する第２の転送手段とをさらに備える、請求項１〜６のいずれか１項に記載の半導体装置。
【請求項８】
前記第１の転送手段は、前記第１の記憶手段と前記第２の記憶手段とを接続する第１の接続回路からなり、
前記第２の転送手段は、前記第２の記憶手段と前記第１の記憶手段とを接続する第２の接続回路とからなる請求項７に記載の半導体装置。
【請求項９】
前記第１の転送手段は、割込処理が発生した場合に、前記第１の記憶手段に記憶されているデータを前記第２の記憶手段に記憶し、前記第２の転送手段は、前記割り込み処理が終了した後に、前記第２の記憶手段に記憶されていたデータを前記第１の記憶手段に記憶させる、請求項７または８に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は半導体装置に関し、特に積和演算装置を内蔵した半導体装置に関する。
【背景技術】
【０００２】
近年のマルチメディア技術の発展により、デジタル信号処理は、ますます重要性を増している。最も頻繁に実行されるデジタル信号処理は、式（１）のようなフィルタ処理であり、積和演算の形で大量に実行されることが多い。
【０００３】
【数１】
2005338929.tif 000003
【０００４】
その結果、デジタル信号処理全体の速度は、積和演算の処理速度によって決まることが多い。したがって、積和演算をいかに高速処理するかが重要である。
【０００５】
従来から、特許文献１に示されているような信号処理専用のマイクロプロセッサや、特許文献２に示されているようなＤＳＰ（Digital Signal Processor）などを、ＣＰＵとは別に設けて、高速のデジタル信号処理を実現している。
【０００６】
しかし、製品の低コスト化や小型化の観点からは、単一のＣＰＵで処理を行うことが望ましく、いわゆるシングルチップマイコンが要求される場合も多い。
【０００７】
そこで、積和演算専用の回路（以下、「積和演算器」という）を内蔵したＣＰＵが実現されている。このＣＰＵでは、使用頻度の高い係数データをＣＰＵ内部の記憶領域に記憶しておくことで、外部メモリからの取込みを省略し、積和演算の高速化を図っている。
【特許文献１】特開平３−２７７００９号公報
【特許文献２】特開平８−１２３６８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
近年の通信技術の発達による情報量の増大に伴い、デジタル信号処理量も増大している。そのため、積和演算の処理対象データおよび係数データセットが増加する傾向にある。
【０００９】
上述した専用マイクロプロセッサやＤＳＰの多くは、処理対象データおよび係数データ専用の記憶領域が設けられており、柔軟な対応が可能である。
【００１０】
一方、上述した積和演算器を内蔵したＣＰＵにおいては、アーキテクチャーの大幅な変更を避けるため、汎用レジスタのみが記憶領域として設けられている。この汎用レジスタは、積和演算を含めて、全ての処理に用いられる。
【００１１】
そのため、上述したように信号処理量が増大すると、係数データセットを記憶するだけの記憶領域を、汎用レジスタに確保できない場合が生じる。このような場合には、積和演算処理中に、係数データを外部メモリから頻繁に取込む必要があり、積和演算の高速化が図れないという問題があった。
【００１２】
さらに、頻繁に係数データの取込処理が実行されることにより、ＣＰＵの内部バスが占有され、他の処理が遅延するという問題もあった。
【００１３】
一方、汎用レジスタの記憶領域を増加させることも考えられるが、ＣＰＵの命令コード体系を変更せざるを得ず、従来品との互換性を保つことができない。いわゆる製品ファミリー間では、機能を拡張しつつも、従来品との互換性を確保することが重要であり、互換性が確保できないことは実用上大きな問題であった。
【００１４】
そこで、この発明は、かかる問題を解決するためになされたものであり、その目的は、従来品との互換性を保ちながら、多量の係数データを必要とする積和演算を高速処理できる半導体装置を提供することである。
【課題を解決するための手段】
【００１５】
この発明は、半導体装置であって、積和演算手段と、第１の記憶手段と、第２の記憶手段とを備える。第１の記憶手段は、積和演算に用いる処理対象データを記憶し、積和演算手段へ処理対象データを供給する。第２の記憶手段は、積和演算に用いる係数データを記憶し、処理対象データに対応する係数データを積和演算手段へ供給する。
【発明の効果】
【００１６】
この発明によれば、半導体装置は、積和演算に用いる係数データを記憶し、処理対象データに対応する係数データを積和演算手段へ供給する第２の記憶手段を備えるので、第２の記憶手段に係数データを記憶でき、多量の係数データが必要な積和演算を高速に処理できる。
【００１７】
また、半導体装置は、第２の記憶手段を追加する構造を採用するので、大幅な設計変更を必要とせず、従来品との互換性を保つことができる。
【００１８】
さらに、第１の記憶手段と第２の記憶手段の相互間で、データの退避および復元ができるため、割込処理が発生した場合において、通常処理の中断、割込処理の実行、および通常処理の再開を高速に行うことができる。
【発明を実施するための最良の形態】
【００１９】
この発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２０】
［実施の形態１］
図１は、この発明の実施の形態１に従う半導体装置の構成を示す概略ブロック図である。
【００２１】
図１を参照して、この発明の実施の形態１によるマイクロコンピュータ１０１は、ＣＰＵ１と、メモリ５と、データバス６とを備える。ＣＰＵ１とメモリ５とは、データバス６を介して接続される。
【００２２】
マイクロコンピュータ１０１は、図示しないＩ／Ｏユニットにより外部から処理対象データおよび係数データを取込み、メモリ５へ記憶する。
【００２３】
メモリ５は、積和演算の処理対象データおよび係数データを記憶する。また、メモリ５は、一定期間分の処理対象データを保持しておくため、リングバッファとして機能することが多い。
【００２４】
ＣＰＵ１は、制御部３２と、リードユニット１２と、汎用レジスタ１６と、積和演算器３０と、係数データ記憶部１０と、内部バス１４ａ，１４ｂ，１４ｃを備える。
【００２５】
制御部３２は、ＣＰＵ命令セットの中から、図示しないプログラムカウンタに従って、順次命令を実行する。
【００２６】
リードユニット１２は、データバス６を介して、メモリ５のデータを汎用レジスタ１６に書込む。
【００２７】
汎用レジスタ１６は、リードユニット１２から転送されるデータおよび内部バス１４ｃを介して転送されるデータを記憶する。また、汎用レジスタ１６は、命令に応じて、内部バス１４ａまたは内部バス１４ｂを介して記憶したデータを転送する。
【００２８】
積和演算器３０は、乗算器３０ａと、加算器３０ｂと、積和レジスタ３０ｃとを含む。
【００２９】
乗算器３０ａは、内部バス１４ａを介して転送されるデータと、内部バス１４ｂを介して転送されるデータとを乗算して、加算器３０ｂへ転送する。
【００３０】
加算器３０ｂは、乗算器３０ａから転送されるデータと、積和レジスタ３０ｃに記憶されているデータとを加算して、積和レジスタ３０ｃへ転送する。
【００３１】
積和レジスタ３０ｃは、加算器３０ｂから転送されるデータを記憶する。また、積和レジスタ３０ｃは、記憶したデータを加算器３０ｂへ転送する。さらに、積和レジスタ３０ｃは、内部バス１４ｃを介して、記憶したデータを汎用レジスタ１６へ転送する。なお、積和レジスタ３０ｃは、命令に応じて、リセットされる。
【００３２】
積和演算器３０は、汎用レジスタ１６から内部バス１４ａを介して転送される処理対象データと、係数データ記憶部１０から内部バス１４ｂを介して転送される係数データとを乗算し、その乗算結果を累積加算する。
【００３３】
係数データ記憶部１０は、ポインタレジスタ２０と、マルチプレクサ１８と、加算器２２と、係数レジスタ２４と、書込セレクタ２６と、読出セレクタ２８とを備える。
【００３４】
実施の形態１では、汎用レジスタ１６および係数レジスタ２４は、１６個のアドレスによって指定された記憶領域を有するとして説明する。汎用レジスタ１６については、アドレスＧＲ０，ＧＲ１，・・・，ＧＲ１５とし、係数レジスタ２４については、アドレスＰ０，Ｐ１，・・・，Ｐ１５とする。なお、汎用レジスタ１６のアドレス数および係数レジスタ２４のアドレス数を増加または減少させてもよく、また互いのアドレス数を一致させる必要はない。
【００３５】
ポインタレジスタ２０は、マルチプレクサ１８から書込まれるデータを記憶する。また、ポインタレジスタ２０は、記憶したデータを加算器２２へ転送する。さらに、ポインタレジスタ２０の値に応じた制御信号が、書込セレクタ２６および読出セレクタ２８へ与えられる。
【００３６】
加算器２２は、ポインタレジスタ２０から転送されるデータに”１”を加算して、マルチプレクサ１８へ転送する。
【００３７】
マルチプレクサ１８は、命令に応じて、加算器２２から転送されるデータまたは汎用レジスタ１６から転送されるデータのいずれかを、ポインタレジスタ２０へ書込む。
【００３８】
係数レジスタ２４は、アドレスＰ０，Ｐ１，・・・，Ｐ１５に対応させて、係数データａ（０）, ａ（１），・・・, ａ（１５）を記憶する。
【００３９】
書込セレクタ２６は、汎用レジスタ１６から内部バス１４ｂを介して転送される係数データを、ポインタレジスタ２０の値に応じた制御信号により特定される係数レジスタ２４
のアドレスに書込む。
【００４０】
読出セレクタ２８は、ポインタレジスタ２０の値に応じた制御信号により特定される係数レジスタ２４のアドレスに記憶されたデータを読出して、内部バス１４ｂを介して積和演算器３０へ転送する。
【００４１】
次に、実施の形態１による積和演算処理について説明する。
【００４２】
図２は、この発明の実施の形態１に従う半導体装置における、積和演算時の記憶領域に記憶したデータ内容を示す図である。
【００４３】
図２（ａ）は、汎用レジスタ１６のデータ内容を示す図である。
【００４４】
図２（ｂ）は、係数レジスタ２４のデータ内容を示す図である。
【００４５】
以下の説明では、汎用レジスタ１６および係数レジスタ２４には、図２（ａ）および図２（ｂ）のようにアドレスに対応付けてデータが記憶されるとする。なお、図２（ｂ）は係数データを最大数記憶した場合の図であり、係数レジスタ２４には、係数データがアドレスＰ０から連続して必要数だけ記憶される。
【００４６】
式（１）を参照して、変数ｉについて、ｉ＝０,１,・・・,ｎ−１のそれぞれにおけるフィルタ処理結果ｙ（ｉ）を求める処理について説明する。
【００４７】
図３は、この発明の実施の形態１に従う半導体装置における、積和演算処理を示すフローチャートである。
【００４８】
図３を参照して、制御部３２は、係数データ記憶部１０に記憶されている係数データセットの更新が必要か否かを判断する（ステップＳ１０）。
【００４９】
係数データセットの更新が必要であれば（ステップＳ１０においてＹの場合）、制御部３２は、以下に述べる係数データ更新処理を行う。
【００５０】
制御部３２は、係数データａ（ｊ）において、第１番目の係数データａ（０）を取込対象とするため、変数ｊについて、ｊ＝０とする（ステップＳ１２）。このとき、図２（ｂ）を参照して、第１番目の係数データａ（０）は、係数レジスタ２４のアドレスＰ０に記憶されるので、制御部３２は、”０”をポインタレジスタ２０に書込み、ポインタレジスタ２０をリセットする（ステップＳ１４）。すると、書込セレクタ２６は、ポインタレジスタ２０からの制御信号により、係数レジスタ２４のアドレスＰ０を選択する。
【００５１】
一方、リードユニット１２は、メモリ５から係数データａ（ｊ）、すなわちａ（０）を汎用レジスタ１６のアドレスＧＲ１に取込む（ステップＳ１６）。
【００５２】
次に、制御部３２は、係数データ書込命令を実行する（ステップＳ１８）。係数データ書込命令は、実施の形態１によるＣＰＵ１が従来品との互換性を保ちながら、新たに備えるＣＰＵ命令である。
【００５３】
係数データ書込命令に応じて、汎用レジスタ１６は、内部バス１４ｂを介してアドレスＧＲ１に記憶している係数データａ（ｊ）、すなわちａ（０）を書込セレクタ２６へ転送する。書込セレクタ２６は、汎用レジスタ１６から転送された係数データａ（０）を、選択している係数レジスタ２４のアドレスＰ０に書込む。
【００５４】
その後、係数データ書込命令に応じて、マルチプレクサ１８は、ポインタレジスタ２０に”１”を加算する。すると、書込セレクタ２６は、ポインタレジスタ２０からの制御信号により、係数レジスタ２４の次のアドレス、すなわちアドレスＰ１を選択する。したがって、次の係数データａ（ｊ＋１）、すなわちａ（１）が記憶される係数レジスタ２４のアドレスが特定される。
【００５５】
このように、制御部３２は、１回の係数データ書込命令で、１つの係数データの書込みとポインタレジスタ２０のカウントアップをセットで実行する。このため、係数データと係数レジスタ２４のアドレスの対応関係を保ちながら順次処理が可能である。
【００５６】
その後、制御部３２は、ｊ＜ｍ−１が成立するか否かを判断する（ステップＳ２０）。すなわち、すべての係数データａ（０）,ａ（１），・・・,ａ（ｍ−１）が更新されたか否かを判断する。
【００５７】
ｊ＜ｍ−１が成立する場合（ステップＳ２０においてＹの場合）、すなわち、すべての係数データが更新されていない場合には、制御部３２は、次の係数データａ（ｊ＋１）を取込対象とするため、変数ｊについてｊ＝ｊ＋１の演算をする（ステップＳ２２）。
【００５８】
以下、上述したステップＳ１６，Ｓ１８，Ｓ２０，Ｓ２２を、ステップＳ２０においてｊ＜ｍ−１が不成立となるまで、すなわち、すべての係数データａ（０）,ａ（１），・・・,ａ（ｍ−１）が更新されるまで繰返す。
【００５９】
以上が、係数データ更新処理である。
【００６０】
次に、係数データセットの更新が必要でない場合（ステップＳ１０においてＮの場合）または、すべての係数データが更新された場合（ステップＳ２０においてＮの場合）には、以下に述べる積和演算処理を行う。
【００６１】
フィルタ処理結果ｙ（ｉ）において、第１番目のフィルタ処理結果ｙ（０）を求めるため、変数ｉについて、ｉ＝０とする（ステップＳ３０）。
【００６２】
第１番目のフィルタ処理結果ｙ（０）において、第１番目の乗算ａ（０）×ｘ（０＋０−ｍ）を実行するため、変数ｊについて、ｊ＝０とする（ステップＳ３２）。このとき、図２（ｂ）を参照して、第１番目の係数データａ（０）は、係数レジスタ２４のアドレスＰ０に記憶されるので、制御部３２は、”０”をポインタレジスタ２０に書込み、ポインタレジスタ２０をリセットする（ステップＳ３４）。すると、読出セレクタ２８は、ポインタレジスタ２０からの制御信号により、係数レジスタ２４のアドレスＰ０を選択する。
【００６３】
一方、リードユニット１２は、処理対象データｘ（ｉ＋ｊ−ｍ）、すなわちｘ（０＋０−ｍ）を汎用レジスタ１６のアドレスＧＲ０に取込む（ステップＳ３６）。
【００６４】
次に、制御部３２は、係数データ積和命令を実行する（ステップＳ３８）。係数データ積和命令は、実施の形態１によるＣＰＵ１が従来品との互換性を保ちながら、新たに備えるＣＰＵ命令である。
【００６５】
係数データ積和命令に応じて、汎用レジスタ１６は、内部バス１４ａを介してアドレスＧＲ０にある処理対象データｘ（０＋０−ｍ）を積和演算器３０へ転送する。同時に、読出セレクタ２８は、内部バス１４ｂを介して、選択している係数レジスタ２４のアドレスＰ０に記憶している係数データａ（０）を積和演算器３０へ転送する。そして、積和演算器３０は、汎用レジスタ１６から転送された処理対象データｘ（０＋０−ｍ）と、読出セレクタ２８から転送された係数データａ（０）とを乗算し、その乗算結果を累積加算する。
【００６６】
その後、係数データ積和命令に応じて、マルチプレクサ１８は、ポインタレジスタ２０に”１”を加算する。すると、読出セレクタ２８は、ポインタレジスタ２０からの制御信号により、係数レジスタ２４の次のアドレス、すなわちアドレスＰ１を選択する。したがって、次の係数データａ（ｊ＋１）、すなわちａ（１）を記憶している係数レジスタ２４のアドレスが特定される。
【００６７】
このように、制御部３２は、１回の係数データ積和命令で、１つの積和演算とポインタレジスタ２０のカウントアップをセットで実行する。このため、処理対象データと係数データの対応関係を保ちながら順次処理が可能である。
【００６８】
その後、制御部３２は、ｊ＜ｍ−１が成立するか否かを判断する（ステップＳ４０）。すなわち、フィルタ処理結果ｙ（ｉ）において、すべての乗算ａ（０）×ｘ（ｉ＋０−ｍ）,ａ（１）×ｘ（ｉ＋１−ｍ），・・・,ａ（ｍ−１）×ｘ（ｉ＋ｍ−１−ｍ）が実行されたか否かを判断する。
【００６９】
ｊ＜ｍ−１が成立する場合（ステップＳ４０においてＹの場合）、すなわち、すべての乗算が実行されていない場合には、制御部３２は、次の乗算ａ（ｊ＋１）×ｘ（ｉ＋ｊ＋１−ｍ）を実行とするため、変数ｊについてｊ＝ｊ＋１の演算をする（ステップＳ４２）。
【００７０】
以下、上述したステップＳ３６，Ｓ３８，Ｓ４０，Ｓ４２を、ステップＳ４０においてｊ＜ｍ−１が不成立となるまで、すなわち、フィルタ処理結果ｙ（ｉ）におけるすべての乗算が実行されるまで繰返す。
【００７１】
さらに、ｊ＜ｍ−１が不成立となった後（ステップＳ４０においてＮの場合）、すなわち、フィルタ処理結果ｙ（ｉ）におけるすべての乗算が実行された後に、積和レジスタ３０ｃは、記憶したデータ、つまりフィルタ処理結果ｙ（ｉ）を汎用レジスタ１６へ転送し（ステップＳ４４）、リセットされる。
【００７２】
その後、制御部３２は、ｉ＜ｎ−１が成立するか否かを判断する（ステップＳ４６）。すなわち、すべてのフィルタ処理結果ｙ（０）,ｙ（１），・・・,ｙ（ｎ−１）が求められたか否かを判断する。
【００７３】
ｉ＜ｎ−１が成立する場合（ステップＳ４６においてＹの場合）、すなわち、すべてのフィルタ処理結果ｙ（０）,ｙ（１），・・・,ｙ（ｎ−１）が求められていない場合には、制御部３２は、次のフィルタ処理結果ｙ（ｉ＋１）を求めるため、変数ｉについてｉ＝ｉ＋１の演算をする（ステップＳ５０）。
【００７４】
以下、上述したステップＳ３２，Ｓ３４，Ｓ３６，Ｓ３８，Ｓ４０，Ｓ４２，Ｓ４４，Ｓ４６，Ｓ５０を、ステップＳ４６においてｉ＜ｎ−１が不成立となるまで、すなわち、すべてのフィルタ処理結果が求められるまで繰返す。
【００７５】
以上が、積和演算処理である。
【００７６】
図４は、この発明の実施の形態１に従う半導体装置における、１処理あたりのメモリ５から汎用レジスタ１６へのデータ書込回数を、従来の係数データ記憶部１０を備えない半導体装置の場合と比較した図である。
【００７７】
図４（ａ）は、係数データ数ｎ＝５、フィルタ処理数ｍ＝５の場合である。
【００７８】
図４（ｂ）は、係数データ数ｎ＝１０、フィルタ処理数ｍ＝５の場合である。
【００７９】
図４（ｃ）は、係数データ数ｎ＝５、フィルタ処理数ｍ＝１０の場合である。
【００８０】
図４（ａ），図４（ｂ），図４（ｃ）を参照して、この発明による具体的な高速化の効果について説明する。なお、従来の係数データ記憶部１０を備えない半導体装置の場合において、汎用レジスタ１６には、図２（ａ）に示すようにデータが記憶されるとして比較した。
【００８１】
図４（ａ），図４（ｂ），図４（ｃ）のいずれの場合にも、処理対象データの書込回数に関しては、従来の場合と差がない。一方、係数データの書込回数に関しては、一旦、係数記憶部１０に書込まれると、再度書込む必要がないため、従来の場合と比較して、著しく書込回数が減少している。
【００８２】
その結果、積和演算全体としても書込回数が大幅に減少し、処理高速化に有効である。
【００８３】
以上、実施の形態１では、係数データ数が多くても、メモリ５からのデータ取込回数を、最小限に抑えることができ、高速の積和演算処理が可能である。
【００８４】
なお、実施の形態１では、外部から取込んだ係数データをメモリ５に記憶しているが、係数データセットを変更する必要がない場合には、読出専用メモリ（ＲＯＭ）により実現してもよい。
【００８５】
なお、実施の形態１では、書込セレクタ２６と読出セレクタ２８を共通のポインタレジスタ２０で実現しているが、言うまでもなく、書込セレクタ２６と読出セレクタ２８のそれぞれについて異なるポインタレジスタを用いてもよい。
【００８６】
より好ましくは、上述の係数データ積和命令および係数データ書込命令についてパイプライン処理を行うことでさらなる高速化が可能である。つまり、係数データ積和命令における、積和演算器３０における積和演算と、ポインタレジスタ２０におけるカウントアップをオーバーラップさせて処理させることができる。また、係数データ書込命令における、書込セレクタ２６における係数データ書込みと、ポインタレジスタ２０におけるカウントアップについても同様のパイプライン処理が可能である。
【００８７】
［実施の形態２］
図５は、この発明の実施の形態２に従う半導体装置の構成を示す概略ブロック図である。
【００８８】
図５を参照して、この発明の実施の形態２によるマイクロコンピュータ１０２は、ＣＰＵ２と、メモリ５と、データバス６とを備える。ＣＰＵ２とメモリ５とは、データバス６を介して接続される。
【００８９】
この発明の実施の形態２によるＣＰＵ２は、制御部３２と、リードユニット１２と、汎用レジスタ４４と、積和演算器３０と、係数データ記憶部４０と、接続回路４６．０，４８．０と、内部バス１４ａ，１４ｂ，１４ｃを備える。
【００９０】
制御部３２と、リードユニット１２と、積和演算器３０と、内部バス１４ａ，１４ｂ，１４ｃとについては、上述の実施の形態１と同様であるので、説明は省略する。
【００９１】
さらに、係数データ記憶部４０は、マルチプレクサ１８と、ポインタレジスタ２０と、加算器２２と、係数レジスタ４２と、書込セレクタ２６と、読出セレクタ２８とを備える。
【００９２】
マルチプレクサ１８と、ポインタレジスタ２０と、加算器２２と、書込セレクタ２６と、読出セレクタ２８とについては、上述の実施の形態１と同様であるので、説明は省略する。
【００９３】
実施の形態２では、単純化のため、汎用レジスタ４４のアドレス付けられた記憶領域のうち、第１番目のアドレスＧＲ０と、係数レジスタ４２のアドレス付けられた記憶領域のうち、第１番目のアドレスＰ０とについて説明する。
【００９４】
汎用レジスタ４４は、接続回路４６．０を介して、アドレスＧＲ０の状態信号を係数レジスタ４２に出力する。
【００９５】
係数レジスタ４２は、接続回路４８．０を介して、アドレスＰ０の状態信号を汎用レジスタ４４に出力する。
【００９６】
接続回路４６．０は、書込制御部４６．０ａを備える。
【００９７】
書込制御部４６．０ａは、汎用レジスタデータ転送命令に応じて、汎用レジスタ４４のアドレスＧＲ０の状態信号を、係数レジスタ４２のアドレスＰ０に書込む。つまり、汎用レジスタ４４のアドレスＧＲ０のデータを、係数レジスタ４２のアドレスＰ０へ転送できる。
【００９８】
書込制御部４８．０ａは、係数レジスタデータ転送命令に応じて、係数レジスタ４２のアドレスＰ０の状態信号を、汎用レジスタ４４のアドレスＧＲ０に書込む。つまり、係数レジスタ４２のアドレスＰ０のデータを、汎用レジスタ４４のアドレスＧＲ０へ転送できる。
【００９９】
したがって、汎用レジスタ４４のアドレスＧＲ０と、係数レジスタ４２のアドレスＰ０との相互間でデータ転送が可能である。
【０１００】
当然のことながら、特定のアドレス間を相互に接続するのであれば、汎用レジスタ４４のアドレスと、係数レジスタ４２のアドレスとは任意に選択でき、接続回路の数についても任意に選定できる。
【０１０１】
さらに、割込処理が発生した時に、書込制御部４６．０ａは、汎用レジスタデータ転送命令に応じて、汎用レジスタ４４に記憶しているデータを係数レジスタ４２に退避させる。その後、割込処理の終了後に、書込制御部４８．０ａは、係数レジスタデータ転送命令に応じて、係数レジスタ４２に退避したデータを汎用レジスタ４４に復元する。
【０１０２】
より好ましくは、汎用レジスタ４４のすべてのアドレスに記憶されるデータを、係数レジスタ４２に退避できる数の接続回路を設けることにより、いかなる処理状態においても、割込処理が高速に実行できる。
【０１０３】
以上、実施の形態２では、汎用レジスタ４４のデータを、高速に退避および復元できるため、割込処理発生時における、通常処理の中断、割込処理の実行、および通常処理の再開が、より高速になる。
【０１０４】
さらに、内部バス１４ａ，１４ｂを介さずに、データ転送を行うため、割込処理に伴うデータ転送を阻害することはない。
【０１０５】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１０６】
【図１】この発明の実施の形態１に従う半導体装置の構成を示す概略ブロック図である。
【図２】この発明の実施の形態１に従う半導体装置における、積和演算時の記憶領域に記憶したデータ内容を示す図である。
【図３】この発明の実施の形態１に従う半導体装置における、積和演算処理を示すフローチャートである。
【図４】この発明の実施の形態１に従う半導体装置における、１処理あたりのメモリ５から汎用レジスタ１６へのデータ書込回数を、従来の係数データ記憶部１０を備えない半導体装置の場合と比較した図である。
【図５】この発明の実施の形態２に従う半導体装置の構成を示す概略ブロック図である。
【符号の説明】
【０１０７】
１０１，１０２  マイクロコンピュータ、１，２  ＣＰＵ、５  メモリ、６  データバス、１０，４０  係数データ記憶部、１２  リードユニット、１４ａ，１４ｂ，１４ｃ  内部バス、１６，４４  汎用レジスタ、１８  マルチプレクサ、２０  ポインタレジスタ、２２  加算器、２４，４２  係数レジスタ、２６  書込セレクタ、２８  読出セレクタ、３０  積和演算器、３０ａ  乗算器、３０ｂ  加算器、３０ｃ  積和レジスタ、３２  制御部、４６．０，４８．０  接続回路、４６．０ａ，４８．０ａ  書込制御部。
【図１】
2005338929.tif 000004
【図２】
2005338929.tif 000005
【図３】
2005338929.tif 000006
【図４】
2005338929.tif 000007
【図５】
2005338929.tif 000008