(57)【要約】【課題】  組み込み用途向けのＡＭＰシステムに関して、最小限の機能追加で、システム構成が変更されても既存のソフトウェアを作り直すことなく使用できるようにする。【解決手段】  マルチプロセッサシステム（１０）は、第１プロセッサ（２０−０）、複数の第２プロセッサ（２０−１，２０−２）、管理機構（３０，３２）と、通信機構（３０，３１）とを備える。第１プロセッサは、複数のソフトウェアを実行する。複数の第２プロセッサは、複数のソフトウェアの少なくともいずれかについて、ソフトウェアに含まれる処理を第１プロセッサの代わりに実行する。管理機構は、第１プロセッサで実行中のソフトウェアと複数の第２プロセッサで実行中の処理との関連付けを行う。通信機構は、管理機構の関連付けの結果を利用して第１プロセッサおよび複数の第２プロセッサ間の通信を行う。【選択図】    図１
2010238069.tif 000002
【特許請求の範囲】
【請求項１】
複数のソフトウェアを実行する第１プロセッサと、
前記複数のソフトウェアの少なくともいずれかについて、ソフトウェアに含まれる処理を前記第１プロセッサの代わりに実行する複数の第２プロセッサと、
前記第１プロセッサで実行中のソフトウェアと前記複数の第２プロセッサで実行中の処理との関連付けを行う管理機構と、
前記管理機構の関連付けの結果を利用して前記第１プロセッサおよび前記複数の第２プロセッサ間の通信を行う通信機構と、を備えることを特徴とするマルチプロセッサシステム。
【請求項２】
請求項１に記載のマルチプロセッサシステムにおいて、
前記管理機構は、関連付けの結果を記録した管理テーブルを保持しており、前記管理テーブルを利用して関連付けを行うことを特徴とするマルチプロセッサシステム。
【請求項３】
請求項２に記載のマルチプロセッサシステムにおいて、
前記管理機構は、
前記第１プロセッサで実行されるソフトウェアとそのソフトウェアに対応する複数の処理とを示す情報を保持しており、
前記第１プロセッサで実行中のソフトウェアにより処理が呼び出されたときに、前記情報を参照して前記第１プロセッサで実行中のソフトウェアに対応する複数の処理の中から関連付ける処理を１つ選択し、関連付けの結果を前記管理テーブルに記録することを特徴とするマルチプロセッサシステム。
【請求項４】
請求項３に記載のマルチプロセッサシステムにおいて、
前記管理機構は、
前記第１プロセッサでソフトウェアが終了したときに、終了したソフトウェアに関する関連付けの結果を前記管理テーブルから削除し、
前記複数の第２プロセッサのいずれかで処理が終了したときに、終了した処理に関する関連付けの結果を前記管理テーブルから削除することを特徴とするマルチプロセッサシステム。
【請求項５】
請求項１乃至請求項４のいずれかに記載のマルチプロセッサシステムにおいて、
前記通信機構は、
前記第１プロセッサでソフトウェアが終了したときに、終了したソフトウェアに関する通信を中断し、
前記複数の第２プロセッサのいずれかで処理が終了したときに、終了した処理に関する通信を中断することを特徴とするマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムに関する。
【背景技術】
【０００２】
近時、プロセッサシステムの分野においては、半導体微細化および半導体微細化による消費電力削減の限界から、動作周波数を上げることによるプロセッサ単体の性能向上には限界がきている。このため、単一のプロセッサで実行させていた処理を分割して複数のプロセッサで同時に実行させるマルチプロセッサ技術が注目されている。マルチプロセッサシステムには、大きく分けると、対称型マルチプロセッサ（ＳＭＰ：Symmetric Multiple Processor）システムと非対称型マルチプロセッサ（ＡＭＰ：Asymmetric Multiple Processor）システムとの２種類がある。
【０００３】
ＳＭＰシステムでは、全てのプロセッサが同じ種類であり、一般には、プロセッサ間で１つのメモリが共有され、スヌープ方式等の機構によりキャッシュコヒーレンシ（キャッシュの一貫性）が維持されるようになっている。また、オペレーティングシステム（ＯＳ：Operating System）についてはＳＭＰ用のものがあり、これが複数のプロセッサおよびアプリケーション（アプリケーション・ソフトウェア）を管理するようになっている。このように、ＳＭＰシステムでは、マルチコア構成（複数のプロセッサを用いる構成）であるが故に難しくなる部分をハードウェアやＯＳが隠蔽してくれる。このため、アプリケーションではマルチコア構成を殆ど意識しなくてもよいが、ハードウェアおよびＯＳが大型化する傾向にある。
【０００４】
一方、ＡＭＰシステムでは、予め役割が決められた複数のプロセッサが通信機構（プロセッサ間で同期および通信を行うための機構）で接続されたような構成になっている。また、ＯＳについては、シングルプロセッサ用のＯＳに対してプロセッサ間で同期および通信を行う機能を追加したものを利用するのが一般的である。このため、アプリケーション側でマルチコア構成をある程度意識する必要があるが、ハードウェアおよびＯＳはＳＭＰシステムに比べて小型化することができる。
【０００５】
一般に、組み込み機器の分野では、ハードウェアおよびソフトウェアの双方について可能な限り小型化して製品コストを抑えたいという要求が大きいため、ＳＭＰシステムよりもＡＭＰシステムの方が適していると考えられる。しかしながら、ＡＭＰシステムの場合、シングルプロセッサでは考える必要の無かったマルチコア構成を意識した制御が必要になり、アプリケーションの開発が難しくなる。このため、アプリケーションの開発の難易度を下げる工夫を施したＡＭＰシステムが開発されている。
【０００６】
ＡＭＰシステムでの１つの実現手法として、複数のプロセッサのうちの１つがフロントエンドとしてソフトウェアを実行し、残りのプロセッサがバックエンドとしてフロントエンドで実行されているソフトウェアの一部の処理を受け持って実行するという手法がある。この手法では、バックエンドを利用するソフトウェアがフロントエンドで同時に１つしか起動されない場合であれば問題ないが、複数同時に起動される場合にはソフトウェア間でバックエンドプロセッサの利用が競合する可能性がある。
【０００７】
このような場合でも、同時に起動されるソフトウェアの組み合わせが少数で固定的であれば、事前にそれぞれの組み合わせに応じてどのソフトウェアがどのバックエンドプロセッサを利用するかを決めておけばよいが、その場合、ＡＭＰシステムのバックエンドの構成や同時に起動されるソフトウェアの組み合わせが変化すると全てやり直す必要がある。これを回避するためには、汎用のＯＳが持つような複雑な資源管理の機構を導入して、ソフトウェア間でバックエンドプロセッサを共有できるようにすればよいが、組み込み機器の分野で使用するにはメモリ等の資源の消費が大きく、処理に時間もかかるという問題があった。
【０００８】
なお、マルチプロセッサシステムに関連する技術としては、複数の並列プログラムを効率よく動作させるプロセッサ割り当て制御を可能にするための技術が考案されている（例えば、特許文献１を参照）。また、高効率な並列処理を行うことが可能なオブジェクトプログラムを高速に且つプロセッサの種類によらず普遍的に種々のソースプログラムに対応して生成するための技術が考案されている（例えば、特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平０９−１４６８９８号公報
【特許文献２】特開平０３−０８０３３７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
アプリケーションの開発の容易化を図ったＡＭＰシステムでは、同一のアプリケーションが同時に複数起動される場合等について、システムの正常動作を確保するために対策を施す必要があった。そして、その対策方法には、システム構成が変更されるとアプリケーションを作り直す必要がある、或いは、大幅な機能追加が必要で組み込み機器の分野では使い難い等の問題があった。
【００１１】
本発明の目的は、組み込み用途向けのＡＭＰシステムに関して、最小限の機能追加で、システム構成が変更されても既存のソフトウェアを作り直すことなく使用できるようにすることにある。
【課題を解決するための手段】
【００１２】
本発明の一態様では、マルチプロセッサシステムは、第１プロセッサと、複数の第２プロセッサと、管理機構と、通信機構とを備える。第１プロセッサは、複数のソフトウェアを実行する。複数の第２プロセッサは、複数のソフトウェアの少なくともいずれかについて、ソフトウェアに含まれる処理を第１プロセッサの代わりに実行する。管理機構は、第１プロセッサで実行中のソフトウェアと複数の第２プロセッサで実行中の処理との関連付けを行う。通信機構は、管理機構の関連付けの結果を利用して第１プロセッサおよび複数の第２プロセッサ間の通信を行う。
【発明の効果】
【００１３】
組み込み用途向けのＡＭＰシステムに関して、最小限の機能追加で、システム構成が変更されても既存のソフトウェアを作り直すことなく使用できるようになる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１実施形態を示す図である。
【図２】第１実施形態の動作例を示す図である。
【図３】第１実施形態の別の動作例を示す図である。
【図４】本発明の第２実施形態を示す図である。
【図５】本発明の第３実施形態を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態について図面を用いて説明する。
【００１６】
図１は、本発明の第１実施形態を示している。第１実施形態のマルチプロセッサシステム１０は、組み込み用途向けのＡＭＰシステムである。マルチプロセッサシステム１０は、プロセッサ２０−０，２０−１，２０−２をフロントエンドとバックエンドとに分け、フロントエンドとバックエンドとの間を通信機構３０で接続したシステム構成になっている。フロントエンドはプロセッサ２０−０で構成されており、プロセッサ２０−０に対してＯＳ４０（シングルプロセッサ用のＯＳ）およびアプリケーション５０−１（同時に２つ起動可能），５０−２が用意されている。即ち、フロントエンドは、シングルプロセッサと同様の構成になっている。バックエンドはプロセッサ２０−１，２０−２で構成されており、プロセッサ２０−１，２０−２に対してロード機構６０−１，６０−２がそれぞれ用意されている。
【００１７】
なお、アプリケーション５０−１については、処理Ａ１，Ａ２をプロセッサ２０−１で実行させることに予め決められている。また、フロントエンドにおいて、アプリケーション５０−１が同時に２つ起動されることがある。このため、バックエンドにおいて、プロセッサ２０−１に対して、アプリケーション５０−１に対応するバイナリ７０−１（プロセッサ２０−１で実行できる形態に変換したもの）が２つ用意されている。アプリケーション５０−２については、処理Ｂ１をプロセッサ２０−２で実行させることに予め決められている。また、フロントエンドにおいて、アプリケーション５０−２が同時に複数起動されることはない。このため、バックエンドにおいて、プロセッサ２０−２に対して、アプリケーション５０−２に対応するバイナリ７０−２（プロセッサ２０−２で実行できる形態に変換したもの）が１つ用意されている。
【００１８】
通信機構３０は、プロセッサ間での同期および通信を行うための通信部３１と、フロントエンドのアプリケーションとバックエンドのバイナリとの関連付けを行う関連付け部３２とを有している。通信機構３０において、通信部３１は、アプリケーション管理情報、アプリケーション識別情報、プロセッサ識別情報および処理識別情報をフロントエンドから受けて関連付け部３２に渡す。ここで、アプリケーション管理情報は、処理を呼び出したアプリケーションを起動したときにＯＳ４０により設定されたプロセスのＩＤ番号である。アプリケーション識別情報は、処理を呼び出したアプリケーションのＩＤ番号である。プロセッサ識別情報は、処理の実行先となるプロセッサのＩＤ番号である。処理識別情報は、実行対象の処理のＩＤ番号である。
【００１９】
関連付け部３２は、プロセッサ毎に、関連付けの情報を記録した管理テーブルと、関連付け可能なアプリケーションおよびバイナリの情報を記録したバイナリリストとを保持している。なお、図中、管理テーブル内の数値は、アプリケーション管理情報およびバイナリ識別情報を示している。また、バイナリリスト内の数値は、アプリケーション識別情報およびバイナリ識別情報を示している。関連付け部３２は、これらの情報を用いてフロントエンドのアプリケーションとバックエンドのバイナリとの関連付けを行うとともに、通信部３１から情報を取得して通信部３１に対して通信の中断等を行わせる。また、通信機構３０では、関連付け部３２の関連付けの結果として得られたバイナリ識別情報および処理識別情報が通信部３１を介してロード機構６０−１，６０−２のいずれか（処理の実行先となるプロセッサに対応するロード機構）に通知される。
【００２０】
図２は、第１実施形態の動作例を示している。ここでは、フロントエンドのアプリケーションに含まれる処理をバックエンドのプロセッサで実行させた場合（即ち、フロントエンドのアプリケーションがバックエンドの処理を呼び出した場合）の動作について説明する。なお、図２の動作は、フロントエンドのアプリケーション５０−１に含まれる処理Ａ１をバックエンドのプロセッサ２０−１で実行させた場合の動作に対応している。
【００２１】
このような場合には、アプリケーション（５０−１）がアプリケーション管理情報（００１）、アプリケーション識別情報（０１）、プロセッサ識別情報（Ｐ１）および処理識別情報（Ａ１）を通信機構３０に通知する。通信機構３０（関連付け部３２）では、プロセッサ毎に、管理テーブルと、バイナリリストとが保持されている。管理テーブルには、アプリケーション管理情報とバイナリ識別情報との関連付けの結果が記録される。バイナリリストには、アプリケーション識別情報とバイナリ識別情報との対応関係が記録されている。
【００２２】
指定されたアプリケーション管理情報（００１）が指定されたプロセッサ（２０−１）に対応する管理テーブルに載っている場合には、通信機構３０（関連付け部３２）は、管理テーブルからバイナリ識別情報を取得する。載っていない場合には、通信機構３０は、指定されたプロセッサ（２０−１）に対応するバイナリリストから指定されたアプリケーション識別情報（０１）に対応するバイナリ識別情報（０１−１，０１−２）のうち、管理テーブルに載っていないものを１つ選択する。そして、通信機構３０は、選択したバイナリ識別情報をアプリケーション管理情報とともに管理テーブルに記録する。選択可能なバイナリが無い場合には、通信機構３０は、エラー通知を返す、或いは、バイナリが選択できるようになるまで待機する。その後、通信機構３０（通信部３１）は、指定されたプロセッサ（２０−１）に対応するロード機構（６０−１）に対して、指定されたアプリケーション管理情報（００１）に関連付けられたバイナリ識別情報（０１−１）と指定された処理識別情報（Ａ１）とを通知する。
【００２３】
図３は、第１実施形態の別の動作例を示している。ここでは、フロントエンドのアプリケーションまたはバックエンドの処理が終了または中断した場合の動作について説明する。なお、図３の動作は、フロントエンドのアプリケーション５０−２が終了または中断した場合の動作に対応している。
【００２４】
このような場合には、フロントエンドであればアプリケーションまたはＯＳが、バックエンドであれば処理またはロード機構が、終了または中断を検出して通信機構３０に終了を通知する。通信機構３０は、通知を受けた際に終了した側への通信を行っていた場合には、その通信を中断する。その後、通信機構３０は、関連付け部３２の管理テーブルを検索し、フロントエンドのアプリケーション（５０−２）が終了した場合には、バックエンドの全てのプロセッサ２０−１，２０−２のロード機構６０−１，６０−２に対して、対応するバイナリ（７０−２）の処理を中断するように通知する。一方、バックエンドの処理が終了した場合には、通信機構３０は、対応するフロントエンドのアプリケーションに対して、バックエンドの処理が終了または中断したことを通知する。この後、管理テーブルから終了したアプリケーションまたは処理に関する関連付けの結果を削除する。
【００２５】
以上のような第１実施形態では、組み込み用途向けのＡＭＰシステムに関して、アプリケーションおよび通信の管理の処理のうち、システム構成（フロントエンドでのアプリケーションの組み合わせやバックエンドでのプロセッサの組み合わせ等）に非依存なものについては、アプリケーションおよび処理の中に予め埋め込まれている。システム構成に依存するが静的に決めておけるものについては、通信機構３０に情報として与えてられている。動的に決めた方がよいものについては、与えられた情報に基づいて通信機構３０により決定される。これにより、必要最小限の機能追加でソフトウェアを作り変えることなく様々なシステム構成に対応することが可能になる。
【００２６】
図４は、本発明の第２実施形態を示している。なお、第２実施形態を説明するにあたって、第１実施形態で説明した要素と同一の要素については、第１実施形態で使用した符号と同一の符号を使用し、詳細な説明を省略する。
【００２７】
第２実施形態のマルチプロセッサシステム１０ａは、第１実施形態のマルチプロセッサシステム１０において通信機構３０およびＯＳ４０を通信機構３０ａおよびＯＳ４０ａにそれぞれ置き換えたものである。第２実施形態の通信機構３０ａは、第１実施形態の通信機構３０から関連付け部３２を削除したものである。第２実施形態のＯＳ４０ａは、第１実施形態のＯＳ４０に対して第１実施形態の関連付け部３２と同等の機能を有する関連付け部４１を追加したものである。
【００２８】
即ち、第２実施形態は、第１実施形態の通信機構３０の関連付け部３２をフロントエンドのＯＳ４０ａの機能（関連付け部４１）としてソフトウェアで実現した場合の実施形態である。この場合、バイナリ識別情報および処理識別情報がフロントエンドから通信機構３０ａを介してロード機構６０−１，６０−２のいずれか（処理を実行させるプロセッサに対応するロード機構）に通知されることになる。以上のような第２実施形態でも、第１実施形態と同様の効果が得られる。
【００２９】
図５は、本発明の第３実施形態を示している。なお、第３実施形態を説明するにあたって、第１および第２実施形態で説明した要素と同一の要素については、第１および第２実施形態で使用した符号と同一の符号を使用し、詳細な説明を省略する。
【００３０】
第３実施形態のマルチプロセッサシステム１０ｂは、第１実施形態のマルチプロセッサシステム１０において通信機構３０およびロード機構６０−１，６０−２を通信機構３０ａ（第２実施形態）およびロード機構６０ａ−１，６０ａ−２にそれぞれ置き換えたものである。ロード機構６０ａ−１，６０ａ−２は、第１実施形態のロード機構６０−１，６０−２に対して第１実施形態の関連付け部３２と同等の機能を有する関連付け部６１−１，６１−２をそれぞれ追加したものである。
【００３１】
即ち、第３実施形態は、第１実施形態の通信機構３０の関連付け部３２をバックエンドのロード機構６０ａ−１，６０ａ−２の機能（関連付け部６１−１，６１−２）としてソフトウェアで実現した場合の実施形態である。この場合、ロード機構６０ａ−１（６０ａ−２）の関連付け部６１−１（６１−２）は、プロセッサ２０−１（２０−２）に対応する管理テーブルおよびバイナリリストのみを保持することになる。また、アプリケーション管理情報、アプリケーション識別情報および処理識別情報がフロントエンドから通信機構３０ａを介してロード機構６０ａ−１，６０ａ−２のいずれか（処理を実行させるプロセッサに対応するロード機構）に通知されることになる。以上のような第３実施形態でも、第１実施形態と同様の効果が得られる。
【００３２】
以上の実施形態（第１、第２および第３実施形態）に関して、更に以下の付記を開示する。
（付記１）
複数のソフトウェアを実行する第１プロセッサと、
前記複数のソフトウェアの少なくともいずれかについて、ソフトウェアに含まれる処理を前記第１プロセッサの代わりに実行する複数の第２プロセッサと、
前記第１プロセッサで実行中のソフトウェアと前記複数の第２プロセッサで実行中の処理との関連付けを行う管理機構と、
前記管理機構の関連付けの結果を利用して前記第１プロセッサおよび前記複数の第２プロセッサ間の通信を行う通信機構と、を備えることを特徴とするマルチプロセッサシステム。
（付記２）
付記１に記載のマルチプロセッサシステムにおいて、
前記管理機構は、関連付けの結果を記録した管理テーブルを保持しており、前記管理テーブルを利用して関連付けを行うことを特徴とするマルチプロセッサシステム。
（付記３）
付記２に記載のマルチプロセッサシステムにおいて、
前記管理機構は、
前記第１プロセッサで実行されるソフトウェアとそのソフトウェアに対応する複数の処理とを示す情報を保持しており、
前記第１プロセッサで実行中のソフトウェアにより処理が呼び出されたときに、前記情報を参照して前記第１プロセッサで実行中のソフトウェアに対応する複数の処理の中から関連付ける処理を１つ選択し、関連付けの結果を前記管理テーブルに記録することを特徴とするマルチプロセッサシステム。
（付記４）
付記３に記載のマルチプロセッサシステムにおいて、
前記管理機構は、
前記第１プロセッサでソフトウェアが終了したときに、終了したソフトウェアに関する関連付けの結果を前記管理テーブルから削除し、
前記複数の第２プロセッサのいずれかで処理が終了したときに、終了した処理に関する関連付けの結果を前記管理テーブルから削除することを特徴とするマルチプロセッサシステム。
（付記５）
付記１乃至付記４のいずれかに記載のマルチプロセッサシステムにおいて、
前記通信機構は、
前記第１プロセッサでソフトウェアが終了したときに、終了したソフトウェアに関する通信を中断し、
前記複数の第２プロセッサのいずれかで処理が終了したときに、終了した処理に関する通信を中断することを特徴とするマルチプロセッサシステム。
（付記６）
付記１乃至付記５のいずれかに記載のマルチプロセッサシステムにおいて、
前記通信機構は、
前記第１プロセッサでソフトウェアが終了したときに、前記管理機構の関連付けの結果に基づいて、終了したソフトウェアに関連付けられた処理に対して、関連付けられたソフトウェアが終了したことを通知し、
前記複数の第２プロセッサのいずれかで処理が終了したときに、前記管理機構の関連付けの結果に基づいて、終了した処理に関連付けられたソフトウェアに対して、関連付けられた処理が終了したことを通知することを特徴とするマルチプロセッサシステム。
【００３３】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【００３４】
１０，１０ａ，１０ｂ‥マルチプロセッサシステム；２０−０，２０−１，２０−２‥プロセッサ；３０，３０ａ‥通信機構；３１‥通信部；３２‥関連付け部；４０，４０ａ‥ＯＳ；４１‥関連付け部；５０−１，５０−２‥アプリケーション；６０−１，６０−２，６０ａ−１，６０ａ−２‥ロード機構；６１−１，６１−２‥関連付け部；７０−１，７０−２‥バイナリ
【図１】
2010238069.tif 000003
【図２】
2010238069.tif 000004
【図３】
2010238069.tif 000005
【図４】
2010238069.tif 000006
【図５】
2010238069.tif 000007