(57)【要約】【課題】マルチプロセッサの複数のプロセッサに複数のタスクを割り当て、該マルチプロセッサの性能評価を行う際に、タスクを割り当てる時間を短縮する。【解決手段】マルチプロセッサ中のプロセッサに必要な複数のタスクの全てと、オペレーティングシステムとを静的に結合させたオブジェクトコードを生成し、タスク選択用の識別表に基づいてタスクの起動を行うとともに、該識別表の内容を変更することにより、タスクの再構築を行わずにタスクの切り替えを行い、マルチプロセッサ装置の評価を効率的に行う。【選択図】図１
2007065891.tif 000002
【特許請求の範囲】
【請求項１】
タスクとオペレーティングシステムとを静的に結合させたオブジェクトコードを複数のプロセッサにロードして実行するマルチプロセッサにおいて、前記タスクは該複数のプロセッサに必要な全てのタスクを含み、該マルチプロセッサは該タスクの一部を選択するための識別表を参照し、該複数のプロセッサにおけるタスクの起動を行うことを特徴とするタスク割り当て方法。
【請求項２】
前記識別表の内容を変更することにより、タスクの切り替えを行うことを特徴とする請求項１記載のタスク割り当て方法。
【請求項３】
前記識別表を前記複数のプロセッサのメモリに格納することを特徴とする請求項１記載のタスク割り当て方法。
【請求項４】
前記識別表を前記複数のプロセッサに共通なメモリに格納することを特徴とする請求項１記載のタスク割り当て方法。
【請求項５】
タスクとオペレーティングシステムとを静的に結合させたオブジェクトコードを複数のプロセッサにロードして実行するマルチプロセッサにおいて、前記タスクは該複数のプロセッサに必要な全てのタスクを含み、該マルチプロセッサは該タスクの一部を選択するための識別表を参照し、該複数のプロセッサにおけるタスクの起動を行うことを特徴とするマルチプロセッサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、各プロセッサにアプリケーションのタスクとオペレーティング・システム（OS）を結合させたオブジェクトコードをロードし、実行するマルチプロセッサシステムにおいて、各プロセッサへタスクを効率的に割り当てる方法に関する。
【背景技術】
【０００２】
昨今のＬＳＩ技術における革新的な進歩と相俟って、さまざまなタイプの情報処理機器や通信機器が開発され、日常生活に深く浸透するに至っている。このような機器ではOSが提供する実行環境の中で、所定のプログラム・コードから作成され、OSと静的に結合したタスクのオブジェクトコードを実行する組込み型のプロセッサにより、様々な処理サービスを提供するようになっている。
【０００３】
また、ＬＳＩチップの高性能化および低価格化によって、上記機器の動作に必要な複数のタスクを、複数のプロセッサに分担するマルチプロセッサが可能となり、それによってさらにより複雑な機能を持つ機器が実現されている。
【０００４】
例えばデジタルカメラや携帯電話などの小型の機器に複数プロセッサからなるマルチプロセッサを組み込み、これらの機器内の個別の機能をマルチプロセッサ内の個々のプロセッサが分担して処理することで、機器全体の性能を向上させている。
【０００５】
しかし、上記のような多様な使用環境においては、マルチプロセッサにおける個々のプロセッサの動作する条件や処理対象が異なるため、これらの複数のプロセッサとタスクとの組合せを最適に選ばないと、マルチプロセッサ全体の性能が十分発揮できず、機器性能の最適化を図ることができない。この最適なタスクの組合せを探すために、従来は、評価の都度、各タスクのソースコードをコンパイルし、ＯＳと静的に結合したオブジェクトコードをビルドによって生成し、該オブジェクトコードを各プロッセサにロードして実行させることで、タスクとプロセッサの組合せによる性能評価を行っていた。なお、ＯＳとの静的な結合とは、タスク実行前にタスクのオブジェクトコードとＯＳを結合したオブジェクトコードを生成することを指す。
【０００６】
上記の性能評価方法において、マルチプロセッサ全体の性能が目標より低い結果しか得られない場合には、タスクの組合せを変えて該タスクを再度コンパイルした上でOSと静的に結合したオブジェクトコードを再ビルドにより生成し、プロセッサへロードして評価するといった作業を繰り返し行う必要があった。
【０００７】
特に、個々のプロセッサにロードすべきタスクが複数ある場合、プロセッサとタスクの組合せの数が増え、当該組合せに対するオブジェクトコードのビルドとロードに多くの時間と手間がかかるため、性能評価に多くの時間と手間を要する問題があった。
【特許文献１】特開２００３−１０８４４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、マルチプロセッサの複数のプロセッサに複数のタスクを割り当て、該マルチプロセッサの性能評価を行う際に、タスクを割り当てる時間を短縮するものである。
【課題を解決するための手段】
【０００９】
本発明は、複数のタスクとオペレーティングシステムを静的に結合させたオブジェクトコードをマルチプロセッサの複数のプロセッサにロードして、該オブジェクトコードを実行するマルチプロセッサにおいて、該複数のプロセッサに必要な複数のタスクの全てと、オペレーティングシステムとを静的に結合させたオブジェクトコードを生成し、該オブジェクトコード中の該タスクを選択して起動するための識別表とを用意し、該識別表の内容に基づいて該プロセッサにおけるタスクの起動を行うとともに、該識別表の内容を変更することにより、タスクの再構築を行わずにタスクの切り替えを行い、該マルチプロセッサ装置の評価を効率的に行うことができることを特徴とするマルチプロセッサにおけるタスクの割り当て方法に関する。
【発明の効果】
【００１０】
本発明によるマルチプロセッサ装置の性能評価におけるタスク割り当て方法は、マルチプロセッサに必要とされる全てのタスクとオペレーティングシステムを静的に結合したオブジェクトコードとともに、該タスクの起動を制御する起動情報格納表とを各プロセッサのメモリにロードし、該起動情報格納表の内容に基づき、該プロセッサにロードされたＯＳによってタスクを選択し、該タスクの起動を行う。これにより、タスクとオブジェクトの再生成とOSと静的に結合したロードモジュールの生成と該オブジェクトコードをマルチプロセッサに再ロードする必要がなくなり、マルチプロセッサにおけるタスクの切り替えが効率的に行われ、該マルチプロセッサ装置の評価を迅速に行うことができる。さらにタスクの最適化がなされ、実機器に応用される際には、選択されたタスクのみとOSを静的に結合したオブジェクトコードをロードすることで、該マルチプロセッサのメモリを有効に活用できる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して本発明の実施の形態について詳細に説明する。
【００１２】
図１は本発明に係るマルチプロセッサの評価方法の一実施形態を示す図である。ここで制御用コンピュータ１には記憶装置２と４台のプロセッサ３、４、５、６からなるマルチプロセッサが接続され、タスクとオペレーティングシステム（OS）を静的に結合させ、ビルドにより生成したオブジェクトコードをマルチプロセッサの各プロセッサに転送する場合の構成例を示している。記憶装置２には前記プロセッサにロードするタスクのソースコードと該タスクの起動情報が格納される。制御用コンピュータ１は記憶装置２に格納された複数のタスクに必要な全ソースコードをコンパイルし、オペレーティングシステム（ＯＳ）と静的に結合したオブジェクトコードをビルドにより生成し、該オブジェクトコードとともに、前記のタスク起動情報に基づくタスク起動情報フラグを設定した起動情報表をロードモジュールとして該複数のプロセッサ３、４、５、６のメモリにロードする。
【００１３】
図２は記憶装置２０に格納された、各プロセッサにロードするタスク起動情報の例を示している。各プロセッサには該プロセッサに全てのタスクとOSを静的に結合した共通のオブジェクトコードをロードするが、各プロセッサごとに起動すべきタスクが異なるので、該タスク起動情報の内容は各プロセッサごとに異なる。すなわち、各プロセッサの該タスク起動情報において、起動するタスクには値１を持つフラグが与えられ、起動しないタスクに対しては値０のフラグが与えられている。
【００１４】
以下、前記タスク起動情報の例を図２に従って説明する。第１のプロセッサにはタスク起動情報２１が用意され、タスク番号と起動するタスクに対するフラグが用意されている。この例ではタスク１およびタスク７が起動されるようにフラグが設定されている。すなわちタスク１およびタスク７のフラグ値１であり、その他のタスクのフラグ値０に設定されている。同様に第２のプロセッサにはタスク起動情報２２が用意され、タスク４およびタスク５が起動されるように該当するフラグに値１が設定されている。第３のプロセッサにはタスク起動情報２３が用意され、タスク３およびタスク６が起動されるように該当するフラグに値１が設定されている。第４のプロセッサにはタスク起動情報２４が用意され、タスク２およびタスク８が起動されるように該当するフラグに値１が設定されている。また、該起動情報におけるフラグの値を変更することでマルチプロセッサにロードするタスクを変更することができる。
【００１５】
図３は各プロセッサのメモリにロードするロードモジュールの概念を表したものである。ロードモジュール３０には、各プロセッサに必要な全ての８組のタスクのソースコードをコンパイルして生成したオブジェクトコードとOSとを静的に結合した、各プロセッサに共通なオブジェクトコード３１に加え、タスクを起動するために必要な情報を格納するタスク起動情報格納表３２が含まれる。なお、各プロセッサのメモリにロードされる前記ロードモジュールの内、オブジェクトコード３１は８個全てのタスクのソースコードをコンパイルしたオブジェクトコードにOSを静的に結合させており、各プロセッサに共通のオブジェクトコードである。一方で、タスク起動情報格納表３２は各プロセッサごとに異なる内容となっている。
【００１６】
図４は前記タスク起動情報格納表の詳細を説明する図であり、各タスクに対して、起動するか否かを指定するフラグが用意されている。図４における例では、タスク１にはタスク起動フラグ４１、タスク２にはタスク起動フラグ４２、タスク３にはタスク起動フラグ４３、タスク４にはタスク起動フラグ４４、タスク５にはタスク起動フラグ４５、タスク６にはタスク起動フラグ４６、タスク７にはタスク起動フラグ４７、タスク８にはタスク起動フラグ４８が用意されている。各プロセッサは該タスク起動フラグを参照してＯＳと静的に結合したタスクのオブジェクトコードから起動すべきタスクを選択する。
【００１７】
図５は４台のプロセッサのメモリに前記ロードモジュールがロードされた状態を表す概念図である。第１のプロセッサのメモリにはロードモジュール５１がロードされ、ＯＳと静的に結合された８組のタスクのオブジェクトコード５０１とタスク起動情報格納表５０５が含まれる。この例では、タスク起動情報格納表５０５にはタスク１およびタスク７を起動するようにフラグが設定されている。第２のプロセッサのメモリに対してはロードモジュール５２がロードされ、ＯＳと静的に結合された８組のタスクのオブジェクトコード５０２とタスク起動情報格納表５０６が含まれる。タスク起動情報格納表５０６にはタスク４およびタスク５を起動するようにフラグが設定されている。第３のプロセッサのメモリに対してはロードモジュール５３がロードされ、ＯＳと静的に結合された８組のタスクのオブジェクトコード５０３とタスク起動情報格納表５０７が含まれる。タスク起動情報格納表５０７にはタスク３およびタスク６を起動するようにフラグが設定されている。第４のプロセッサのメモリに対してはロードモジュール５４がロードされ、ＯＳと静的に結合された８組のタスクのオブジェクトコード５０４とタスク起動情報格納表５０８が含まれる。タスク起動情報格納表５０８にはタスク２およびタスク８を起動するようにフラグが設定されている。なお、４台のプロセッサのメモリにロードされた前記オブジェクトコード５０１、５０２、５０３、５０４には全タスクを含む共通の内容に設定されている。
【００１８】
該ロードモジュール５１、５２、５３、５４に含まれるタスク起動情報格納表５０５、５０６、５０７、５０８を各プロセッサのタスクのオブジェクトコード中のＯＳが参照してタスクの起動を制御する。マルチプロセッサに起動信号を与えることによりマルチプロセッサ中の各プロセッサは動作を開始し、該各プロセッサのメモリにロードされたＯＳがタスク起動情報格納表５０５、５０６、５０７、５０８をそれぞれ参照して、タスクのオブジェクトコードを選択し、該タスク起動情報格納表の内容に従い、ひとつ以上のタスクを起動し、該タスクに対応するオブジェクトコードを実行する。その結果、各プロセッサの実行に基づいたマルチプロセッサの性能が評価される。該実行性能が目的に達しない場合には、タスクの入れ替えが行われる。
【００１９】
本発明によればタスクの入れ替えは前記タスク起動情報格納表のフラグ値を書き換えることで実現され、タスクの再コンパイルとＯＳとの静的結合による再ビルドの手間が省けるため、タスクの切替が容易にかつ効率よく実現できる。例えば、第１のプロセッサに割り当てられていたタスク１を第３のプロセッサに割り当てを変更し、第３のプロセッサに割り当てられていたタスク３を第１のプロセッサに割り当てを変更する場合、図６に示すように記憶装置６０に格納されたタスク起動情報６１と６３を前記変更目的に従って書換え、前記情報に基づき、第１および第３のプロセッサ内のメモリに格納されたタスク起動情報格納表を更新する。
【００２０】
該プロセッサ内のメモリに格納された起動情報格納表を更新した後、４台のプロセッサからなるマルチプロセッサを再起動することで、各プロセッサにロードされたＯＳが、更新されたタスク起動情報格納表を参照して、タスクのオブジェクトコードを選択し実行する。すなわち第１のプロセッサはタスク３およびタスク７を実行し、第２のプロセッサはタスク４とタスク５、第３のプロセッサはタスク１とタスク６、第４のプロセッサはタスク２とタスク８を選択し実行する。
【００２１】
なお、以上においては各プロセッサの起動情報格納表は各プロセッサのメモリに格納されるとして説明してきたが、本発明においては該起動情報格納表を各プロセッサが共通にアクセスできる外部の共用メモリに格納され、各プロセッサが該メモリを参照して、タスクの起動を行うことも可能である。
【００２２】
前記の場合には、各プロセッサにロードされるロードモジュールにはタスクのオブジェクトコードとOSを静的に結合したオブジェクトコードのみしか存在せず、各プロセッサのタスクの起動情報格納表は外部に用意したメモリに格納され、各プロセッサのＯＳは該メモリ中の該起動情報格納表を各々アクセスし参照して起動すべきタスクを選択する。
【００２３】
前記の方法で全タスクとOSを静的に結合したロードモジュールを各プロセッサのメモリにロードしてマルチプロセッサの全体の評価が終了し、最適なタスクとプロセッサの組合せが決定すれば、起動すべきタスクのみのソースコードを再コンパイルし、OSと静的に結合したオブジェクトコードを再生成し、該オブジェクトコードをマルチプロセッサの各プロセッサにロードして、実際の機器への応用に適用することができる。実際の機器への応用においては、最適化されたタスクのみとOSを静的に結合したオブジェクトコードを該マルチプロセッサの対応する各プロセッサのメモリにロードすることにより、該プロセッサ内のメモリを有効に使うことができ、空いた領域をユーザー用に開放することが可能となる。
【００２４】
また、前記複数のプロセッサを単一の半導体基板に集積することにより、各プロセッサに対する信号の伝達、また各プロセッサからの信号の伝達を効率よく行うことができる。さらに実装面積も縮小することができ、機器の小型化を可能にする。
【図面の簡単な説明】
【００２５】
【図１】本発明においてオブジェクトコードを生成する構成を示すブロック図である。
【図２】本発明における記憶装置内のタスク起動情報格納表の概念を示す図である。
【図３】本発明におけるロードモジュールの概念を示す図である。
【図４】本発明におけるロードモジュール内のタスク起動情報フラグ表を表す図である。
【図５】本発明における各プロセッサ内のロードモジュールを示す図である。
【図６】本発明における記憶装置内のタスク起動情報格納表の変更例を示す図である。
【符号の説明】
【００２６】
１・・・制御用コンピュータ
２、２０、６０・・・記憶装置
３、４、５、６・・・プロセッサ
２１、２２、２３、２４、６１、６２、６３、６４・・・タスク起動情報
３０・・・ロードモジュール
３１、５０１、５０２、５０３、５０４・・・タスクとＯＳを結合したオブジェクトコード
３２、４０、５０５、５０６、５０７、５０８・・・タスク起動情報格納表
４１、４２、４３、４４、４５、４６、４７、４８・・・タスク起動フラグ
５１、５２、５３、５４・・・各プロセッサにロードされたロードモジュール
【図１】
2007065891.tif 000003
【図２】
2007065891.tif 000004
【図３】
2007065891.tif 000005
【図４】
2007065891.tif 000006
【図５】
2007065891.tif 000007
【図６】
2007065891.tif 000008