(57)【要約】【課題】高い汎用性を維持させつつ、信号処理装置が使用可能な資源の利用効率を向上させる。【解決手段】ＣＰＵ１０１は、楽音に付加させる音響効果をユーザが新たに指定すると、ＲＯＭ１０２から転送すべきプログラムを命令単位で読み出してＤＳＰ１０４に転送する。ＲＯＭ１０２から読み出した命令は、ＲＯＭ１０２に格納されているプログラム・アドレス・テーブルを参照して内容を変更すべき命令か否か判定し、内容を変更すべき命令と判定した場合には、ＲＯＭ１０２に格納されているＤＳＰ・ＲＡＭ・アドレス・テーブル中のＲＯＭ１０６のアドレスを用いて、その命令のアドレス部の内容を変更する。そのようにして命令のアドレス部の内容を変更することにより、ＣＰＵ１０１は、ＤＳＰ１０４が使用する資源の管理を行う。【選択図】      図１
2007299421.tif 000002
【特許請求の範囲】
【請求項１】
モジュール化されたプログラムを受け取って実行する信号処理装置が使用する資源を管理する装置であって、
前記プログラムを記憶した記憶手段から前記信号処理装置に転送すべきプログラムを読み出すプログラム読出手段と、
前記プログラム読出手段が読み出したプログラムを構成する命令の内容を変更する命令変更手段と、
前記命令変更手段により命令の内容が変更されたプログラムを前記信号処理装置に転送する転送手段と、
を具備したことを特徴とする信号処理装置の資源管理装置。
【請求項２】
前記命令変更手段は、前記プログラム中で内容を変更すべき命令を検出し、該検出した命令の内容として、データの読み出し先、或いは該データの格納先を指定する該命令中のアドレス部の内容を変更することにより、前記信号処理装置が使用する資源を管理する、
ことを特徴とする請求項１記載の信号処理装置の資源管理装置。
【請求項３】
前記信号処理装置に転送した全プログラムのうちの一部のプログラムを他のプログラムに変える場合、該一部のプログラムに割り当てた資源を該他のプログラムに割り当てる命令の内容の変更を行って転送し、該一部のプログラムと該他のプログラムの資源量が一致していないときに、該一部のプログラムの資源に続けて資源が割り当てられたプログラムを、該資源量の違いに応じた命令の内容の変更を行って転送する、
ことを特徴とする請求項１、または２記載の信号処理装置の資源管理装置。
【請求項４】
モジュール化されたプログラムを受け取って実行する信号処理装置が使用する資源を管理する装置であって、
所定の記憶手段に記憶されたプログラムのなかで前記信号処理装置に転送させるプログラムを、該プログラムの実行に必要な資源量、及び該信号処理装置の残りの資源量から選択するプログラム選択手段と、
前記プログラム選択手段が選択したプログラムを前記記憶手段から読み出して前記信号処理装置に転送する転送手段と、
を具備したことを特徴とする信号処理装置の資源管理装置。
【請求項５】
前記プログラム選択手段は、転送すべきと指定されたプログラムの実行に必要な資源量が残っている場合、該指定されたプログラムを前記転送させるプログラムとして選択し、該資源量が残っていない場合には、該指定されたプログラムの代替となり、且つ前記資源管理装置が資源不足とならないプログラムを該転送させるプログラムとして選択する、
ことを特徴とする請求項４記載の信号処理装置の資源管理装置。
【請求項６】
モジュール化されたプログラムの信号処理装置への転送に用いられる方法であって、
前記プログラムを記憶した記憶手段から前記信号処理装置に転送すべきプログラムを読み出し、
前記記憶手段から読み出したプログラムを構成する命令の内容を変更し、
該命令の内容を変更したプログラムを前記信号処理装置に転送する、
ことを特徴とするプログラム転送方法。
【請求項７】
モジュール化されたプログラムの信号処理装置への転送に用いられる方法であって、
所定の記憶手段に記憶されたプログラムのなかで前記信号処理装置に転送させるプログラムを、該プログラムの実行に必要な資源量、及び該信号処理装置の残りの資源量から選択し、
該選択したプログラムを前記記憶手段から読み出して前記信号処理装置に転送する、
ことを特徴とするプログラム転送方法。
【請求項８】
モジュール化されたプログラムを記憶した記憶手段から信号処理装置に転送すべきプログラムを読み出す手段と、
前記読み出す手段により読み出されたプログラムを構成する命令の内容を変更する手段と、
前記変更する手段により命令の内容が変更されたプログラムを前記信号処理装置に転送する手段と、
を実現させるプログラムを格納した記録媒体。
【請求項９】
所定の記憶手段にモジュール化されて記憶されたプログラムのなかで信号処理装置に転送させるプログラムを、該プログラムの実行に必要な資源量、及び該信号処理装置の残りの資源量から選択する手段と、
前記選択する手段により選択されたプログラムを前記記憶手段から読み出して前記信号処理装置に転送する手段と、
を実現させるプログラムを格納した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＳＰ（デジタル・シグナル・プロセサ）等のモジュール化されたプログラムを受け取って実行する信号処理装置が使用する資源を管理するための技術に関する。
【背景技術】
【０００２】
ＤＳＰ等の信号処理装置には、演算の繰り返しを高速に処理する回路構成が採用されている。それにより、汎用のマイクロプロセサ（ＣＰＵ）に比べて、演算速度が大幅に向上されている。高速な演算速度を有するという特長を生かして、通信処理や音声処理、及び画像処理等の用途に幅広く用いられている。オーディオ（音楽）分野では、コンサート・ホールや劇場にいるかのような雰囲気を反射音（残響音）により作り出すといったことを含む各種音響効果や音源を実現させるための装置として注目を集めている。
【０００３】
信号処理装置は、プログラムを実行することで処理を行う。そのプログラムは、用途が前もって決まっているような場合、信号処理装置に搭載されたＲＯＭ等に予め記憶させることもある。しかし、信号処理装置の多くは、外部から転送されたプログラムを受け取ってＲＡＭ等に格納し実行するようになっている。これは、転送するプログラムを変えることによって、信号処理装置に状況に応じた様々な処理を行わせられるようにするためである。
【０００４】
信号処理装置には、複数の機能を実現させる処理を行わせることも多い。信号処理装置を楽音への音響効果の付加に用いる場合を例に挙げれば、コンプレッサやディストーション、コーラス等の各種音響効果は単独で楽音に付加させることもあるが、それらのうちの幾つかを同時に楽音に付加させるようなことも多々行われる。
【０００５】
そのような機能の組合せ（上記の例では音響効果の組合わせ）も考慮しなければならないことから、考えられる処理内容（音響効果の組合せ）毎にプログラムを全て用意するとプログラム数が膨大となる。それを回避する方法には、考えられる処理内容のなかから抜粋した処理内容を行わせるプログラムを用意する、或る特定の機能だけを実現できるようにモジュール化したプログラムを用意する、の二通りの方法がある。しかし、前者の方法では、予め用意したプログラムにより実現できる機能の組合せが限定されることになって、ユーザの選択肢は狭くなる。このため、ユーザの選択肢をより広くさせることを重要視した場合には、後者の方法が採用されることが多くなっている。その後者の方法には、転送するプログラムの種類、その数を変えることにより、信号処理装置に一つの機能だけでなく、様々な機能（高い汎用性）を実現させられることから、用意するプログラム数が少なくて済むという利点がある。
【０００６】
プログラムは、一般に、処理対象とするデータを入力して何らかの操作を施し、それによって得られたデータを処理結果として出力するようになっている。周知のように、処理対象とするデータの読出（入力）先、及び処理結果であるデータの格納（出力）先といった実行時に使用する資源は、プログラム内に予め定義されている。
【０００７】
実行させるプログラムの種類や、プログラムの実行順序等（以降、便宜的に、これらをまとめて実行形態と呼ぶことにする）は状況によって変化する。これは、次に実行するプログラムが処理対象とするデータの格納場所が、その前に実行したプログラムによって変化することを意味する。このことから、従来は、プログラム間のデータの受け渡しを実現させるプログラム、即ち或るプログラムを実行することでどこかの領域に書き込まれたデータを、それの次に実行されるプログラムがデータを読み出す領域に移す処理を行うためのプログラム（以降、便宜的に補助プログラムと呼ぶ。他のプログラムについては機能プログラムと呼ぶことにする）を用意していた。その補助プログラムを用意することで、従来は、例えば以下のように信号処理装置へのプログラムの転送を行っていた。
【０００８】
信号処理装置に転送するプログラムは、通常、ＲＯＭや磁気ディスク等の不揮発性の記憶媒体に格納されている。ＣＰＵ等の信号処理装置にプログラムを転送する制御装置は、信号処理装置に行わせる処理の内容から転送すべき機能プログラムを特定するとともに、実行順序が前後する機能プログラムの種類から、それらの間でデータの受け渡しを実現させる補助プログラムを特定する。そのようにして特定したプログラムを記憶媒体から読み出し、機能プログラム間に対応する補助プログラムを挿入した形で信号処理装置に転送していた。それにより、信号処理装置に機能プログラムと補助プログラムを交互に実行させて、機能プログラム間のデータの受け渡しを行わせていた。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
機能プログラムの実行形態を事前に決めておくことができないことから、各機能プログラムは、他の機能プログラムの処理結果を消去するといったことがないように、その実行時に使用する資源（領域）が定義されている。各機能プログラム毎に、異なる資源を使用することが定義されている。従来は、信号処理装置に使用可能な資源として大容量のメモリを用意することにより、使用する資源が異なる機能プログラムを実行できるようにしていた。
【００１０】
しかし、機能プログラムの実行時に使用した資源（メモリ内の領域）は、その実行が終了すると、通常、そこに書き込まれたデータを読み出した後は使用されない。従って、従来の対処法では、一時的に使用される領域を確保するために、大容量のメモリを信号処理装置に用意する形となっていた。このため、使用可能な資源のなかで浪費される部分が多く、資源の利用効率が低いという問題点があった。
【００１１】
従来では、機能プログラム間のデータの受け渡しを実現させるために補助プログラムを用意していた。その補助プログラムは、信号処理装置に転送されてメモリに格納される。このため、補助プログラムを格納できるように、信号処理装置により大容量のメモリを用意しなければならなかった。それは、信号処理装置の製造コストをより上げるというだけでなく、その負荷をより重くするということも意味する。このようなことからも、高い汎用性を維持させようとした場合に生じる、上記問題点を解決することが強く望まれていた。
【００１２】
本発明の課題は、高い汎用性を維持させつつ、信号処理装置が使用可能な資源の利用効率を向上させることにある。
【課題を解決するための手段】
【００１３】
本発明の第１及び第２の態様の資源管理装置は、共に、モジュール化されたプログラムを受け取って実行する信号処理装置が使用する資源を管理することを前提とし、以下の手段を備える。
【００１４】
第１の態様の資源管理装置は、プログラムを記憶した記憶手段から信号処理装置に転送すべきプログラムを読み出すプログラム読出手段と、プログラム読出手段が読み出したプログラムを構成する命令の内容を変更する命令変更手段と、命令変更手段により命令の内容が変更されたプログラムを信号処理装置に転送する転送手段と、を具備する。
【００１５】
なお、上記の構成において、命令変更手段は、プログラム中で内容を変更すべき命令を検出し、該検出した命令の内容として、データの読み出し先、或いは該データの格納先を指定する該命令中のアドレス部の内容を変更することにより、信号処理装置が使用する資源を管理する、ことが望ましい。
【００１６】
また、信号処理装置に転送した全プログラムのうちの一部のプログラムを他のプログラムに変える場合、該一部のプログラムに割り当てた資源を該他のプログラムに割り当てる命令の内容の変更を行って転送し、該一部のプログラムと該他のプログラムの資源量が一致していないときに、該一部のプログラムの資源に続けて資源が割り当てられたプログラムを、該資源量の違いに応じた命令の内容の変更を行って転送する、ことが望ましい。
【００１７】
第２の態様の資源管理装置は、所定の記憶手段に記憶されたプログラムのなかで信号処理装置に転送させるプログラムを、該プログラムの実行に必要な資源量、及び該信号処理装置の残りの資源量から選択するプログラム選択手段と、プログラム選択手段が選択したプログラムを記憶手段から読み出して信号処理装置に転送する転送手段と、を具備する。
【００１８】
なお、上記の構成において、プログラム選択手段は、転送すべきと指定されたプログラムの実行に必要な資源量が残っている場合、該指定されたプログラムを転送させるプログラムとして選択し、該資源量が残っていない場合には、該指定されたプログラムの代替となり、且つ資源管理装置が資源不足とならないプログラムを該転送させるプログラムとして選択する、ことが望ましい。
【００１９】
本発明の第１および第２の態様のプログラム転送方法は、モジュール化されたプログラムの信号処理装置への転送に用いられることを前提とし、以下のようにしてプログラムを転送する。
【００２０】
第１の態様のプログラム転送方法では、プログラムを記憶した記憶手段から信号処理装置に転送すべきプログラムを読み出し、記憶手段から読み出したプログラムを構成する命令の内容を変更し、該命令の内容を変更したプログラムを信号処理装置に転送する。
【００２１】
第２の態様のプログラム転送方法では、所定の記憶手段に記憶されたプログラムのなかで信号処理装置に転送させるプログラムを、該プログラムの実行に必要な資源量、及び該信号処理装置の残りの資源量から選択し、該選択したプログラムを記憶手段から読み出して信号処理装置に転送する。
【００２２】
本発明の第１の態様の記録媒体は、モジュール化されたプログラムを記憶した記憶手段から信号処理装置に転送すべきプログラムを読み出す手段と、読み出す手段により読み出されたプログラムを構成する命令の内容を変更する手段と、変更する手段により命令の内容が変更されたプログラムを信号処理装置に転送する手段と、を実現させるプログラムを格納している。
【００２３】
本発明の第２の態様の記録媒体は、所定の記憶手段にモジュール化されて記憶されたプログラムのなかで信号処理装置に転送させるプログラムを、該プログラムの実行に必要な資源量、及び該信号処理装置の残りの資源量から選択する手段と、選択する手段により選択されたプログラムを記憶手段から読み出して信号処理装置に転送する手段と、を実現させるプログラムを格納している。
【００２４】
本発明では、信号処理装置に転送すべきプログラムが判明すると、そのプログラムを構成する命令の内容を変更して転送することにより、各プログラムの実行時に信号処理装置が使用する資源を管理する。それにより、プログラム間でのデータの受け渡し用を少なくとも含めて、プログラム間で同じ資源を使用させる。その結果、資源がより有効に利用されることになり、信号処理装置はより少ない資源でプログラムを実行できるようになる。
【００２５】
本発明では、プログラムに割り当てる信号処理装置の資源が不足すると、信号処理装置が資源不足となった際に代わりとして選択するプログラム間の予め設定された関係を参照することにより、そのプログラムの代替となり、且つ信号処理装置が資源不足とならないプログラムを検索し選択して信号処理装置に転送する。そのようにして転送するプログラムを自動的に選択することにより、ユーザは面倒な操作を行わなくてすむようになって利便性が向上することになる。また、結果として、信号処理装置のより多くの資源がより有効に利用されることになる。
【発明の効果】
【００２６】
以上、説明したように本発明は、信号処理装置に転送すべきプログラムが判明すると、そのプログラムを構成する命令の内容を変更して転送することにより、各プログラムの実行時に信号処理装置が使用する資源を管理する。このため、信号処理装置は資源をより有効に使用することができる。それにより、信号処理装置はより少ない資源でプログラムを実行できるようになることから、その製造コストはより低減させることができる。
【００２７】
また、本発明は、信号処理装置でプログラムに割り当てる資源が不足すると、信号処理装置が資源不足となった際に代わりとして選択するプログラム間の予め設定された関係を参照することにより、そのプログラムの代替となり、且つ信号処理装置が資源不足とならないプログラムを検索し選択して信号処理装置に転送する。それにより、ユーザは面倒な操作を行わなくてすむようになるため、利便性を向上させることができる。また、結果として、信号処理装置のより多くの資源をより有効に利用することができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
＜第１の実施の形態＞
図１は、第１の実施の形態による信号処理装置の資源管理装置を用いて構築されたシステムの構成図である。
【００２９】
そのシステムは、図１に示すように、システム全体の制御を行うＣＰＵ１０１と、ＣＰＵ１０１が実行するプログラムや転送するプログラム、更には各種制御用データ等を格納したＲＯＭ１０２と、ＣＰＵ１０１がワーク用に用いるＲＡＭ１０３と、そのＣＰＵ１０１から転送されたプログラムを実行するＤＳＰ（信号処理装置）１０４と、ＤＳＰ１０４が参照するデータが格納されたＲＯＭ１０５と、ＤＳＰ１０４がワーク用に用いるＲＡＭ１０６と、を備えて構成されている。このシステムにおいて、本実施の形態による資源管理装置は、上記ＣＰＵ１０１、ＲＯＭ１０２、及びＲＡＭ１０３により実現される。ＲＯＭ１０５、及びＲＡＭ１０６は、ＤＳＰ１０４がアクセスする外部メモリであるが、それらのメモリはＤＳＰ１０４と同一のパッケージ内に封止されていても良い。
【００３０】
以上の構成において、動作を説明する。ここでは、便宜的に、図１に示すシステムが電子楽器の一部であって、ＤＳＰ１０４は特には図示しない音源ＬＳＩから出力された楽音の波形データをデジタル入力信号として入力し、その波形データにユーザが指定した音響効果を付加しデジタル出力信号として出力するものであるとの前提で説明することにする。
【００３１】
ＣＰＵ１０１は、ＲＯＭ１０２に格納されたプログラムを読み出して実行することにより、システム全体の制御を行う。そのＣＰＵ１０１には、特に図示していないが、音響効果をユーザが指定するためのスイッチを含む各種スイッチが接続されている。ＣＰＵ１０１は、例えばその各種スイッチを所定の時間間隔毎に走査（スキャン）し、その走査結果を解析することにより、その各種スイッチを介してユーザが指定した内容を認識する。ＤＳＰ１０４に対する音響効果の設定は、その解析によってユーザが楽音に付加させる音響効果の変更を指示したことを認識した場合に、それに新たに実行させるべきプログラムをＲＯＭ１０２から読み出して転送することで行う。
【００３２】
図２は、そのＲＯＭ１０２に格納されたプログラムのデータ構成図である。図２中の「ｐｒｏｇｒａｍ」に付加されている「［０］」〜「［ｎ］」は、例えばそれが対応している音響効果に合わせてプログラムに割り当てた番号である。各プログラムは、それぞれが１種類の音響効果を実現させるものであり、ヘッダ部とデータ部とからなる。ヘッダ部にはデータ部のデータ長（命令数）や１命令のバイト数などの各種制御用データが格納されている。他方のデータ部には、プログラム本体、即ちそれを構成する命令列が格納されている。図２中で０〜ｋが付加されている「ＰＲＯＧＲＡＭ ＣＯＤＥ」は、それぞれが一つの命令を表している。枠外の０〜ｋは、データ部における命令の格納場所を命令単位で示すアドレスである。なお、以降は、ＣＰＵ１０１が実行するプログラムと区別するために、ＤＳＰ１０４に転送されるプログラムはＤＳＰプログラムと呼ぶことにする。
【００３３】
ＲＯＭ１０２に格納されたＤＳＰプログラムには、その実行時に使用する資源（ここではＲＡＭ１０６内の領域）が定義されている。その定義は、少なくとも、入出力用に用いる資源がプログラム毎に異なるように行われており、それが資源を浪費させてその利用効率を低下させる原因となる。
【００３４】
ＲＯＭ１０２に格納されたＤＳＰプログラムのどれをどの順序で実行されるかといった実行形態は、ユーザの指定によって決まる。その指定をユーザが行った場合に、ＣＰＵ１０１は実行させるべきＤＳＰプログラムをＲＯＭ１０２から読み出してＤＳＰ１０４に転送する。このことから、ＤＳＰ１０４にプログラムを転送する際に、判明した実行形態に基づき、そのプログラムを構成する命令のなかで資源の使用に関わるものに対する操作を行い、資源の浪費を抑えるようにしている。その操作によってＣＰＵ１０１が行うＤＳＰ１０４の資源管理について、図３及び図４を参照して詳細に説明する。
【００３５】
特には図示していないが、命令は、その命令（操作）の内容を示す識別子である命令符号が格納される命令部と、その命令符号で指示された操作の対象となるデータを指定する情報が格納されるアドレス部とからなる。
【００３６】
アドレス部に格納された情報によって指定されるデータを読み出す命令（以降、ロード命令と呼ぶ）や、そこに格納された情報によって指定される場所にデータを格納する命令（以降、ストア命令と呼ぶ）は、使用する資源の他に、ＤＳＰプログラム間でデータの受け渡しにも関わる命令である。このことから、本実施の形態では、それらの命令（以降、便宜的に、それらをまとめてアクセス命令と呼ぶ）のアドレス部の内容に対する操作を行い、プログラム間のデータの受け渡しを実現させつつ、全体で使用される資源を少なくさせている。
【００３７】
アドレス部の操作を行うアクセス命令は、それを行うべきアクセス命令が格納されたアドレスを格納したテーブル（プログラム・アドレス・テーブル）を参照して特定するようにしている。そのアドレスは、データ部の先頭を基準にして命令単位で格納場所を表すデータである。そのアドレスを格納したテーブルは、制御用データとしてＲＯＭ１０２に格納されている。
【００３８】
ＤＳＰプログラム間のデータの受け渡しを実現させる方法は、次に実行されるプログラムでデータを読み出す領域に合わせて、その前に実行されるプログラムでデータを書き込む領域を変更する方法と、その逆に、直前に実行されるプログラムでデータを書き込む領域に合わせて、その次に実行されるプログラムでデータを読み出す領域を変更する方法と、の２つに大別することができる。
【００３９】
本実施の形態では、基本的に後者の方法を採用している。このことから、上記プログラム・アドレス・テーブルは、各プログラム毎に、直前に実行されるプログラムがないのも含め、直前に実行される可能性があるプログラム分、用意している。それにより、操作対象とするプログラム、及びそれの直前に実行されるプログラムから特定されるテーブルを参照している。なお、当然のことながら、前者の方法を採用しても良く、或いは、それらを組合せても良い。
【００４０】
図３は、上述したプログラム・アドレス・テーブルのデータ構成図である。１つのＤＳＰプログラム用にＲＯＭ１０２に用意されたテーブル（群）を概念的に表したものである。
【００４１】
図３中のａｄｒｓ・ｔｂｌ［０］〜ａｄｒｓ・ｔｂｌ［ｍ］は、例えば各ＤＳＰプログラム毎に用意された配列変数であり、各要素には、それぞれが１個のテーブルにアクセスするためのＲＯＭ１０２内の先頭アドレスが格納されている。枠外の０〜ｎは、テーブルにおけるアドレスを示し、各アドレスには、データ部の先頭を基準にして、内容を変更すべき命令の格納場所を表すアドレスが格納されている。ＣＰＵ１０１は、例えば括弧内に、直前に実行されたＤＳＰプログラムに割り当てられた数字を代入することで、参照すべきテーブルが格納されている領域の先頭アドレスを取得して参照する。それにより、プログラム・アドレス・テーブルで操作すべきと定義されたアクセス命令のアドレス部に対する操作を行う。なお、プログラム・アドレス・テーブルにおけるアドレスについては、以降、他と区別するために、オフセットと呼ぶことにする。
【００４２】
そのアドレス部への操作は、その操作内容を定義したテーブルを参照して行っている。そのテーブルは、ＤＳＰ１０４がデータを書き込める対象はＲＡＭ１０６のみであることから、そのＲＡＭ１０６内のアドレスを格納したものである。そのテーブルについては、ＤＳＰ・ＲＡＭ・アドレス・テーブルと呼ぶことにする。
【００４３】
そのＤＳＰ・ＲＡＭ・アドレス・テーブルは、プログラム・アドレス・テーブルと同じく、各ＤＳＰプログラム毎に、次に実行される可能性があるプログラム数分、ＲＯＭ１０２に用意している。それにより、操作対象とするプログラム、及びそれの直前に実行されたプログラムから特定されるＤＳＰ・ＲＡＭ・アドレス・テーブルを参照している。
【００４４】
図４は、上述したＤＳＰ・ＲＡＭ・アドレス・テーブルのデータ構成図である。１つのプログラム用にＲＯＭ１０２に用意されたテーブル（群）を概念的に表したものである。
【００４５】
図４中のｄａｄｒｓ・ｔｂｌ［０］〜ｄａｄｒｓ・ｔｂｌ［ｍ］は、上記ａｄｒｓ・ｔｂｌ［０］〜ａｄｒｓ・ｔｂｌ［ｍ］と同様に、例えば各ＤＳＰプログラム毎に用意された配列変数であり、各要素には、それぞれが１個のテーブルにアクセスするためのＲＯＭ１０２内の先頭アドレスが格納されている。枠外の０〜ｎは、テーブルにおけるアドレスを示し、各アドレスには、ＲＡＭ１０６内のアドレスが格納されている。ＣＰＵ１０１は、例えば括弧内に、直前に実行されたプログラムに割り当てられた数字を代入することで、参照すべきテーブルが格納されている領域の先頭アドレスを取得して参照する。それにより、プログラム・アドレス・テーブルで操作すべきと定義されたアクセス命令のアドレス部に格納されているアドレスを、ＤＳＰ・ＲＡＭ・アドレス・テーブル内で定義されたアドレスに書き換える操作（変更）を行う。なお、ＤＳＰ・ＲＡＭ・アドレス・テーブルでも、ＲＡＭ１０６内のアドレスの格納場所を示すアドレスをオフセットと呼ぶことにする。
【００４６】
上述したようにＤＳＰプログラム自体を対象に操作を行うことで、プログラム間のデータの受け渡しを実現するプログラムをＤＳＰ１０４に実行させることなく、その受け渡しを実現させている。ＤＳＰ１０４が使用する資源の管理をＤＳＰプログラム単位で行い、実行順序が前後するＤＳＰプログラム間で、同じ資源を使用させている。このため、全体として、プログラムの実行で使用される資源（ＲＡＭ１０６で実際に使用される領域）を低減でき、その利用効率を向上させることができる。それにより、ＲＡＭ１０６に必要とされる容量が小さくなるため、ＤＳＰ１０４、更にはシステムのコストを抑えることができる。
【００４７】
また、ＣＰＵ１０１がＤＳＰ１０４にデータの受け渡しを実現するプログラムを転送しなくて済むことから、それによって使用可能な資源を増やしたり、ＤＳＰ１０４の負荷を低減するといった効果も得られる。それにより、ＤＳＰ１０４が実現できる機能（ここでは楽音に付加する音響効果）の数をより増やすことができる。
【００４８】
次に、上述したＣＰＵ１０１のプログラム転送時の動作について、図５を参照して詳細に説明する。その図５は、プログラム転送処理の動作フローチャートである。便宜的に、１つのＤＳＰプログラムの転送に注目して、その処理の流れを表したものである。
【００４９】
そのＤＳＰプログラムの転送は、それの直前に実行されるＤＳＰプログラムの種類から特定されるプログラム・アドレス・テーブル、及びＤＳＰ・ＲＡＭ・アドレス・テーブルを参照して行われる。その転送の対象は、データ部（図２参照）に格納されたプログラム本体のみである。
【００５０】
楽音に付加させる音響効果の種類、或いはその数等の変更をユーザが指示した場合に、ＤＳＰプログラムをＤＳＰ１０４に転送する必要が生じる。プログラム転送処理は、その場合に、ＣＰＵ１０１がＲＯＭ１０２に格納されているプログラムを実行することで実現される。
【００５１】
先ず、ステップ５０１では、各種変数への初期値の代入を行う。具体的には、ＤＳＰ１０４に転送するプログラム中の命令を管理するための変数ｐｇｐｔｒ、プログラム・アドレス・テーブル中で参照すべき個所を管理するための変数ａｒｐｔｒ、及びＤＳＰ・ＲＡＭ・アドレス・テーブル中で参照すべき個所を管理するための変数ｒａｔｐｔｒに、それぞれ０を代入する。続くステップ５０２では、変数ｐｌｅｎｇｔｈに、ヘッダ部から転送すべきプログラムの総命令数を読み出して代入する。その代入を終了すると、ステップ５０３に移行する。
【００５２】
ステップ５０３以降では、変数ｐｇｐｔｒの値をインクリメントしながら、その値で指定される命令をＲＯＭ１０２から読み出してＤＳＰ１０４に転送するための処理が行われる。ＲＯＭ１０２から読み出された命令のなかでプログラム・アドレス・テーブルにより内容を変更すべき命令と判定された命令は、ＤＳＰ・ＲＡＭ・アドレス・テーブルに格納されているアドレスを用いた内容の変更が行われた後に転送される。
【００５３】
先ず、ステップ５０３では、変数ｐｇｐｔｒの値が変数ｐｌｅｎｇｔｈの値より小さいか否か判定する。転送対象のプログラムを構成する命令を全てＤＳＰ１０４に転送した場合、それら変数の値は等しくなる。このため、転送対象のプログラムの転送が完了した場合、判定はＮＯとなり、ここで一連の処理を終了する。そうでない場合には、判定はＹＥＳとなってステップ５０４に移行する。
【００５４】
ステップ５０４では、変数ｐｇｐｔｒの値で指定されるデータ部中の命令（コード）をＲＯＭ１０２から読み出して変数ｐｒｏｇに代入する。その後、ステップ５０５に移行して、変数ａｔｐｔｒの値で指定されるプログラム・アドレス・テーブル中の個所に格納されたアドレスの値が変数ｐｇｐｔｒの値と等しいか否か判定する。プログラム・アドレス・テーブル中で変更対象と定義されている命令をステップ５０４で変数ｐｒｏｇに代入していた場合、判定はＹＥＳとなってステップ５０８に移行する。そうでない場合には、判定はＮＯとなってステップ５０６に移行する。
【００５５】
ステップ５０６では、変数ｐｒｏｇに代入された命令をＤＳＰ１０４に転送する。続くステップ５０７では、変数ｐｇｐｔｒの値のインクリメントを行う。そのインクリメントを行った後、上記ステップ５０３に戻る。
【００５６】
一方、ステップ５０５の判定がＹＥＳとなった場合に移行するステップ５０８では、変数ｒａｔｐｔｒの値で指定されるＤＳＰ・ＲＡＭ・アドレス・テーブル中の個所に格納されたデータ（ＲＡＭ１０６のアドレス）をＲＯＭ１０２から読み出して変数ａｄｒｓに代入する。続くステップ５０９では、変数ｐｒｏｇ中のアドレス部のアドレスを、その変数ａｄｒｓに代入したアドレスに書き換える操作を行う。それにより、その変数ｐｒｏｇに代入された命令を実行することでＤＳＰ１０４がＲＡＭ１０６からデータを読み出すアドレスを変更する。それが終了すると、ステップ５１０で変数ａｔｐｔｒ、及びｒａｔｐｔｒの値をそれぞれインクリメントした後、ステップ５０６に移行して、変数ｐｒｏｇに代入されている内容を変更した命令をＤＳＰ１０４に転送する。
【００５７】
このように、本実施の形態では、命令の内容を変更しつつ、ＤＳＰプログラムの転送を行っている。これを各ＤＳＰプログラム毎に行うことにより、ＤＳＰ１０４の使用可能な資源を有効に利用できるように管理している。
【００５８】
なお、本実施の形態では、ロード命令の内容を変更するようにしているが、ロード命令、及びストア命令以外の命令の内容を変更するようにしても良い。ロード命令のなかには、他の命令の実行結果を基にデータを読み出すようになっているものもありえる。そのようなことから、例えばアクセス命令の実行に関係する命令も変更の対象としても良い。
＜第２の実施の形態＞
上記第１の実施の形態では、ＤＳＰプログラム中で内容を変更すべき命令（コード）の検出を、それを検出するために用意したプログラム・アドレス・テーブルを参照することで行っている。これに対し、第２の実施の形態は、プログラム・アドレス・テーブル等を別に用意することなく、ＤＳＰプログラムを参照するだけで内容を変更すべき命令を検出できるようにしたものである。
【００５９】
この第２の実施の形態による資源管理装置を用いて構築されたシステムの構成は、基本的に第１の実施の形態におけるそれと同じである。このため、第１の実施の形態の説明に用いた符号をそのまま用いて、その第１の実施の形態から異なっている部分のみ説明する。
【００６０】
ＤＳＰプログラムは、図２に示すように、ヘッダ部とデータ部とからなる。第２の実施の形態では、そのヘッダ部に、内容を変更すべき命令の命令符号を格納している。それにより、その内容を変更すべき命令を検出できるようにしている。なお、その命令は、例えばロード命令である。
【００６１】
そのようにして内容を変更すべき命令を検出できるようにした場合、その命令は命令符号を対比するだけで検出できることから、第１の実施の形態と比較して、その検出がより容易に行えるようになる。また、プログラム・アドレス・テーブルを用意しておく必要が無くなることから、ＲＯＭ１０２を他の用途に使える範囲が増えて、より多くの機能等を実現できるようになる。
【００６２】
上記命令符号を命令部に持つ命令のアドレス部には、それまでのアドレスに替えて、ＤＳＰ・ＲＡＭ・アドレス・テーブルにおけるオフセット値、即ちＤＳＰ・ＲＡＭ・アドレス・テーブルのなかでそのアドレス部に格納すべきＲＡＭ１０６のアドレスの格納個所を示すデータを格納している。そのようにして、ＤＳＰプログラムの中身を参照することにより、内容を変更すべき命令の他に、その変更内容を特定できるようにしている。
【００６３】
なお、参照するＤＳＰ・ＲＡＭ・アドレス・テーブルは、第１の実施の形態と同様に、処理の対象とするＤＳＰプログラムの種類、及びそれの直前に実行されるＤＳＰプログラムの種類から特定している。
【００６４】
ＣＰＵ１０１は、ＤＳＰ１０４に転送すべきＤＳＰプログラムを命令単位でＲＯＭ１０２から順次読み出して転送する。ＲＯＭ１０２から読み出した命令のなかで内容を変更すべき命令は、その命令部に格納された命令符号を、ヘッダ部に格納された命令符号と対比することで検出（判定）する。そのようにして検出した命令のアドレス部からは、アドレスの替わりに格納されているオフセット値を取り出し、その値で指定されるＤＳＰ・ＲＡＭ・アドレス・テーブル中のＲＡＭ１０６のアドレスを、そのオフセット値の替わりにアドレス部に格納する。そのようにして、命令の内容を変更したＤＳＰプログラムを転送することにより、ＤＳＰ１０４が使用する資源の管理を、それに転送するＤＳＰプログラムに応じて行っている。
【００６５】
次に、上述したＣＰＵ１０１のプログラム転送時の動作について、図６を参照して詳細に説明する。その図６は、プログラム転送処理の動作フローチャートである。便宜的に、１つのＤＳＰプログラムの転送に注目して、その処理の流れを表したものである。
【００６６】
そのＤＳＰプログラムの転送は、それの直前に実行されるＤＳＰプログラムの種類から特定したＤＳＰ・ＲＡＭ・アドレス・テーブルを参照して行われる。その転送の対象は、データ部（図２参照）に格納されたプログラム本体のみである。
【００６７】
楽音に付加させる音響効果の種類、或いはその数等の変更をユーザが指示した場合に、ＤＳＰプログラムをＤＳＰ１０４に転送する必要が生じる。プログラム転送処理は、その場合に、ＣＰＵ１０１がＲＯＭ１０２に格納されているプログラムを実行することで実現される。
【００６８】
先ず、ステップ６０１では、ＤＳＰ１０４に転送するプログラム中の命令を管理するための変数ｐｇｐｔｒに０を代入する。続くステップ６０２では、変数ｐｌｅｎｇｔｈに、ヘッダ部から転送すべきプログラムの総命令数を読み出して代入する。更には、ヘッダ部から内容を変更すべき命令の命令符号を読み出して変数ＩＣＯＤＥに代入する。それらの代入を終了すると、ステップ６０３に移行する。
【００６９】
ステップ６０３以降では、変数ｐｇｐｔｒの値をインクリメントしながら、その値で指定される命令をＲＯＭ１０２から読み出してＤＳＰ１０４に転送するための処理が行われる。ＲＯＭ１０２から読み出された命令のなかで内容を変更すべき命令と判定された命令は、ＤＳＰ・ＲＡＭ・アドレス・テーブルに格納されているアドレスを用いた内容の変更が行われた後に転送される。
【００７０】
先ず、ステップ６０３では、変数ｐｇｐｔｒの値が変数ｐｌｅｎｇｔｈの値より小さいか否か判定する。転送対象のプログラムを構成する命令を全てＤＳＰ１０４に転送した場合、それら変数の値は等しくなる。このため、転送対象のプログラムの転送が完了した場合、判定はＮＯとなり、ここで一連の処理を終了する。そうでない場合には、判定はＹＥＳとなってステップ６０４に移行する。
【００７１】
ステップ６０４では、変数ｐｇｐｔｒの値で指定されるデータ部中の命令（コード）をＲＯＭ１０２から読み出して変数ｐｒｏｇに代入する。その後、ステップ６０５に移行して、変数ｐｒｏｇに代入した命令中の命令符号が、変数ＩＣＯＤＥに代入されている命令符号と等しいか否か判定する。ヘッダ部に格納されている命令符号を有する命令をステップ６０４で変数ｐｒｏｇに代入していた場合、判定はＹＥＳとなってステップ６０８に移行する。そうでない場合には、判定はＮＯとなってステップ６０６に移行する。
【００７２】
ステップ６０６では、変数ｐｒｏｇに代入された命令をＤＳＰ１０４に転送する。続くステップ６０７では、変数ｐｇｐｔｒの値のインクリメントを行う。そのインクリメントを行った後、上記ステップ６０３に戻る。
【００７３】
一方、ステップ６０５の判定がＹＥＳとなった場合に移行するステップ６０８では、変数ｐｒｏｇから、それに代入した命令を構成するアドレス部のオフセット値を取り出し、変数ｒａｔｐｔｒに代入する。続くステップ６０９では、変数ｒａｔｐｔｒの値で指定されるＤＳＰ・ＲＡＭ・アドレス・テーブル中の個所に格納されたデータ（アドレス）をＲＯＭ１０２から読み出して変数ａｄｒｓに代入する。その後、ステップ６０９に移行して、変数ｐｒｏｇ中のアドレス部のオフセット値を、その変数ａｄｒｓに代入したアドレスに書き換える操作を行う。それにより、その変数ｐｒｏｇに代入された命令を実行することでＤＳＰ１０４がＲＡＭ１０６からデータを読み出すアドレスを変更する。それが終了すると、ステップ６０６に移行して、変数ｐｒｏｇに代入されている内容を変更した命令をＤＳＰ１０４に転送する。
【００７４】
なお、第２の実施の形態では、第１の実施の形態から、内容を変更すべき命令の検出方法、及びその内容の特定方法を変更しているが、それらのうちの一方のみを変更するようにしても良い。
＜第３の実施の形態＞
上記第１、及び第２の実施の形態では、プログラム間のデータの受け渡しに着目して命令の内容を変更することにより、ＤＳＰの資源の浪費を低減させている。第３の実施の形態は、その他に、資源不足によって生じるユーザの満足度の低下も抑えられるようにしたものである。
【００７５】
図７は、第３の実施の形態による信号処理装置の資源管理装置を用いて構築されたシステムの構成図である。そのシステムは、例えば、エレクトリック・ギター等の電気楽器のアンプの一部を構成するものであり、図７に示すように、システム全体の制御を行うＣＰＵ７０１と、ＣＰＵ７０１が実行するプログラムや転送するＤＳＰプログラム、更には各種制御用データ等を格納したＲＯＭ７０２と、ＣＰＵ７０１がワーク用に用いるＲＡＭ７０３と、そのＣＰＵ７０１から転送されたＤＳＰプログラムを実行するＤＳＰ（信号処理装置）７０４と、ＣＰＵ７０１から転送されたＤＳＰプログラムを格納するプログラムＲＡＭ７０５と、ＤＳＰ７０４がワーク用に用いるワークＲＡＭ７０６と、を備えて構成されている。第３の実施の形態による資源管理装置は、上記ＣＰＵ７０１、ＲＯＭ７０２、及びＲＡＭ７０３により実現される。ＲＡＭ７０５、７０６は、共にＤＳＰ７０４がアクセスする外部メモリであるが、それらのメモリはＤＳＰ７０４と同一のパッケージ内に封止されていても良い。
【００７６】
上記ＤＳＰ７０４は、アナログアンプ部７０７が増幅し、そのアンプ部７０７が出力したアナログの楽音信号をＤ／Ａコンバータ７０８がＤ／Ａ変換して得られるデジタルの波形データに対し音響効果（エフェクト）を付加するためのエフェクターとして用いられている。ＤＳＰ７０４が音響効果を付加した波形データは、Ｄ／Ａコンバータ７０９によってＤ／Ａ変換されてアナログの楽音信号（オーディオ信号）に変換され、更にアナログアンプ部７１０で増幅された後、システムの外部に出力される。
【００７７】
上記アナログアンプ部７０７、７１０、Ａ／Ｄコンバータ７０８、及びＤ／Ａコンバータ７０９は、それぞれ、２チャンネル（ステレオ）の信号に対応しており、各チャンネルの信号毎に所定の処理を施す。このことから、ＤＳＰ７０４は、音響効果を２チャンネルの波形データに対してそれぞれ付加するようになっている。なお、アナログアンプ部７０７が増幅の対象とする楽音信号は、例えば図示しないピックアップから出力された電気信号である。
【００７８】
以上の構成において、図８〜図１８の説明図を参照しつつ、ＣＰＵ７０１によるＤＳＰ７０４の資源管理、即ちＤＳＰプログラムの転送に関わる制御動作について説明する。
【００７９】
図８は、ＤＳＰ７０４の使用可能な資源を説明する図である。図８に示すように、本実施の形態で資源管理の対象とするＤＳＰ７０４は、プログラムＲＡＭ７０５、ワークＲＡＭ７０６、及び自身が有するワークＲＡＭを資源として使用する。なお、以降、ＤＳＰ７０４自身が有するワークＲＡＭは内部ワークＲＡＭ、ワークＲＡＭ７０６は外部ワークＲＡＭとも呼ぶことにする。
【００８０】
図９は、第３の実施の形態におけるＤＳＰ７０４の資源の割当方法を説明する図である。
上記３つのＲＡＭ内の領域がＤＳＰプログラムに割り当てられる。その領域は、ＤＳＰプログラムの種類によって異なる。このため、ＤＳＰプログラムに実際に割り当てる各ＲＡＭの領域は、ＤＳＰ７０４に転送する他のＤＳＰプログラムの数や種類によって変化する。ＤＳＰ７０４に一度に割り当てられるＤＳＰプログラムの数は、その種類によって変化する。このことから、本実施の形態では、ＤＳＰ７０４の使用可能な資源を一つの枠として仮想的に扱い、その枠内に、ＤＳＰプログラムの種類によって決まる大きさの枠を割り当てられるだけ割り当てる方法を採用している。それにより、より多くの音響効果を、選択の自由度を高く維持させつつ楽音に付加できるようにしている。ここでは、その方法をダイナミック・ローディング、ＤＳＰ７０４の使用可能な資源を表す枠をリソースパート、ＤＳＰプログラムの種類によって大きさが決まる枠をエフェクターパートと呼ぶことにする。
【００８１】
ＤＳＰ７０４の資源の管理対象は３つのＲＡＭである。このため、上記リソースパートは、その３つのＲＡＭの各部分からなる枠である。ＣＰＵ７０１は、その３つのＲＡＭの全てで資源が不足しないＤＳＰプログラムのみを、リソースパートに割り当てる。そうでないＤＳＰプログラムは、その割り当てを行わないことで、資源不足の発生を回避する。
【００８２】
上述したように、ＤＳＰ７０４は２チャンネルの波形データに対してそれぞれ音響効果を付加できるようになっている。各チャンネルに対して同じ音響効果を付加するステレオエフェクターとして機能させるだけでなく、各チャンネル毎に独立に音響効果を付加するモノラルエフェクターとしても機能させることができるようになっている。そのことに合わせて、本実施の形態では、ＤＳＰ７０４の資源をＤＳＰプログラムに配分する形態、即ちリソースパートに割り当てるエフェクターパートの組合せの基本的なパターンを定め、そのパターンに合わせてＤＳＰ７０４資源をＤＳＰプログラムに割り当てるようにしている。
【００８３】
図１０〜図１２は、ＤＳＰ７０４の資源配分形態を説明する図である。本実施の形態では、図１０〜図１２に示すように、基本的な資源配分形態として３つのパターンを用意している。それぞれのパターンはモードで管理し、ユーザが選択したモードに対応するパターンで資源を配分するようにしている。各パターンは、具体的には以下のようになっている。
【００８４】
図１０に示すパターンは、ＤＳＰ７０４をステレオエフェクターとして機能させることを指定するモード１（ステレオモード）が選択された場合に有効となる。このモードを選択すると、ステレオで信号処理を施すＤＳＰプログラムを最大４つまで動作させることができる。
【００８５】
図１１に示すパターンは、ＤＳＰ７０４を２チャンネル独立のモノラルエフェクターとして機能させることを指定するモード２（モノラルモード）が選択された場合に有効となる。このモードを選択すると、各チャンネルでＤＳＰプログラムを最大４つまで動作させることができる。言い換えれば、資源全体を２つのリソースパートで扱い、各リソースパートに最大４つのエフェクターパートを収められるようになっている。それらのＤＳＰプログラムはモノラルで信号処理を行うので、一方のチャンネルのＤＳＰプログラムを変更しても他方のチャンネルはその変更の影響を受けないという独立性がある。
【００８６】
図１２に示すパターンは、各チャンネル毎に独立に音響効果を付加した後、混合してステレオで音響効果を付加することを指定するモード３（混合モード）が設定された場合に有効となる。このモードを選択すると、モノラルで信号処理を施すＤＳＰプログラムは各チャンネルで最大２つ、ステレオで信号処理を施すＤＳＰプログラムは最大で２つ動作させることができる。それらの間で信号の受け渡しを行うミキサは、２つの入力を任意の比率で２つの出力に再分配するものである。
【００８７】
ＣＰＵ７０１は、設定されたモードに対応するパターンで、演奏者が選択した音響効果を付加するＤＳＰプログラムに資源を割り当てる。リソースパートにエフェクターパートを割り当てる。それにより、モードに応じた形で楽音に音響効果を付加させる。なお、図１０〜図１２の各エフェクターパート内の数字は、そのパートに付けられたナンバーである。
【００８８】
ＲＯＭ７０２に格納されているＤＳＰプログラムは、図１３に示すように、大別して、資源情報、初期データ、及びプログラムデータの３つの部分から構成されている。資源情報は、ＤＳＰプログラム（図１３中のエフェクターに対応）の実行に必要な資源に関する情報である。初期データは、ＤＳＰプログラムの実行時に参照するデータであり、ＤＳＰプログラムの種類によっては随時、更新される。プログラムデータは、ＤＳＰプログラムの本体であり、命令（プログラムコード）を実行順序に従って並べた形で構成されている。
【００８９】
図１４は、上記資源情報の内容の説明図である。各ＤＳＰプログラム（エフェクター）の資源情報の内容を表形式で表したものである。図１４において、「Ｎｏ．」の項目欄の内容はＤＳＰプログラムに付けられた番号を示し、「ＦＸ名」の項目欄の内容はＤＳＰプログラムの名称を示している。その名称は、ＤＳＰプログラムの実行によって楽音に付加できる音響効果の種類を表している。「Ｍｏｄｅ１ Ｐａｒｔ」〜「Ｍｏｄｅ３ Ｐａｒｔ」の各項目欄の内容は、そのモードの設定時にＤＳＰプログラムの割当て可能なエフェクターパート（適合パート）のナンバー（の範囲）を示し、「代替ＦＸ」の項目欄の内容は、そのＤＳＰプログラムの代わりとなるＤＳＰプログラムのナンバー（図中では便宜的に名称としている）を示している。例えば、ＦＸ名が「Ｃｏｍｐ２」のＤＳＰプログラムの代替ＦＸは「Ｃｏｍｐ１」であることを示している。その欄の内容は、そのＤＳＰプログラムの実行に必要な資源が残っていない場合に参照される。「Ｐｒｏｇｒａｍサイズ」の項目欄の内容は、ＤＳＰプログラムのサイズ、即ちそれをプログラムＲＡＭ７０５に格納した際に消費される領域のサイズを示している。「内部データサイズ」、及び「外部データサイズ」の各項目欄の内容は、それぞれ、ＤＳＰ７０４内のワークＲＡＭ、ワークＲＡＭ７０６でＤＳＰプログラムの実行に使用される領域のサイズを示している。それらＲＡＭの領域のサイズを示す数値は、所定の単位で表現したものである。
【００９０】
各ＤＳＰプログラム（エフェクター）は、例えば演奏者が指定した音響効果に応じてエフェクターパートに割り当てられる。ナンバーが０で名称が「Ｔｈｒｕ」のＤＳＰプログラム、及びナンバーが１で名称が「Ｓｔ Ｔｈｒｕ」のＤＳＰプログラムは、その指定がされていないエフェクターパートに割り当てるために用意したものである。
【００９１】
ＣＰＵ７０１は、ＤＳＰ７０４にプログラムを転送する場合、転送するプログラムの資源情報を参照して、各プログラムに資源を割り当てる。その割り当ては、それまでに他のプログラムに割り当てた資源や残りの資源についての情報を資源管理情報として保持しておき、それも参照しつつ行う。そのような情報を保持するのは、ＤＳＰ７０４に転送するプログラムの追加や入れ替えをより迅速に行えるようにするためである。
【００９２】
本実施の形態では、資源全体をリソースパートとして扱っている。このことから、上記資源管理情報はリソースパート単位、ＤＳＰプログラム単位で保持するようにしている。リソースパート用の資源管理情報は、具体的には、例えばプログラムＲＡＭ７０５、ワークＲＡＭ７０６、及びＤＳＰ７０４の内部ワークＲＡＭに割り当てた各リソースパートの領域のサイズ等であり、これは固定的に用意したものである。他方のエフェクターパート用の資源管理情報は、例えばエフェクターパート（プログラム）毎に保持した、プログラムＲＡＭ７０５、ワークＲＡＭ７０６、及びＤＳＰ７０４の内部ワークＲＡＭに割り当てた領域のサイズ、その領域の先頭アドレスである。それらの情報は、図１７、或いは図１８に示す変数を用意することで扱っている。
【００９３】
なお、図１７中の数値は、モード３が設定されている場合に、各変数（配列変数）においてリソースパートのナンバーが代入される変数ＲｅｓＰｒｔの値で指定される要素の具体的な値の例であり、プログラムＲＡＭ７０５は４８０（＝１６０＋１６０＋１６０）ワード分、内部ワークＲＡＭは２５２（＝８４＋８４＋８４）ワード分、ワークＲＡＭ７０６は４０９６（＝８００＋８００＋２４９６）ワード分がリソースパートに割り当てられていることを示している。図１２を参照して括弧内の数値の対応を述べれば、その先頭から、ナンバーが１と２のエフェクターパートを持つリソースパート、ナンバーが３と４のエフェクターパートを持つリソースパート、ナンバーが５と６のエフェクターパートを持つリソースパート、となっている。図１８中の「ＦｘＰｒｔ」は、エフェクターパートのナンバーが代入される変数である。配列変数については、混乱を避けるために、特に必要と思われない限り、その要素を指定する部分は省略することにする。
【００９４】
ＣＰＵ７０１は、資源管理情報、及び資源情報を参照して、転送対象のＤＳＰプログラムに資源を割り当てられるか否か、即ちそれに割り当てるだけの資源が残っているか否か判定する。その判定結果に応じて、以下の制御を行う。
【００９５】
先ず、ＤＳＰプログラムに資源を割り当てられると判定した場合、ＣＰＵ７０１は、それまでに他のＤＳＰプログラムに割り当てられている各ＲＡＭの領域に続けて、転送の対象とするＤＳＰプログラム用の領域を割り当てる。それによって確保した領域に合わせて、内容変更の対象とする命令（プログラムコード）の内容を変更しながら、ＤＳＰプログラムをＤＳＰ７０４に転送する。変更の対象としている命令の種類は、例えば、上記第１及び第２の実施の形態と同じく、アクセス命令である。
【００９６】
図１５は、確保した資源に応じたプログラムの変更方法を説明する図である。ワークＲＡＭ７０６に確保した領域に応じてアクセス命令のをどのように変更するかを示したものである。
【００９７】
図１５において、「ｒｉａａ］から始まる３つの記号列は変更対象とするアクセス命令を便宜的に示したものである。上段の記号列中の「００１０」は、その記号列で表した命令中で変更対象とする内容であり、それを変更しなければ１０番地のデータにアクセスすることを意味している。その内容は、８０番地から領域を確保した場合には中段の記号列のように「０９０」に変更され、１００番地から領域を確保した場合には下段の記号列のように「１１０」に変更されることを示している。ＣＰＵ７０１は、そのような内容変更を行いながら、ＤＳＰプログラムをＤＳＰ７０４に転送する。
【００９８】
その内容変更を行うために、本実施の形態では、プログラムデータと初期データを共通のルールによって中間コード化させている。その中間コード化について、図１６を参照して説明する。
【００９９】
プログラムデータを構成するコードは、図１６（ａ）に示すように、ＭＳＢ側の１バイトが割り当てられているｉｎｆｏフィールドと、それ以外の部分であるＤａｔａフィールドとの２つの部分から構成されている。Ｄａｔａフィールドには、コードの本体が格納され、ｉｎｆｏフィールドには、Ｄａｔａフィールドに格納されたコード本体に対する操作内容を指示する情報（以降、便宜的に付加情報と呼ぶ）が格納される。
【０１００】
その付加情報の主なものは、Ｄａｔａフィールドのコード本体のアドレス値に演算を施さない、即ちそのアドレス値の変更を行わないことを指示する情報と、確保されたプログラムＲＡＭ７０５の領域（エリア）の先頭アドレスの値をコード本体のアドレス値に加算することを指示する情報と、確保された内部ワークＲＡＭの領域（エリア）の先頭アドレスの値をコード本体のアドレス値に加算することを指示する情報と、確保されたワークＲＡＭ７０６の領域（エリア）の先頭アドレスの値をコード本体のアドレス値に加算することを指示する情報と、の４種類に大別される。それ以外には、ＤＳＰプログラム間でデータの受け渡しを実現させるためのものがある。なお、これらのことは、図１６（ｂ）に示すように、初期データにおいても基本的に同じである。
【０１０１】
ＣＰＵ７０１は、プログラムデータ、及び初期データ共に、Ｄａｔａフィールドのコード、或いはデータ本体のみを、ｉｎｆｏフィールドの付加情報によって指示された操作を施した後にＤＳＰ７０４に転送する。ＤＳＰプログラム間でのデータの受け渡しを実現させるための操作は、例えば上記第１の実施の形態と同様の方法で行う。
【０１０２】
ところで、ＤＳＰプログラムの転送は、それ以降に続けて実行されるＤＳＰプログラムが存在するＤＳＰプログラムの代わりとして転送する場合と、そうでない場合とに分けることができる。演奏者が音響効果を指定していないエフェクターパートにはダミーとしてナンバーが０或いは１のＤＳＰプログラムを割り当てていることから、図１０のパターンを例にとれば、前者の場合はナンバーが１〜３のエフェクターパートに新たにＤＳＰプログラムを割り当てることに対応し、後者の場合はナンバーが４のエフェクターパートに新たにＤＳＰプログラムを割り当てることに対応する。なお、ＤＳＰプログラムが割り当てられていなければパートのナンバーに関わらず、後者の場合に対応する。
【０１０３】
前者の場合、転送の前後でＤＳＰプログラムに割り当てた資源量が変化することがある。このことから、ＣＰＵ７０１は、その場合には、ＤＳＰプログラムの転送を終了した後、その転送によって生じた資源量の変化を吸収するための制御を行う。より具体的には、その資源量の変化が生じると、転送したＤＳＰプログラムよりも後方（アドレス値が大きくなる方向。本実施の形態ではアドレス値が小さいほうから領域を順次割り当てているのでこうなる）に領域が割り当てられているＤＳＰプログラムに対して、その領域の割り当てをやり直す。
【０１０４】
そのような再割り当てを行うことで、各ＤＳＰプログラムに割り当てた領域の間に挟まれた形で未使用の領域が生じてしまうようなことが回避される。未使用の領域が分散してしまうようなことが回避される。このため、未使用の領域の割り当てが容易に行えるようになり、制御が簡単化することになる。また、資源の再割り当てを必要なプログラムに対してのみ行うので、その再割り当てに伴うプログラムの転送がより短い時間で完了することになる。
【０１０５】
一方、ＤＳＰプログラムに資源を割り当てられないと判定した場合には、ＣＰＵ７０１は、資源情報を参照して、それの代替となるＤＳＰプログラムを探す。その結果、代替のＤＳＰプログラムが見つかれば、それに割り当てられるだけの資源が残っているか否か再度判定する。その代替のＤＳＰプログラムに割り当てられる資源が残っていると判定すると、それに資源を割当て、上述したようにしてＤＳＰプログラムを転送する。そうでないと判定すると、同様に、それの代替となるＤＳＰプログラムを探す。そのようにして、代替として割り当てられるＤＳＰプログラムを探し出してＤＳＰ７０４に転送する。代替となるＤＳＰプログラムがない、或いは代替となるＤＳＰプログラムでも資源不足となるのであれば、そのことが判明した時点でＤＳＰプログラムの転送を断念（放棄）する。
【０１０６】
従来では、ＤＳＰプログラムに割り当てる資源が足りなくなると、ユーザはそれによって実現される機能を用いることを諦めるか、或いは、カットアンドトライで資源不足とならないＤＳＰプログラムをリストアップし、そのなかから最適なものを探し出す、といったようなことで対応するしかなかった。何れにしても、所望する機能のうちのどれかは使うことができず、代替機能を探すにしても大変な労力と時間が必要となっていた。
【０１０７】
これに対し、本実施の形態では、図１４に示すように、代替の対象となるＤＳＰプログラムよりも資源消費量が小さく、且つ、基本的に同じ機能を実現できるものを代替ＤＳＰプログラム（エフェクター）として用意し、資源が足りない場合に、そのような代替ＤＳＰプログラムを自動的に探し出してＤＳＰ７０４に転送している。このため、従来と比較して、所望する機能を全く使うことができないという可能性を大きく低減させることができる。それは、より多くの資源を有効に利用することになって、資源の利用効率がより向上することを意味する。また、代替機能を自動的に探し出すため、従来とは異なり、大変な労力と時間をかけるといったことが回避されることになる。従って、高い利便性も得られる結果となる。
【０１０８】
なお、本実施の形態では、代替のＤＳＰプログラムを予め決定しているが、そのＤＳＰプログラムをユーザが設定できるようにしても良い。その場合には、幾つかの候補だけでなく、その優先度（エフェクターパート、或いはＤＳＰプログラムも合わせて設定できるようにしても良い。その優先度については、（音響効果）等に注目したものであっても良い。
【０１０９】
次に、上述したＣＰＵ７０１のプログラム転送時の動作について、図１９を参照して詳細に説明する。その図１９は、プログラム転送処理の動作フローチャートであり、便宜的に、１つのＤＳＰプログラムの転送（ロード）に注目して、その処理の流れを表したものである。この処理は、ユーザが楽音に付加する音響効果を変更した場合に、ＣＰＵ７０１がＲＯＭ７０２に格納されているプログラムを実行することで実現される。この処理を実行することで、音響効果の変更が指示されたエフェクターパートに、演奏者が指定した種類の音響効果に対応するＤＳＰプログラムが割り当てられる。
【０１１０】
なお、音響効果の変更は、例えばエフェクターパートとそれに設定する音響効果（ＤＳＰプログラムのナンバー）を指定することで行うようになっている。資源分配形態はモードによって変化させていることから、そのモードが切り換えられると、それまでの音響効果の設定はクリアさせている。
【０１１１】
先ず、ステップ１９０１では、対象とするＤＳＰプログラム（エフェクター）を転送（ロード）するための指示情報を用意する。具体的には、例えば転送する（指定された音響効果に対応する）ＤＳＰプログラム（エフェクター）のナンバーを変数ＩＦｘに、それを割り当てるリソースパートのナンバーを変数ＤＲＰに、そのリソースパート中でそのプログラムを割り当てるエフェクターパートのナンバーを変数ＤＦＰにそれぞれ代入する。続くステップ１９０２では、転送するＤＳＰプログラム（エフェクター）のナンバー、即ち変数ＩＦｘの値から、それの資源情報を取得する。それにより、現在設定中のモードで転送対象のＤＳＰプログラムが適合パートとなっているナンバーの範囲を取得する。それ以外には、プログラムＲＡＭ７０５の使用サイズを変数ＰｒｏｇＳｉｚに、内部ワークＲＡＭの使用サイズを変数ＩｒａｍＳｉｚに、外部ワークＲＡＭ７０６の使用サイズを変数ＸｒａｍＳｉｚに、代替エフェクターのナンバーを変数ＳｕｂＦｘにそれぞれ代入することで取得する。ステップ１９０３にはその後に移行する。
【０１１２】
そのステップ１９０３では、転送対象のＤＳＰプログラムがエフェクターパートに適合しているか否か判定する。例えばステレオで信号処理を行うＤＳＰプログラムを前提としているエフェクターパートにモノラルで信号処理を行うＤＳＰプログラムを割り当てるといったように、結果として演奏者が指定した音響効果（ＤＳＰプログラム）がエフェクターパートに適合していない場合、判定はＮＯとなり、ここで一連の処理を終了する。そうでない場合には、判定はＹＥＳとなってステップ１９０４に移行する。なお、その判定は、ステップ１９０２で取得した適合パートのナンバーの範囲内に演奏者が指定したエフェクターパートのナンバーが入っているか否かから行われる。
【０１１３】
ステップ１９０４では、ＤＳＰプログラムの割り当てが指定されたエフェクターパートを有するリソースパートの各ＲＡＭの空き領域を調査する。例えばプログラムＲＡＭ７０５、内部ワークＲＡＭ、及びワークＲＡＭ７０６の未使用量、即ち変数ＰｒｏＳｐ［ＲｅｓＰｒｔ］、ＩｒａｍＳｐ［ＲｅｓＰｒｔ］、及びＸｒａｍＳｐ［ＲｅｓＰｒｔ］の各値を調査する。続くステップ１９０５では、割り当ての対象としているエフェクターパートに現在割り当てられているＤＳＰプログラムの情報を取得する。その取得は、例えばそのパートに割り当てられているＤＳＰプログラムのナンバー（例えば図１８に示す変数ＦＸ［ＲｅｓＰｒｔ］［ＦｘＰｒｔ］の値）を変数ＣｕｒＦｘに代入するとともに、そのプログラムの資源情報を読み出し、プログラムＲＡＭ７０５の使用サイズを変数ＣｕｒＰｒｏｇＳｉｚに、内部ワークＲＡＭの使用サイズを変数ＣｕｒＩｒａｍＳｉｚに、外部ワークＲＡＭ７０６の使用サイズを変数ＣｕｒＸｒａｍＳｉｚに、それぞれ代入することで行う。それを行った後、ステップ１９０６に移行する。
【０１１４】
ステップ１９０６では、演奏者によって指定されたＤＳＰプログラムを転送できるか否か、即ちそれに割り当てるべき資源が残っているか否か判定する。その資源として３種類のＲＡＭがあり、エフェクターパートにそれまで割り当てられていたＤＳＰプログラムの資源があることから、変数ＣｕｒＰｒｏｇＳｉｚの値と変数ＰｒｏｇＳｐの値の合計値が変数ＰｒｏｇＳｉｚの値以上（ＣｕｒＰｒｏｇＳｉｚ＋ＰｒｏｇＳｐ≧ＰｒｏｇＳｉｚ）であり、変数ＣｕｒＩｒａｍＳｉｚの値と変数ＩｒａｍＳｐの値の合計値が変数ＩｒａｍＳｉｚの値以上（ＣｕｒＩｒａｍＳｉｚ＋ＩｒａｍＳｐ≧ＩｒａｍＳｉｚ）であり、且つ変数ＣｕｒＸｒａｍＳｉｚの値と変数ＸｒａｍＳｐの値の合計値が変数ＸｒａｍＳｉｚの値以上（ＣｕｒＰｒｏｇＳｉｚ＋ＰｒｏｇＳｐ≧ＰｒｏｇＳｉｚ）であった場合、資源不足とならない。このため、その場合、判定がＹＥＳとなり、ステップ１９０９に移行する。そうでない場合には、判定はＮＯとなってステップ１９０７に移行する。
【０１１５】
ステップ１９０７では、対象としているＤＳＰプログラム（エフェクター）の代替となるＤＳＰプログラムが存在するか否か判定する。上記変数ＳｕｂＦｘには、代替となるＤＳＰプログラムが存在していると、ステップ１９０２で３以上の値が代入される（図１４参照）。このため、変数ＳｕｂＦｘの値が３以上であった場合、判定はＹＥＳとなり、ステップ１９０８で変数Ｆｘに変数ＳｕｂＦｘの値を代入した後、そのステップ１９０２に戻る。それにより、対象とするＤＳＰプログラムを変えて、それ以降の処理ステップを同様に行う。そうでない場合には、判定はＮＯとなり、演奏者が望むような音響効果を付加できるＤＳＰプログラムは存在しないとして、そこで一連の処理を終了する。
【０１１６】
上記ステップ１９０２〜１９０８で形成される処理ループを実行することにより、演奏者の要望に沿った形で資源不足とならない代替のＤＳＰプログラムが自動的に検索されることになる。
【０１１７】
一方、ステップ１９０６の判定がＹＥＳの場合に移行するステップ１９０９では、ＤＳＰプログラムの転送（ロード）に先だってミュート等により雑音を防止するためのロード前処理を行う。その後、ステップ１９１０に移行して、置き換えられるＤＳＰプログラムに割り当てていた各ＲＡＭの領域の先頭アドレスから、ＤＳＰプログラムの初期データ、及びプログラムデータ（図１３参照）をＤＳＰ７０４に、それを構成するデータの内容に対してｉｎｆｏフィールドの付加情報で指定された操作を施しつつ転送するロード処理を実行する（図１５、図１６参照）。その転送に合わせて、ワークＲＡＭ７０６の初期化をＤＳＰ７０４に指示する。それらを行った後、ステップ１９１１に移行する。図１８に示す各種変数（配列変数）は、そのロード処理時に参照される。
【０１１８】
転送したＤＳＰプログラムに割り当てた資源量がその転送によって置き換えられたＤＳＰプログラムに割り当てられていた資源量と異なる、即ちエフェクターパートの資源量が転送によって変化したということは、新たに未使用となった領域が生じたか、或いはその転送によって他のＤＳＰプログラムに割り当てた資源を使用してしまったことを意味する。このことから、ステップ１９１１〜１９１９では、プログラムＲＡＭ７０５、ＤＳＰ７０４の内部ワークＲＡＭ、及びワークＲＡＭ７０６の各ＲＡＭ毎に、その資源量（領域）の変化を判定し、その判定結果を示す値を予め用意した変数ＲＣＰ、ＲＣＩ、ＲＣＸにそれぞれ代入する処理を行う。それを行うことにより、各変数には、０或いは１が代入される。０は対応するＲＡＭの資源量が変化したことを示す値であり、１はその変化がなかったことを示す値である。
【０１１９】
ステップ１９１８、或いは１９１９の処理ステップを終了すると、次にステップ１９２０に移行する。そのステップ１９２０では、転送対象のエフェクターパートより後ろ、即ちナンバーが大きいエフェクターパートがあるか否か判定する。例えば図１０のナンバーが４のエフェクターパートにＤＳＰプログラムを新たに割り当てたような場合、判定はＮＯとなってステップ１９２８に移行する。そうでない場合には、判定はＹＥＳとなってステップ１９２１に移行する。
【０１２０】
ステップ１９２１では、転送対象のエフェクターパートより後ろのパートにＤＳＰプログラムが割り当てられているか否か判定する。モードの切り替え時には、ダミー、或いは予め定めたＤＳＰプログラムを各エフェクターパートに割り当てるようになっている。従って、その割り当てに伴うＤＳＰプログラムの転送を行っているような場合、判定はＮＯとなってステップ１９２８に移行する。そうでない場合には、判定はＹＥＳとなってステップ１９２２に移行する。
【０１２１】
ステップ１９２１の判定のＹＥＳは、ステップ１９１０でＤＳＰプログラムを転送したことによって資源量の変化が生じた可能性があることを意味する。ステップ１９２２〜１９２７では、その変化に対応するための処理が行われる。
【０１２２】
先ず、ステップ１９２２では、変数ＲＣＰの値が１か否か判定する。プログラムＲＡＭ７０５における転送対象のエフェクターパート用の領域が転送によって変化しなかった場合、判定はＹＥＳとなってステップ１９２４に移行する。そうでない場合には、判定はＮＯとなり、ステップ１９２３に移行して、後ろのパートに割り当てたれたＤＳＰプログラム（プログラムデータ）の再転送を行う。その再転送は、ステップ１９１０で転送したＤＳＰプログラム（プログラムデータ）のプログラムＲＡＭ７０５内の領域に続ける形で、操作すべき命令の内容を操作しつつ行う。図１８の変数ＰｒｏｇＴｏｐはその再転送に応じて更新する。それらを行った後、ステップ１９２４に移行する。
【０１２３】
ステップ１９２４では、変数ＲＣＩの値が１か否か判定する。ＤＳＰ７０４の内部ワークＲＡＭにおける転送対象のエフェクターパート用の領域が転送によって変化しなかった場合、判定はＹＥＳとなってステップ１９２６に移行する。そうでない場合には、判定はＮＯとなり、ステップ１９２５に移行して、後ろのパートに割り当てたれたＤＳＰプログラム（初期データ）の再転送を行う。その再転送は、ステップ１９１０で転送したＤＳＰプログラム（初期データ）の内部ワークＲＡＭ内の領域に続ける形で、操作すべきデータの内容を操作しつつ行う。図１８の変数ＩｒａｍＴｏｐはその再転送に応じて更新する。それらを行った後、ステップ１９２６に移行する。
【０１２４】
ステップ１９２６では、変数ＲＣＸの値が１か否か判定する。ワークＲＡＭ７０６における転送対象のエフェクターパート用の領域が転送によって変化しなかった場合、判定はＹＥＳとなってステップ１９２８に移行する。そうでない場合には、判定はＮＯとなり、ステップ１９２７に移行して、ワークＲＡＭ７０６の初期化を行う。図１８の変数ＸｒａｍＴｏｐもそのときに更新する。それらを行った後、ステップ１９２８に移行する。
【０１２５】
上述したステップ１９２２〜１９２８の処理を実行すると、多くの場合、各エフェクターパートに割り当てた各ＲＡＭの領域は連続している形に再配置されることになる。各ＲＡＭの未使用の領域が変化することになる。ステップ１９２８〜１９３３では、その変化に対応するための処理が行われる。その処理の流れは、基本的に上記ステップ１９２２〜１９２７と同じであり、未使用の領域が変化したＲＡＭをそれに対応する変数の値から判別し、その領域が変化したＲＡＭに対して、その領域の初期化を行う。そのような初期化が完了した後、ステップ１９３４に移行する。
【０１２６】
ステップ１９３４では、転送対象とするＤＳＰプログラムの転送、及びその転送に関わる処理が完了したとして、ミュートを解除するといったロード後処理を行う。それを行った後、一連の処理を終了する。他に転送対象とするＤＳＰプログラムが存在する場合には、ＣＰＵ７０１は、再度、図１９のプログラム転送処理を実行することになる。
【０１２７】
なお、本実施の形態（第１〜第３の実施の形態）では、電子楽器に搭載されたＤＳＰを資源管理の対象としているが、当然のことながら、それ以外の装置に搭載されたＤＳＰを資源管理の対象としても良い。そのＤＳＰは複数であっても良い。ＤＳＰの資源については、ＲＡＭ等のメモリではなく、発振器や演算装置、ＬＦＯ等の他の汎用的に使用できるハードウェアであっても良い。単にプログラムの内容を変更する装置として実現させても良い。また、既製のシステムであっても、ＣＰＵの上述したような動作を実現させるためのプログラム（プログラム・アドレス・テーブルやＤＳＰ・ＲＡＭ・アドレス・テーブルを含む）をロードすることで本発明を適用させることができる。そのプログラムは、ＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク、或いは光磁気ディスク等の記録媒体に記録させて配布しても良いが、公衆網等の通信回線を用いて配信するようにしても良い。
【図面の簡単な説明】
【０１２８】
【図１】第１の実施の形態による信号処理装置の資源管理装置を用いて構築されたシステムの構成図である。
【図２】ＲＯＭに格納されたプログラムのデータ構成図である。
【図３】プログラム・アドレス・テーブルのデータ構成図である。
【図４】ＤＳＰ・ＲＡＭ・アドレス・テーブルのデータ構成図である。
【図５】プログラム転送処理の動作フローチャートである。
【図６】プログラム転送処理の動作フローチャートである（第２の実施の形態）。
【図７】第３の実施の形態による信号処理装置の資源管理装置を用いて構築されたシステムの構成図である。
【図８】信号処理装置（ＤＳＰ）の使用可能な資源を説明する図である（第３の実施の形態）。
【図９】信号処理装置（ＤＳＰ）の資源割当方法を説明する図である（第３の実施の形態）。
【図１０】信号処理装置（ＤＳＰ）の資源配分形態を説明する図である（その１：第３の実施の形態）。
【図１１】信号処理装置（ＤＳＰ）の資源配分形態を説明する図である（その２：第３の実施の形態）。
【図１２】信号処理装置（ＤＳＰ）の資源配分形態を説明する図である（その３：第３の実施の形態）。
【図１３】信号処理装置（ＤＳＰ）用プログラムのデータ構成を説明する図である（第３の実施の形態）。
【図１４】資源情報の内容の説明図である（第３の実施の形態）。
【図１５】確保した資源に応じたプログラムの変更方法を説明する図である（第３の実施の形態）。
【図１６】プログラムデータ、初期データのデータ形式を説明する図である（第３の実施の形態）。
【図１７】信号処理装置（ＤＳＰ）の資源管理用の変数を説明する図である（その１：第３の実施の形態）。
【図１８】信号処理装置（ＤＳＰ）の資源管理用の変数を説明する図である（その２：第３の実施の形態）。
【図１９】プログラム転送処理の動作フローチャートである（第３の実施の形態）。
【符号の説明】
【０１２９】
１０１、７０１  ＣＰＵ
１０２、１０５、７０２  ＲＯＭ
１０３、１０６、７０３  ＲＡＭ
１０４、７０４  ＤＳＰ
７０５  プログラムＲＡＭ
７０６  ワークＲＡＭ
【図１】
2007299421.tif 000003
【図２】
2007299421.tif 000004
【図３】
2007299421.tif 000005
【図４】
2007299421.tif 000006
【図５】
2007299421.tif 000007
【図６】
2007299421.tif 000008
【図７】
2007299421.tif 000009
【図８】
2007299421.tif 000010
【図９】
2007299421.tif 000011
【図１０】
2007299421.tif 000012
【図１１】
2007299421.tif 000013
【図１２】
2007299421.tif 000014
【図１３】
2007299421.tif 000015
【図１４】
2007299421.tif 000016
【図１５】
2007299421.tif 000017
【図１６】
2007299421.tif 000018
【図１７】
2007299421.tif 000019
【図１８】
2007299421.tif 000020
【図１９】
2007299421.tif 000021
【手続補正書】
【提出日】平成19年7月23日(2007.7.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
モジュール化されたプログラムを受け取って実行する信号処理装置が使用する資源を管理する装置であって、
複数のプログラムと、当該各プログラムの実行に必要な資源量を含む資源情報とを記憶する記憶手段と、
この記憶手段に記憶された複数のプログラムの中から、前記信号処理装置内の予め定められた割り当て先に転送すべきプログラムを指定するプログラム指定手段と、
前記信号処理装置において前記プログラム指定手段にて指定されるプログラムが割り当てられるべき前記割り当て先の資源量を検出する検出手段と、
前記プログラム指定手段にて指定されたプログラムを前記記憶手段から読み出して前記信号処理装置の前記割当先に転送する転送手段と、
前記検出手段にて検出された資源量と、前記プログラム指定手段にて指定されたプログラムに対応する資源情報に含まれる資源量とが一致するか否か判別する第１の判別手段と、
この第１の判別手段にて、検出された資源量と、前記プログラム指定手段にて指定されたプログラムに対応する資源情報に含まれる資源量とが一致しないと判別された場合に、前記信号処理装置の前記割り当て先以外の他の割当先に割り当てられている別のプログラムと同じプログラムを前記記憶手段から読み出し、当該読み出されたプログラムを前記信号処理装置に再転送する再転送手段と、
を具備したことを特徴とする信号処理装置の資源管理装置。
【請求項２】
前記再転送手段は、前記信号処理装置の前記割り当て先以外の他の割当先に別のプログラムが割り当てられているか否かを判別する第２の判別手段を含み、
この第２の判別手段にて別のプログラムが割り当てられていると判別され、かつ前記第１の判別手段にて、検出された資源量と、前記指定されたプログラムに対応する資源情報に含まれる資源量とが一致しないと判別された場合に、前記信号処理装置の前記割り当て先以外の他の割当先に割り当てられている別のプログラムと同じプログラムを前記記憶手段から読み出し、当該読み出されたプログラムを前記信号処理装置に再転送する請求項１記載の資源管理装置。
【請求項３】
モジュール化されたプログラムを受け取って実行する信号処理装置が使用する資源を管理するコンピュータに、
複数のプログラムと、当該各プログラムの実行に必要な資源量を含む資源情報とを記憶する記憶手段から、前記信号処理装置内の予め定められた割り当て先に転送すべきプログラムを指定するプログラム指定ステップと、
前記信号処理装置において前記指定されるプログラムが割り当てられるべき前記割り当て先の資源量を検出する検出ステップと、
前記指定されたプログラムを前記記憶手段から読み出して前記信号処理装置の前記割当先に転送する転送ステップと、
前記検出された資源量と、前記指定されたプログラムに対応する資源情報に含まれる資源量とが一致するか否か判別する判別ステップと、
前記検出された資源量と、前記指定されたプログラムに対応する資源情報に含まれる資源量とが一致しないと判別された場合に、前記信号処理装置の前記割り当て先以外の他の割当先に割り当てられている別のプログラムと同じプログラムを前記記憶手段から読み出し、当該読み出されたプログラムを前記信号処理装置に再転送する再転送ステップと、
を実行させる資源管理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
本願発明の資源管理装置は、請求項１に記載に示すように、モジュール化されたプログラムを受け取って実行する信号処理装置が使用する資源を管理する装置であって、複数のプログラムと、当該各プログラムの実行に必要な資源量を含む資源情報とを記憶する記憶手段と、この記憶手段に記憶された複数のプログラムの中から、前記信号処理装置内の予め定められた割り当て先に転送すべきプログラムを指定するプログラム指定手段と、前記信号処理装置において前記プログラム指定手段にて指定されるプログラムが割り当てられるべき前記割り当て先の資源量を検出する検出手段と、前記プログラム指定手段にて指定されたプログラムを前記記憶手段から読み出して前記信号処理装置の前記割当先に転送する転送手段と、前記検出手段にて検出された資源量と、前記プログラム指定手段にて指定されたプログラムに対応する資源情報に含まれる資源量とが一致するか否か判別する第１の判別手段と、この第１の判別手段にて、検出された資源量と、前記プログラム指定手段にて指定されたプログラムに対応する資源情報に含まれる資源量とが一致しないと判別された場合に、前記信号処理装置の前記割り当て先以外の他の割当先に割り当てられている別のプログラムと同じプログラムを前記記憶手段から読み出し、当該読み出されたプログラムを前記信号処理装置に再転送する再転送手段と、を具備したことを特徴とする。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
なお、上記の構成において、前記再転送手段は、前記信号処理装置の前記割り当て先以外の他の割当先に別のプログラムが割り当てられているか否かを判別する第２の判別手段を含み、この第２の判別手段にて別のプログラムが割り当てられていると判別され、かつ前記第１の判別手段にて、検出された資源量と、前記指定されたプログラムに対応する資源情報に含まれる資源量とが一致しないと判別された場合に、前記信号処理装置の前記割り当て先以外の他の割当先に割り当てられている別のプログラムと同じプログラムを前記記憶手段から読み出し、当該読み出されたプログラムを前記信号処理装置に再転送する、ことが望ましい。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
また、本願発明の記録媒体は、請求項３記載に示すように、モジュール化されたプログラムを受け取って実行する信号処理装置が使用する資源を管理するコンピュータに、複数のプログラムと、当該各プログラムの実行に必要な資源量を含む資源情報とを記憶する記憶手段から、前記信号処理装置内の予め定められた割り当て先に転送すべきプログラムを指定するプログラム指定ステップと、前記信号処理装置において前記指定されるプログラムが割り当てられるべき前記割り当て先の資源量を検出する検出ステップと、前記指定されたプログラムを前記記憶手段から読み出して前記信号処理装置の前記割当先に転送する転送ステップと、前記検出された資源量と、前記指定されたプログラムに対応する資源情報に含まれる資源量とが一致するか否か判別する判別ステップと、前記検出された資源量と、前記指定されたプログラムに対応する資源情報に含まれる資源量とが一致しないと判別された場合に、前記信号処理装置の前記割り当て先以外の他の割当先に割り当てられている別のプログラムと同じプログラムを前記記憶手段から読み出し、当該読み出されたプログラムを前記信号処理装置に再転送する再転送ステップと、を実行させるを記録したことを特徴とする。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】削除
【補正の内容】
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】削除
【補正の内容】
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】削除
【補正の内容】
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】削除
【補正の内容】
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】削除
【補正の内容】
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】削除
【補正の内容】
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００２２
【補正方法】削除
【補正の内容】
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】削除
【補正の内容】
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】００２４
【補正方法】削除
【補正の内容】
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】００２５
【補正方法】変更
【補正の内容】
【００２５】
本発明では、転送されてくるプログラムに割り当てに必要な信号処理装置の資源と割り当て先の資源量とが一致しない場合には、この割り当て先以外の他の割当先に割り当てられている別のプログラムと同じプログラムを再転送する。このように、信号処理装置にはプログラムが資源を無駄にすることなく自動的に再割り当てされ、ユーザはこのための面倒な操作を行わなくてすむようになって利便性が向上することになる。また、結果として、信号処理装置のより多くの資源がより有効に利用されることになる。
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】００２６
【補正方法】変更
【補正の内容】
【００２６】
以上、説明したように本発明は、転送されてくるプログラムに割り当てに必要な信号処理装置の資源と割り当て先の資源量とが一致しない場合には、この割り当て先以外の他の割当先に割り当てられている別のプログラムと同じプログラムを再転送する。このように、信号処理装置にはプログラムが資源を無駄にすることなく自動的に再割り当てされ、ユーザはこのための面倒な操作を行わなくてすむようになって利便性が向上することになる。また、結果として、信号処理装置のより多くの資源がより有効に利用されることになる。
【手続補正１７】
【補正対象書類名】明細書
【補正対象項目名】００２７
【補正方法】削除
【補正の内容】