(57)【特許請求の範囲】
【請求項１】
演算処理の特徴が異なる第１および第２の独立した演算装置と、二つのポートを有し前記第１および第２の演算装置に接続された共有メモリと、二つのポートを有し前記第１および第２の演算装置に接続された共有汎用レジスタと、前記共有メモリおよび前記共有汎用レジスタを前記第１および第２の演算装置からアクセスするための第１および第２のアクセス手段と、前記第１の演算装置に設けられて前記第２の演算装置に対して割り込みを発生する割り込み手段と、前記第２の演算装置に設けられて前記割り込みによる演算処理の終了を前記第１の演算装置に知らせるための演算処理終了設定手段とを備え、
前記第１の演算装置は、演算処理の過程で前記第２の演算装置での処理の方が適している演算が発生した時、前記割り込み手段により前記第２の演算装置に対して演算処理の依頼を割り込みとして発生し、前記演算処理に必要なデータを引き数として共有汎用レジスタおよび共有メモリに格納し、
前記第２の演算装置は、依頼された演算処理を前記引き数を用いて実行し、演算結果のデータを帰り数として前記共有汎用レジスタおよび前記共有メモリに格納し、前記演算処理終了設定手段により演算処理終了情報を設定するようにし、
前記共有メモリが書き換え可能な領域を有し、前記第１および第２の演算装置からのアクセスの許可／禁止情報を前記共有メモリおよび前記共有汎用レジスタの一定範囲毎にそれぞれ設定するアクセス許可／禁止情報設定手段を設け、前記第１および第２の演算装置からのアクセス状況を前記共有メモリの一定範囲毎に前記第２および第１の演算装置へ伝達するためのアクセス状況設定手段を設け、
前記第１および第２のアクセス手段は、前記アクセス許可／禁止情報設定手段の設定内容を参照しながらアクセスが許可されている範囲についてのみ前記共有メモリおよび前記共有汎用レジスタのアクセスを行うとともに、前記アクセス状況設定手段の設定内容を参照しながら前記共有メモリの書き換え可能な領域のアクセスを行うようにし、
前記第１の演算装置は、前記第２の演算装置に対し演算の依頼をした場合に、引き数を前記共有汎用レジスタおよび前記共有メモリに設定した時に前記引き数の設定を完了したことを前記アクセス状況設定手段により設定するとともに、前記共有汎用レジスタおよび前記共有メモリのうち前記引き数を保持した領域の許可／禁止情報を前記アクセス許可／禁止情報設定手段により逆転させ、
前記第２の演算装置は、依頼された演算処理を完了した場合に前記帰り数を前記共有汎用レジスタおよび前記共有メモリに設定した時に前記帰り数の設定を完了したことを前記アクセス状況設定手段により設定するとともに、前記共有汎用レジスタおよび前記共有メモリのうち前記帰り数を保持した領域の許可／禁止情報を前記アクセス許可／禁止情報設定手段により逆転させるようにしたことを特徴とする複合演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば演算処理の特徴が異なる（同じ場合もある）複数の独立した演算装置を備えた複合演算処理装置に関するもので、複合演算処理装置に対する命令が可変のプログラムによって導き出され、順番に実行される複合演算処理装置に応用される。
【背景技術】
【０００２】
従来の複合演算処理装置では、複数の独立した演算処理装置に対し、各演算処理装置に対応した複数のメモリおよび複数の汎用レジスタを有し、第１の演算処理装置から第２の演算処理装置に対して演算処理の依頼をする場合、
（１）複数の独立した演算処理装置の外部にある共有メモリを介する方法、
（２）シリアル／パラレル等のデータの入出力部を使用する方法
により、処理依頼の内容および処理依頼するデータを転送していた。これらの従来技術では、全体の処理速度、演算処理のリアルタイム性が失われてしまう。
【０００３】
また、ある全体の処理を複数の演算処理装置に分割する場合、この分割の優劣が、全体性能を大きく左右してしまう。しかも、この処理全体の分割を行う作業は、極めて特殊な知識、技術を必要とする。
【特許文献１】特開昭６３−３３５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来の技術での、演算処理性能を高めるために複数の独立した演算処理装置を利用する方法では、
（１）主演算処理装置および従演算処理装置があり、従演算処理装置は主演算処理装置からの命令依頼を受けて動作する方法、
（２）演算処理を複数のブロックに分割し、各々の演算処理装置に各々のブロックを分担し、同時に別々の処理ブロックを実行する方法の２種類がある。
【０００５】
（１）の場合では、従演算処理装置が実動作しない時間が長く、効率が悪かった（課題１）。
【０００６】
（２）の場合では、命令の同時実行が行われ、効率は良いが、処理の内容によっては、上記したような分割が極めて困難な場合もあり、分割された各ブロックが相互に密に依存している場合もある。このような処理を（２）で実行すると、各々の演算処理装置の間で、データの送受信が頻度高く発生する。このような各演算処理装置の間でのデータの送受信は、頻度が高くなればなるほど、またデータ量が多くなればなるほど、全体の処理速度は低下する（課題２）。
【０００７】
従来の複数の独立した演算処理装置の内部は、各々単体でも演算処理可能となるよう設計されており、複数の独立した演算処理装置全体のシステムでみた場合、不用な部分、冗長な部分が存在し、システム全体のコストを上げていた（課題３）。
【０００８】
この発明の目的は、上記の問題を解決し、演算処理を効率よく安価に実行することができる複合演算処理装置を提供することである。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の複合演算処理装置は、演算処理の特徴が異なる第１および第２の独立した演算装置と、二つのポートを有し第１および第２の演算装置に接続された共有メモリと、二つのポートを有し第１および第２の演算装置に接続された共有汎用レジスタと、共有メモリおよび共有汎用レジスタを第１および第２の演算装置からアクセスするための第１および第２のアクセス手段と、第１の演算装置に設けられて第２の演算装置に対して割り込みを発生する割り込み手段と、第２の演算装置に設けられて割り込みによる演算処理の終了を第１の演算装置に知らせるための演算処理終了設定手段とを備えている。
【００１０】
第１の演算装置は、演算処理の過程で第２の演算装置での処理の方が適している演算が発生した時、割り込み手段により第２の演算装置に対して演算処理の依頼を割り込みとして発生し、演算処理に必要なデータを引き数として共有汎用レジスタおよび共有メモリに格納するようにしている。
【００１１】
第２の演算装置は、依頼された演算処理を引き数を用いて実行し、演算結果のデータを帰り数として共有汎用レジスタおよび共有メモリに格納し、演算処理終了設定手段により第１の演算装置に演算処理終了情報を設定するようにしている。
【００１２】
上記構成においては、共有メモリが書き換え可能な領域を有し、第１および第２の演算装置からのアクセスの許可／禁止情報を共有メモリおよび共有汎用レジスタの一定範囲毎にそれぞれ設定するアクセス許可／禁止情報設定手段を設け、第１および第２の演算装置からのアクセス状況を共有メモリの一定範囲毎に第２および第１の演算装置へ伝達するためのアクセス状況設定手段を設けてもよい。
【００１３】
この際、複数のアクセス手段は、アクセス許可／禁止情報設定手段の設定内容を参照しながらアクセスが許可されている範囲についてのみ共有メモリおよび共有汎用レジスタのアクセスを行うとともに、アクセス状況設定手段の設定内容を参照しながら共有メモリの書き換え可能な領域のアクセスを行うようにしている。
【００１４】
また、第１の演算装置は、第２の演算装置に対し演算の依頼をした場合に、引き数を共有汎用レジスタおよび共有メモリに設定した時に引き数の設定を完了したことをアクセス状況設定手段により設定するとともに、共有汎用レジスタおよび共有メモリのうち引き数を保持した領域の許可／禁止情報をアクセス許可／禁止情報設定手段により逆転させるようにしている。
【００１５】
さらに、第２の演算装置は、依頼された演算処理を完了した場合に帰り数を共有汎用レジスタおよび共有メモリに設定した時に帰り数の設定を完了したことをアクセス状況設定手段により設定するとともに、共有汎用レジスタおよび共有メモリのうち帰り数を保持した領域の許可／禁止情報をアクセス許可／禁止情報設定手段により逆転させるようにしている。
【００１６】
この構成によれば、第１の演算装置におけるある処理ブロック内の過程で、第２の演算装置に適した処理が発生した時、他の演算装置に対する割り込みという形で演算の依頼を行い、依頼した演算が第２の演算装置で終了するまで、他の処理を実行することができる。依頼した演算処理の演算結果は、共有メモリおよび共有汎用レジスタ内に保持され、演算処理終了情報が設定されるので、第１の演算装置は、必要な時に、演算処理終了情報を確認し、演算結果を読みとれば良い。第２の演算装置も、依頼された処理は割り込み内で処理され、依頼された演算処理の終了時、演算結果と演算処理終了情報を設定して主演算処理に戻れば良い。この時、この依頼された演算処理は、割り込み内で処理されるので、割り込み演算処理の初期部に、主演算装置で使用する共用メモリおよび共用汎用レジスタを待避させる処理を組み込めば、主演算処理に影響を与えることなく、独立して依頼された演算処理を実行できる。
【発明の効果】
【００１７】
本発明の複合演算処理装置によれば、複数の独立した演算装置で分割された各処理ブロックを同時に処理し、かつ、きわめて依存度の高い複数の各処理ブロックを処理する複数の独立した演算装置の間の送受信を、共有したメモリおよび共有汎用レジスタを使用することにより、実際のデータの転送を実行することなく行うことができるので、従来まで複数の演算装置が必要であった複雑な処理を必要とする演算処理を、効率よく、安価なシステムで実現できる。つまり、効率の良いハードウエアで効率の良いソフトウエアを作成することができる。
【００１８】
また、この複合演算処理装置によれば、第１の演算装置におけるある処理ブロック内の過程で、第２の演算装置に適した処理が発生した時、他の演算装置に対する割り込みという形で演算の依頼を行い、依頼した演算が第２の演算装置で終了するまで、他の処理を実行することができ、依頼した演算処理の演算結果は、共有メモリおよび共有汎用レジスタ内に保持され、演算処理終了情報が設定される。そのため、第１の演算装置は、必要な時に、演算処理終了情報を確認し、演算結果を読みとれば良く、第２の演算装置も、依頼された処理は割り込み内で処理され、依頼された演算処理の終了時、演算結果と演算処理終了情報を設定して主演算処理に戻れば良いので、従来まで複数の演算装置が必要であった複雑な処理を必要とする演算処理を、効率よく、安価なシステムで実現できる。つまり、効率の良いハードウエアで効率の良いソフトウエアを作成することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態を、図面を参照しながら説明する。
【００２０】
この発明の複合演算処理装置の一実施例として、独立した１６ビットの演算処理装置（以下、マイクロコントローラとする）と積和演算に特徴をもつ１６ビットのデータ幅／３２ビットの命令コード幅を持つ演算処理装置（以下、デジタルシグナルプロセッサとする）とからなる複合演算処理装置について説明する。
【００２１】
図１は、この発明の実施例である共有メモリ（共有命令メモリおよび共有データメモリ）および共有汎用レジスタをもつ１６ビットマイクロコントローラと１６ビットのデータ幅／３２ビットの命令コード幅を持つデジタルシグナルプロセッサとからなる複合演算処理装置のブロック図である。
【００２２】
図１において、１０１はデジタルシグナルプロセッサおよびマイクロコントローラの共有命令メモリであり、複数のポートを有している。
【００２３】
１０２はデジタルシグナルプロセッサおよびマイクロコントローラの共有データメモリであり、複数のポートを有している。
【００２４】
１０３はデジタルシグナルプロセッサだけにアクセスが許されるローカルデータメモリである。
【００２５】
１０４はマイクロコントローラ用の共有命令メモリポインタである。
【００２６】
１０５はデジタルシグナルプロセッサ用の共有命令メモリポインタである。
【００２７】
１０６はマイクロコントローラ用の共有データメモリポインタである。
【００２８】
１０７はデジタルシグナルプロセッサ用の共有データメモリポインタである。
【００２９】
１０８はデジタルシグナルプロセッサ用のローカルデータメモリポインタである。
【００３０】
１０９はデジタルシグナルプロセッサおよびマイクロコントローラの共有汎用レジスタであり、複数のポートを有している。
【００３１】
１１０はマイクロコントローラ用の演算処理部である。
【００３２】
１１１はデジタルシグナルプロセッサ用の演算処理部である。
【００３３】
１１２はデジタルシグナルプロセッサ用の乗算部である。
【００３４】
１１３，１１４および１１５はマイクロコントローラおよびデジタルシグナルプロセッサの共有外部入出力部（共有周辺入出力部）である。
【００３５】
１１６はマイクロコントローラ用の命令コードアドレスバス（共有命令メモリアドレスバス）である。
【００３６】
１１７はデジタルシグナルプロセッサ用の命令コードアドレスバス（共有命令メモリアドレスバス）である。
【００３７】
１１８はマイクロコントローラ用の命令コードデータバス（共有命令メモリデータバス）である。
【００３８】
１１９はデジタルシグナルプロセッサ用の命令コードデータバス（共有命令メモリデータバス）である。
【００３９】
１２０はマイクロコントローラ用の共有データメモリデータバスである。
【００４０】
１２１はデジタルシグナルプロセッサ用の共有データメモリデータバスである。
【００４１】
１２２はデジタルシグナルプロセッサ用のローカルデータメモリデータバスである。
【００４２】
１２３はマイクロコントローラ用の命令解読部である。
【００４３】
１２４はデジタルシグナルプロセッサ用の命令解読部である。
【００４４】
図２に共有命令メモリ１０１の構造を示す。図２において、２０１および２０２は命令メモリ領域で、１６ビット×Ｎの２面構造であり、複数のポートを有している。
【００４５】
２０３はマイクロコントローラ用の命令メモリ管理部（特許請求の範囲におけるアクセス手段を構成する）である。
【００４６】
２０４はデジタルシグナルプロセッサ用の命令メモリ管理部（特許請求の範囲におけるアクセス手段を構成する）である。
【００４７】
２０５はマイクロコントローラ用の命令メモリ最大アドレス値設定レジスタである。
【００４８】
２０６はデジタルシグナルプロセッサ用の命令メモリ最小アドレス値設定レジスタである。
【００４９】
２０７はマイクロコントローラ用の現在のアドレス値と命令メモリ最大アドレス値設定レジスタ２０５の設定値とを比較する比較部である。
【００５０】
２０８はデジタルシグナルプロセッサ用の現在のアドレス値と命令メモリ最小アドレス値設定レジスタ２０６の設定値とを比較する比較部である。
【００５１】
２０９はマイクロコントローラ用の命令コードアドレスバスである。
【００５２】
２１０はデジタルシグナルプロセッサ用の命令コードアドレスバスである。
【００５３】
２１１はマイクロコントローラ用の命令コードデータバスである。
【００５４】
２１２はデジタルシグナルプロセッサ用の命令コードデータバスである。
【００５５】
図３に書き換え可能な共有データメモリ１０２の構造を示す。図３において、３０１，３０２，３０３，３０４は書き換え可能なデータメモリ領域で、各々１６ビット×Ｎ（Ｎは２のべき数が望ましい）ワードのセグメント単位の領域で、多面構造であり、複数のポートを有している。
【００５６】
３０５はマイクロコントローラ用のデータメモリ管理部（特許請求の範囲におけるアクセス手段を構成する）である。
【００５７】
３０６はデジタルシグナルプロセッサ用のデータメモリ管理部（特許請求の範囲におけるアクセス手段を構成する）である。
【００５８】
３０７は共有データメモリセグメント単位選択値設定レジスタである。
【００５９】
３０８はマイクロコントローラ用の現在のアドレス値と共有データメモリセグメント単位選択値設定レジスタ３０７のセグメント選択値とを比較する比較部である。
【００６０】
３０９はデジタルシグナルプロセッサ用の現在のアドレス値と共有データメモリセグメント単位選択値設定レジスタ３０７のセグメント選択値とを比較する比較部である。
【００６１】
３１０は共有データメモリアクセス状況フラグレジスタ（特許請求の範囲におけるアクセス状況通知手段を構成する）である。
【００６２】
３１１はマイクロコントローラ用の共有データメモリデータバスである。
【００６３】
３１２はデジタルシグナルプロセッサ用の共有データメモリデータバスである。
【００６４】
３１３はマイクロコントローラ用の共有データメモリアドレスバスである。
【００６５】
３１４はデジタルシグナルプロセッサ用の共有データメモリアドレスバスである。
【００６６】
３１５はマイクロコントローラ用の共有データメモリ書き込み信号である。
【００６７】
３１６はマイクロコントローラ用の共有データメモリ読み出し信号である。
【００６８】
３１７はデジタルシグナルプロセッサ用の共有データメモリ書き込み信号である。
【００６９】
３１８はデジタルシグナルプロセッサ用の共有データメモリ読み出し信号である。
【００７０】
図４に共有汎用レジスタ１０９の構造を示す。図４において、４０１，４０２，４０３〜４０Ｎは汎用レジスタで、１６ビット×Ｎ（Ｎは２のべき数が望ましい）ワードの構成であり、複数のポートを有している。
【００７１】
４１０はマイクロコントローラ用のレジスタ選択部である。
【００７２】
４１１はデジタルシグナルプロセッサ用のレジスタ選択部である。
【００７３】
４１２は共有汎用レジスタ１０９のアクセス許可／禁止情報設定レジスタ（特許請求の範囲におけるアクセス許可／禁止設定手段を構成する）で、各々の汎用レジスタ４０１，４０２，４０３〜４０Ｎがマイクロコントローラもしくはデジタルシグナルプロセッサからアクセス可能かどうかを設定するレジスタである。
【００７４】
４１３はマイクロコントローラ用の共有データメモリデータバスである。
【００７５】
４１４はデジタルシグナルプロセッサ用の共有データメモリデータバスである。
【００７６】
４１５はマイクロコントローラ用の共有データメモリアドレスバスである。
【００７７】
４１８はデジタルシグナルプロセッサ用の共有データメモリアドレスバスである。
【００７８】
４１６はマイクロコントローラ用の共有データメモリ書き込み信号である。
【００７９】
４１７はマイクロコントローラ用の共有データメモリ読み出し信号である。
【００８０】
４１９はデジタルシグナルプロセッサ用の共有データメモリ書き込み信号である。
【００８１】
４２０はデジタルシグナルプロセッサ用の共有データメモリ読み出し信号である。
【００８２】
４２１は対応する汎用レジスタ４０１，４０２，４０３〜４０Ｎがアクセスされたかどうかを示すフラグレジスタである。図５に共有外部入出力部１１３〜１１５の構成を示す。
【００８３】
図５において、５０１は出力データバッファである。
【００８４】
５０２は入力データバッファである。
【００８５】
５０３は外部入出力制御部（特許請求の範囲におけるアクセス手段を構成する）である。
【００８６】
５０４は共有外部入出力部１１３〜１１５の状態を示す状態保持部である。
【００８７】
５０５は共有外部入出力部１１３〜１１５のマイクロコントローラおよびデジタルシグナルプロセッサからのアクセス許可／禁止情報を設定するアクセス許可／禁止情報設定レジスタ（特許請求の範囲におけるアクセス許可／禁止設定手段を構成する）である。
【００８８】
５０６は共有外部入出力部１１３〜１１５の状態により演算処理装置に対し割り込みを発生させる割り込み信号発生部（特許請求の範囲における割り込み信号発生部を構成する）である。
【００８９】
５０７は外部入出力端子である。
【００９０】
５１０はマイクロコントローラの共有データメモリデータバスである。
【００９１】
５１１はデジタルシグナルプロセッサの共有データメモリデータバスである。
【００９２】
５１２はマイクロコントローラに対する共有外部入出力部割り込み信号である。
【００９３】
５１３はデジタルシグナルプロセッサに対する共有外部入出力部割り込み信号である。
【００９４】
５１４は出力データバッファ５０１から外部入出力端子５０７への出力データバスである。
【００９５】
５１５は外部入出力端子５０７から入力データバッファ５０２への入力データバスである。
【００９６】
５１６はマイクロコントローラからの共有外部入出力部選択信号である。
【００９７】
５１７はデジタルシグナルプロセッサからの共有外部入出力選択信号である。
【００９８】
５１８は外部入出力信号である。
【００９９】
以下に、マイクロコントローラおよびデジタルシグナルプロセッサの動作について詳しく説明する。
【０１００】
マイクロコントローラ：
まず、マイクロコントローラの命令は、そのアドレスが、図１の共有命令メモリポインタ１０４から、命令コードアドレスバス１１６、図２の命令コードアドレスバス２０９を通り、図２の命令メモリ管理部２０３に入る。命令メモリ管理部２０３では、命令コードアドレスバス２０９から入力されたアドレスが、命令メモリ最大アドレス値設定レジスタ２０５に保持されている命令メモリ最大アドレス設定値と比較し、設定値以内であれば、そのままのアドレスを共有命令メモタ１０１の命令メモリ領域２０１，２０２のアドレスとして出力する。設定値を超えるアドレスと判断した場合、それは、デジタルシグナルプロセッサに割り当てられた命令メモリ領域であり、プログラムの異常と判断し、異常終了処理を実行するアドレスに変換される。命令メモリ領域２０１，２０２では、アドレスに対応する命令コードを命令コードデータバス２１１に命令コードデータとして出力し、図１の命令コードデータバス１１８を通り、命令解読部１２３に入る。命令解読部１２３では、命令を解読し、命令に対応した処理を実行するように、対応する部位に命令を出力する。
【０１０１】
マイクロコントローラ側からみた場合、命令メモリ領域２０１，２０２は、命令メモリ領域２０１に偶数ワード、命令メモリ領域２０２に奇数ワードの構造になっており、命令コードアドレスバス２０９の最下位ビットが、命令メモリ領域２０１／２０２の選択ビットとなる。命令コードアドレスバス２０９に出力されるアドレスが、偶数の場合、命令メモリ領域２０１から対応する命令コードデータが、命令コードデータバス２１１に出力され、命令メモリ領域２０２の命令コードデータバス２１１側の出力は、高インピーダンス状態となる。一方、命令コードアドレスバス２０９に出力されるアドレスが、奇数の場合、命令メモリ領域２０１の命令コードデータバス２１１側の出力は、高インピーダンス状態となり、命令メモリ領域２０２から対応する命令コードデータが、命令コードデータバス２１１に出力される。
【０１０２】
つぎに、マイクロコントローラの共有データメモリ１０２へのアクセスは、そのアドレスが、図１の共有データメモリポインタ１０６、図３の共有データメモリアドレスバス３１３を通り、図３のデータメモリ管理部３０５に入る。データメモリ管理部３０５では、共有データメモリアドレスバス３１３から入力されたアドレスと、共有データメモリセグメント単位選択値設定レジスタ３０７に保持されている設定値とを比較部３０８で比較し、マイクロコントローラのアクセスが許可されたアドレスであれば、そのまま共有データメモリ１０２のデータメモリ領域３０１〜３０４のアドレスとして出力し、許可されていないアドレスであれば、共有データメモリ１０２のデータメモリ領域３０１〜３０４へのアドレスの出力を停止する。また、この時に禁止セグメントのアドレスをアクセスしようとしたことをフラグ等で知らせることも可能とする。共有データメモリ１０２のデータメモリ領域３０１〜３０４中の許可セグメントのアドレスを書き込みアクセスした際、当該セグメントの内容が変更されたことを通知するために、共有データメモリアクセス状況フラグレジスタ３１０のそのセグメントに対応するフラグをセットする。このフラグをデジタルシグナルプロセッサからも読み出すことを可能にすることにより、共有データメモリ１０２上の共有のデータ、およびデータの処理を制御できる。
【０１０３】
つまり、アクセス状況フラグをデジタルシグナルプロセッサからも読み出すことを可能にすることにより、共有データメモリ上の書き換えが実行されたセグメントを知ることができる。また、マイクロコントローラは、アクセスが許可された共有データメモリのセグメントをデジタルシグナルプロセッサに許可するようセグメント単位選択値設定レジスタの値を変更できる。これらの動作により共有データメモリ上の共有のデータおよびデータの処理を制御できる（データの受け渡しアクセスの許可禁止のシーケンスは図６参照）。
【０１０４】
アクセスが許可されたアドレスのデータは、データメモリ書き込み信号３１５およびデータメモリ読み出し信号３１６に従って書き込み処理、読み出し処理の各々の処理が適宜実行される。
【０１０５】
マイクロコントローラの共有汎用レジスタ１０９へのアクセスは、共有データメモリ１０２と同様であり、図４の共有データメモリアドレスバス４１５を通してレジスタ指定信号がレジスタ選択部４１０に入力される。レジスタ選択部４１０では、共有データメモリアドレスバス４１５を通ったレジスタ指定信号で指定される汎用レジスタ４０１〜４０Ｎが、マイクロコントローラからのアクセスを許可しているかどうかを、アクセス許可／禁止情報設定レジスタ４１２の内容とで比較し、アクセス可能であれば指定する汎用レジスタ４０１〜４０Ｎへのアクセス信号を出力する。許可されていない汎用レジスタ４０１〜４０Ｎであれば、指定する汎用レジスタ４０１〜４０Ｎへのアクセス信号の出力を停止する。また、この時に禁止汎用レジスタへアクセスしようとしたことをフラグ等で知らせることも可能とする。アクセス許可された汎用レジスタ４０１〜４０Ｎは、データメモリ書き込み信号４１６およびデータメモリ読み出し信号４１７に従って書き込み処理、読み出し処理の各々の処理が適宜実行される。
【０１０６】
デジタルシグナルプロセッサ：
まず、デジタルシグナルプロセッサの命令は、そのアドレスが、図１の共有命令メモリポインタ１０５から、命令コードアドレスバス１１７、図２の命令コードアドレスバス２１０を通り、図２の命令メモリ管理部２０４に入る。命令メモリ管理部２０４では、命令コードアドレスバス２１０から入力されたアドレスが、命令メモリ最小アドレス値設定レジスタ２０６に保持されている命令メモリ最小アドレス設定値と比較し、設定値以上であれば、そのままのアドレスを共有命令メモリ１０１の命令メモリ領域２０１，２０２のアドレスとして出力する。設定値以下のアドレスと判断した場合、それは、マイクロコントローラに割り当てられた命令領域であり、プログラムの異常と判断し、異常終了処理を実行するアドレスに変換される。命令メモリ２０１，２０２では、アドレスに対応する命令コードを命令コードデータバス２１２に命令コードデータとして出力し、図１の命令コードデータバス１１９を通り、命令解読部１２４に入る。命令解読部１２４では、命令を解読し、命令に対応した処理を実行するように、対応する部位に命令を出力する。
【０１０７】
デジタルシグナルプロセッサ側からみた場合、命令メモリ領域２０１，２０２は、命令メモリ領域２０１に下位ワード、命令メモリ領域２０２に上位ワードの構造になっており、命令コードアドレスバス２０９のアドレスデータの値に対応した命令コードデータが、命令メモリ領域２０１から１６ビット、命令メモリ領域２０２から１６ビットの合わせて３２ビットの命令コードデータが命令コードデータバス２１２に出力される。
【０１０８】
つぎに、デジタルシグナルプロセッサの共有データメモリ１０２へのアクセスも、マイクロコントローラと同様に、そのアドレスが、図１の共有データメモリポインタ１０７、図３の共有データメモリアドレスバス３１４を通り、図３のデータメモリ管理部３０６に入る。データメモリ管理部３０６では、共有データメモリアドレスバス３１４から入力されたアドレスと、共有データメモリセグメント単位選択値設定レジスタ３０７に保持されている設定値とを比較部３０９で比較し、デジタルシグナルプロセッサのアクセスが許可されたアドレスであれば、そのままデータメモリ１０２のデータメモリ領域３０１〜３０４のアドレスとして出力し、許可されていないアドレスであれば、共有データメモリ１０２へのアドレスの出力を停止する。また、この時に禁止セグメントのアドレスをアクセスしようとしたことをフラグ等で知らせることも可能とする。共有データメモリ１０２のデータメモリ領域３０１〜３０４中の許可セグメントのアドレスを書き込みアクセスした際、当該セグメントの内容が変更されたことを通知するために、共有データメモリアクセス状況フラグレジスタ３１０のそのセグメントに対応するフラグをセットする。このフラグをマイクロコントローラ４からも読み出すことを可能にすることにより、共有データメモリ１０２上の共有のデータ、およびデータの処理を制御できる。
【０１０９】
つまり、アクセス状況フラグをデジタルシグナルプロセッサからも読み出すことを可能にすることにより、共有データメモリ上の書き換えが実行されたセグメントを知ることができる。また、マイクロコントローラは、アクセスが許可された共有データメモリのセグメントをデジタルシグナルプロセッサに許可するようセグメント単位選択値設定レジスタの値を変更できる。これらの動作により共有データメモリ上の共有のデータおよびデータの処理を制御できる（データの受け渡しアクセスの許可禁止のシーケンスは図６参照）。
【０１１０】
アクセス許可されたアドレスのデータは、データメモリ書き込み信号３１７およびデータメモリ読み出し信号３１８に従って書き込み処理、読み出し処理の各々の処理が実行される。
【０１１１】
デジタルシグナルプロセッサの共有汎用レジスタ１０９へのアクセスは、共有データメモリ１０２と同様に、図４の共有データメモリアドレスバス４１８を通してレジスタ指定信号がレジスタ選択部４１１に入力される。レジスタ選択部４１１では、共有データメモリアドレスバス４１８を通ったレジスタ指定信号４１８で指定されるレジスタが、デジタルシグナルプロセッサからのアクセスを許可しているかどうかを、アクセス許可／禁止情報設定レジスタ４１２の内容とで比較し、アクセス可能であれば指定する汎用レジスタ４０１〜４０Ｎへのアクセス信号を出力する。許可されていない汎用レジスタ４０１〜４０Ｎであれば、指定する汎用レジスタ４０１〜４０Ｎへのアクセス信号の出力を停止する。また、この時に禁止汎用レジスタへアクセスしようとしたことをフラグ等で知らせることも可能とする。アクセスが許可された汎用レジスタ４０１〜４０Ｎは、データメモリ書き込み信号４１８およびデータメモリ読み出し信号４１９に従って、書き込み処理、読み出し処理の各々の処理が適宜実行される。
【０１１２】
共有外部入出力部１１３〜１１５へのアクセス：
共有外部入出力部１１３〜１１５へのアクセスも共有データメモリ１０２、共有汎用レジスタ１０９と同様なアクセスとなる。
【０１１３】
マイクロコントローラが共有外部入出力部１１３〜１１５をアクセスする場合、マイクロコントローラから図５の共有外部入出力部選択信号５１６が共有外部入出力部制御部５０３に入力される。共有外部入出力部制御部５０３では共有外部入出力部１１３〜１１５内のアクセス許可／禁止情報設定レジスタ５０５の内容を確認し、マイクロコントローラのアクセスが許可されている場合には、マイクロコントローラの共有データメモリデータバス５１０と出力データバッファ５０１、入力データバッファ５０２間のアクセスを実行させる。また、同時にその結果により共有外部入出力部１１３〜１１５の状態を保持する状態保持部５０４を変更する。共有外部入出力部１１３〜１１５の状態変化が割り込み要因となる場合、割り込み信号発生部５０６でマイクロコントローラに対する共有外部入出力部割り込み信号５１２を発生させる。マイクロコントローラのアクセスが禁止されている場合には、実際の共有外部入出力部１１３〜１１５へのアクセスは実行されない。しかし、禁止されたアクセスが実行されたことを通知するフラグの設定を行う。
【０１１４】
デジタルシグナルプロセッサが共有外部入出力部１１３〜１１５をアクセスする場合、デジタルシグナルプロセッサから図５の共有外部入出力部選択信号５１７が共有外部入出力部制御部５０３に入力される。共有外部入出力部制御部５０３では共有外部入出力部１１３〜１１５内のアクセス許可／禁止情報設定レジスタ５０５の内容を確認し、デジタルシグナルプロセッサのアクセスが許可されている場合には、デジタルシグナルプロセッサの共有データメモリデータバス５１１と出力データバッファ５０１、入力データバッファ５０２へ間のアクセスを実行させる。また、同時にその結果により共有外部入出力部１１３〜１１５の状態を保持する状態保持部５０４を変更する。共有外部入出力部１１３〜１１５の状態変化が割り込み要因となる場合、割り込み信号発生部５０６でデジタルシグナルプロセッサに対する共有外部入出力部割り込み信号５１３を発生させる。デジタルシグナルプロセッサのアクセスが禁止されている場合には、実際の共有外部入出力部１１３〜１１５へのアクセスは実行されない。しかし、禁止されたアクセスが実行されたことを通知するフラグの設定を行う。
【０１１５】
演算処理依頼割り込み：
マイクロコントローラからデジタルシグナルプロセッサに対し演算処理の依頼割り込みを実行する場合のシーケンスを図６に示す。
【０１１６】
６０１；演算処理依頼側、本例の場合マイクロコントローラは依頼する処理内容および処理データを共有汎用レジスタ１０９および共有データメモリ１０２に設定する。
【０１１７】
本例では、図１の共有汎用レジスタ１０９において、処理依頼する演算処理番号"ｋ"を図４の汎用レジスタ４０１に、演算処理を実行してほしいデータメモリ領域先頭番地"Ｍ"を図４の汎用レジスタ４０２に、データ数"Ｎ"を図４の汎用レジスタ４０３に設定し、図１の共有データメモリ１０２において"Ｍ"番地以降、例えば図３の書き換え可能なデータメモリ領域３０２に"Ｎ"個のデータを設定する。
【０１１８】
６０２；これらのデータの設定終了後、設定した共有汎用レジスタ１０９（図４の汎用レジスタ４０１〜４０３）、共有データメモリ１０２（図３の書き換え可能なデータメモリ領域３０２）を演算処理被依頼側がアクセス可能となるように、図３の共有データメモリセグメント単位選択値設定レジスタ３０７および図４のアクセス許可／禁止情報設定レジスタ４１２の内容を変更する。
【０１１９】
６０３；演算処理依頼側（マイクロコントローラ）は演算処理被依頼側（デジタルシグナルプロセッサ）に対し割り込みを発生させる（特許請求の範囲における割り込み手段に相当する）。
【０１２０】
６０４；その後、演算処理依頼側（マイクロコントローラ）は、別処理を実行させる。
【０１２１】
６０５；演算処理被依頼側（デジタルシグナルプロセッサ）は、主処理を実行中、演算処理依頼の割り込みを受理する。
【０１２２】
６０６；割り込みを実行する。割り込み処理の先頭で、共有汎用レジスタ１０９の汎用レジスタ４０１，４０２，４０３の内容を確認し、共有データメモリ１０２の書き換え可能なデータメモリ領域３０２のデータを使用し、依頼された演算処理を実行する。
【０１２３】
本例では、図４の汎用レジスタ４０１の演算処理番号"ｋ"の処理を図３の書き換え可能なデータメモリ領域３０２のアドレス"Ｍ"から"Ｎ"個のデータを用いて実行し、結果を図３の書き換え可能なデータメモリ領域３０２のアドレス"Ｍ"以降に書き込む。
【０１２４】
６０７；演算終了を知らせるコードを図４の汎用レジスタ４０１に設定する。
【０１２５】
６０８；使用した共有汎用レジスタ１０９（図４の汎用レジスタ４０１〜４０３）、共有データメモリ１０２（図３のデータメモリ領域３０２）を演算依頼側がアクセス可能となるように、図３の共有データメモリセグメント単位選択値設定レジスタ３０７および図４のアクセス許可／禁止情報設定レジスタ４１２の内容を変更する。
【０１２６】
６０９；割り込みを終了する。
【０１２７】
６１０；演算処理被依頼側はもとの主処理を実行する。
【０１２８】
６１１；演算処理依頼側は、図４の汎用レジスタ４０１の処理終了コードをポーリングする（特許請求の範囲における演算処理終了情報設定手段に相当する）。
【０１２９】
６１２；依頼した演算処理が終了したことを確認後、次の処理へ移る。なお、デジタルシグナルプロセッサからマイクロコントローラに対して演算処理の依頼、割り込みをするのも同様に可能である。
【０１３０】
なお、上記では、最も好ましい実施例の一つについて説明したが、これに限らず、メモリ、汎用レジスタ、外部入出力部の何れかが共有ではなく、個別に設けられているものも、実施例としてあげることができる。
【産業上の利用可能性】
【０１３１】
本発明にかかる複合演算処理装置は、従来まで複数の演算処理部が必要であった複雑な処理を必要とする演算処理を、効率よく、安価なシステムで実現できる。つまり、効率の良いハードウエアで効率の良いソフトウエアを作成することができるという効果を有し、複合演算処理装置に対する命令が可変のプログラムによって導き出され、順番に実行される複合演算処理装置等として有用である。
【図面の簡単な説明】
【０１３２】
【図１】この発明の一実施例の複合演算処理装置の構成を示すブロック図である。
【図２】図１における共有命令メモリの具体構成を示すブロック図である。
【図３】図１における共有データメモリの具体構成を示すブロック図である。
【図４】図１における共有汎用レジスタの具体構成を示すブロック図である。
【図５】図１における共有外部入出力部の具体構成を示すブロック図である。
【図６】図１の複合演算処理装置における演算処理依頼割り込みシーケンスを示す概略図である。
【符号の説明】
【０１３３】
１０１  共有命令メモリ
１０２  共有データメモリ
１０３  ローカルデータメモリ
１０４  共有命令メモリポインタ
１０５  共有命令メモリポインタ
１０６  共有データメモリポインタ
１０７  共有データメモリポインタ
１０８  ローカルデータメモリポインタ
１０９  共有汎用レジスタ
１１０  演算処理部
１１１  演算処理部
１１２  乗算部
１１３  共有外部入出力部
１１４  共有外部入出力部
１１５  共有外部入出力部
１１６  命令コードアドレスバス
１１７  命令コードアドレスバス
１１８  命令コードデータバス
１１９  命令コードデータバス
１２０  共有データメモリデータバス
１２１  共有データメモリデータバス
１２２  ローカルデータメモリデータバス
１２３  命令解読部
１２４  命令解読部
２０１  命令メモリ領域
２０２  命令メモリ領域
２０３  命令メモリ管理部
２０４  命令メモリ管理部
２０５  命令メモリ最大アドレス値設定レジスタ
２０６  命令メモリ最小アドレス値設定レジスタ
２０７  比較部
２０８  比較部
２０９  命令コードアドレスバス
２１０  命令コードアドレスバス
２１１  命令コードデータバス
２１２  命令コードデータバス
３０１  データメモリ領域
３０２  データメモリ領域
３０３  データメモリ領域
３０４  データメモリ領域
３０５  データメモリ管理部
３０６  データメモリ管理部
３０７  共有データメモリセグメント単位選択値設定レジスタ
３０８  比較部
３０９  比較部
３１０  共有データメモリアクセス状況フラグレジスタ
３１１  共有データメモリデータバス
３１２  共有データメモリデータバス
３１３  共有データメモリアドレスバス
３１４  共有データメモリアドレスバス
３１５  共有データメモリ書き込み信号
３１６  共有データメモリ読み出し信号
３１７  共有データメモリ書き込み信号
３１８  共有データメモリ読み出し信号
４０１  汎用レジスタ
４０２  汎用レジスタ
４０３  汎用レジスタ
４０Ｎ  汎用レジスタ
４１０  レジスタ選択部
４１１  レジスタ選択部
４１２  アクセス許可／禁止情報設定レジスタ
４１３  共有データメモリデータバス
４１４  共有データメモリデータバス
４１５  共有データメモリアドレスバス
４１６  共有データメモリ書き込み信号
４１７  共有データメモリ読み出し信号
４１８  共有データメモリアドレスバス
４１９  共有データメモリ書き込み信号
４２０  共有データメモリ読み出し信号
４２１  フラグレジスタ
５０１  出力データバッファ
５０２  入力データバッファ
５０３  外部入出力制御部
５０４  状態保持部
５０５  アクセス許可／禁止情報設定レジスタ
５０６  割り込み信号発生部
５０７  外部入出力端子
５１０  共有データメモリデータバス
５１１  共有データメモリデータバス
５１２  共有外部入出力部割り込み信号
５１３  共有外部入出力部割り込み信号
５１４  出力データバス
５１５  入力データバス
５１６  共有外部入出力部選択信号
５１７  共有外部入出力部選択信号
５１８  外部入出力信号
【図１】
0003710798.tif 000002
【図２】
0003710798.tif 000003
【図３】
0003710798.tif 000004
【図４】
0003710798.tif 000005
【図５】
0003710798.tif 000006
【図６】
0003710798.tif 000007