(57)【特許請求の範囲】
【請求項１】
第１の処理を実行する第１のコアとは異なる複数の第２のコアにおいて、複数のソフトウェアのうち第１のソフトウェアは前記第１の処理と同等の機能を有し、前記複数の第２のコアの各々のコアごとに、前記複数のソフトウェアのうち前記第１のソフトウェアと異なる機能を有するソフトウェアが実行中であることを検出する検出手段と、
前記検出手段によって前記第１のソフトウェアと異なる機能を有するソフトウェアが前記各々のコアで実行中である状態が検出された場合、前記複数のソフトウェアのそれぞれに対応する演算能力の要求値を記憶したデータベースから、前記第１のソフトウェアと前記各々のコアが実行中のソフトウェアとの演算能力の要求値を前記各々のコアごとに抽出する抽出手段と、
前記抽出手段によって前記各々のコアごとに抽出された前記第１のソフトウェアと前記各々のコアが実行中のソフトウェアとの演算能力の要求値の合計が、前記各々のコアの演算能力値以下か否かを前記各々のコアごとに判断する判断手段と、
前記判断手段によって前記演算能力の要求値の合計が前記各々のコアの演算能力値より大きいと判断された場合、前記複数の第２のコアのうち移行元のコアで実行中である移行対象ソフトウェアを、前記複数の第２のコアのうち移行先のコアに移行させる際に、前記第１のソフトウェアと前記移行元のコアで実行中のソフトウェアのうちの前記移行対象ソフトウェア以外のソフトウェアとの演算能力の要求値の合計が前記移行元のコアの演算能力値以下であるという判断結果と、前記移行先のコアが実行中のソフトウェアと前記移行対象ソフトウェアとの演算能力の要求値の合計が前記移行先のコアの演算能力値以下であるという判断結果と、が得られた際の前記移行元のコアと前記移行先のコアと前記移行対象ソフトウェアとを検索する検索手段と、
前記検索手段によって検索された前記移行元のコアで実行中である前記移行対象ソフトウェアを、前記検索手段によって検索された前記移行先のコアに移行させる移行手段と、
前記移行手段によって前記移行対象ソフトウェアが移行させられた後、前記移行元のコアに前記第１のソフトウェアを割り当てる割当手段と、
前記割当手段によって前記第１のソフトウェアが前記移行元のコアに割り当てられた場合、前記第１のコアを休止させる休止手段と、
を備えることを特徴とするマルチコアプロセッサシステム。
【請求項２】
前記判断手段によって、前記演算能力の要求値の合計が前記各々のコアの演算能力値以下であると判断された前記各々のコアのうち、前記演算能力値と前記第１のソフトウェアおよび前記各々のコアが実行中のソフトウェアの演算能力の要求値の合計との差分が最大となるコアを決定する決定手段を備え、
前記割当手段は、
前記決定手段によって決定されたコアに前記第１のソフトウェアを割り当て、
前記休止手段は、
前記割当手段によって前記第１のソフトウェアが前記決定されたコアに割り当てられた場合、前記第１のコアを休止させることを特徴とする請求項１に記載のマルチコアプロセッサシステム。
【請求項３】
前記判断手段は、
さらに、前記抽出手段によって抽出された前記第１のソフトウェアの演算能力の要求値と前記各々のコアごとに抽出された前記複数の第２のコアが実行中のソフトウェア群の演算能力の要求値との合計が、前記複数の第２のコアの演算能力値の合計以下であるか否かを判断し、
前記検索手段は、
前記判断手段によって前記演算能力の要求値の合計が前記各々のコアの演算能力値より大きいと判断され、かつ、前記第１のソフトウェアの演算能力の要求値と前記複数の第２のコアが実行中のソフトウェア群の演算能力の要求値との合計が前記複数の第２のコアの演算能力値の合計以下であると判断された場合、前記移行対象ソフトウェアを前記移行先のコアに移行させる際に、前記第１のソフトウェアと前記移行元のコアで実行中のソフトウェアのうちの前記移行対象ソフトウェア以外のソフトウェアとの演算能力の要求値の合計が前記移行元のコアの演算能力値以下であるという判断結果と、前記移行先のコアが実行中のソフトウェアと前記移行対象ソフトウェアとの演算能力の要求値の合計が前記移行先のコアの演算能力値以下であるという判断結果と、が得られた際の前記移行元のコアと前記移行先のコアと前記移行対象ソフトウェアとを検索する、
ことを特徴とする請求項１に記載のマルチコアプロセッサシステム。
【請求項４】
第１の処理を実行する第１のコアとは異なる複数の第２のコアにおいて、複数のソフトウェアのうち第１のソフトウェアは前記第１の処理と同等の機能を有し、前記複数の第２のコアの各々のコアごとに、前記複数のソフトウェアのうち前記第１のソフトウェアと異なる機能を有するソフトウェアが実行中であることを検出する検出工程と、
前記検出工程によって前記第１のソフトウェアと異なる機能を有するソフトウェアが前記各々のコアで実行中である状態が検出された場合、前記複数のソフトウェアのそれぞれに対応する演算能力の要求値を記憶したデータベースから、前記第１のソフトウェアと前記各々のコアが実行中のソフトウェアとの演算能力の要求値を前記各々のコアごとに抽出する抽出工程と、
前記抽出工程によって前記各々のコアごとに抽出された前記第１のソフトウェアと前記各々のコアが実行中のソフトウェアとの演算能力の要求値の合計が、前記各々のコアの演算能力値以下か否かを前記各々のコアごとに判断する判断工程と、
前記判断工程によって前記演算能力の要求値の合計が前記各々のコアの演算能力値より大きいと判断された場合、前記複数の第２のコアのうち移行元のコアで実行中である移行対象ソフトウェアを、前記複数の第２のコアのうち移行先のコアに移行させる際に、前記第１のソフトウェアと前記移行元のコアで実行中のソフトウェアのうちの前記移行対象ソフトウェア以外のソフトウェアとの演算能力の要求値の合計が前記移行元のコアの演算能力値以下であるという判断結果と、前記移行先のコアが実行中のソフトウェアと前記移行対象ソフトウェアとの演算能力の要求値の合計が前記移行先のコアの演算能力値以下であるという判断結果と、が得られた際の前記移行元のコアと前記移行先のコアと前記移行対象ソフトウェアとを検索する検索工程と、
前記検索工程によって検索された前記移行元のコアで実行中である前記移行対象ソフトウェアを、前記検索工程によって検索された前記移行先のコアに移行させる移行工程と、
前記移行工程によって前記移行対象ソフトウェアが移行させられた後、前記移行元のコアに前記第１のソフトウェアを割り当てる割当工程と、
前記割当工程によって前記第１のソフトウェアが前記移行元のコアに割り当てられた場合、前記第１のコアの休止依頼を通知する休止通知工程と、
を前記複数の第２のコアのうちのいずれかのコアが実行することを特徴とする電力制御方法。
【請求項５】
第１の処理を実行する第１のコアとは異なる複数の第２のコアにおいて、複数のソフトウェアのうち第１のソフトウェアは前記第１の処理と同等の機能を有し、前記複数の第２のコアの各々のコアごとに、前記複数のソフトウェアのうち前記第１のソフトウェアと異なる機能を有するソフトウェアが実行中であることを検出する検出工程と、
前記検出工程によって前記第１のソフトウェアと異なる機能を有するソフトウェアが前記各々のコアで実行中である状態が検出された場合、前記複数のソフトウェアのそれぞれに対応する演算能力の要求値を記憶したデータベースから、前記第１のソフトウェアと前記各々のコアが実行中のソフトウェアとの演算能力の要求値を前記各々のコアごとに抽出する抽出工程と、
前記抽出工程によって前記各々のコアごとに抽出された前記第１のソフトウェアと前記各々のコアが実行中のソフトウェアとの演算能力の要求値の合計が、前記各々のコアの演算能力値以下か否かを前記各々のコアごとに判断する判断工程と、
前記判断工程によって前記演算能力の要求値の合計が前記各々のコアの演算能力値より大きいと判断された場合、前記複数の第２のコアのうち移行元のコアで実行中である移行対象ソフトウェアを、前記複数の第２のコアのうち移行先のコアに移行させる際に、前記第１のソフトウェアと前記移行元のコアで実行中のソフトウェアのうちの前記移行対象ソフトウェア以外のソフトウェアとの演算能力の要求値の合計が前記移行元のコアの演算能力値以下であるという判断結果と、前記移行先のコアが実行中のソフトウェアと前記移行対象ソフトウェアとの演算能力の要求値の合計が前記移行先のコアの演算能力値以下であるという判断結果と、が得られた際の前記移行元のコアと前記移行先のコアと前記移行対象ソフトウェアとを検索する検索工程と、
前記検索工程によって検索された前記移行元のコアで実行中である前記移行対象ソフトウェアを、前記検索工程によって検索された前記移行先のコアに移行させる移行工程と、
前記移行工程によって前記移行対象ソフトウェアが移行させられた後、前記移行元のコアに前記第１のソフトウェアを割り当てる割当工程と、
前記割当工程によって前記第１のソフトウェアが前記移行元のコアに割り当てられた場合、前記第１のコアの休止依頼を通知する休止通知工程と、
を前記複数の第２のコアのうちのいずれかのコアに実行させることを特徴とする電力制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電力を制御するマルチコアプロセッサシステム、電力制御方法、および電力制御プログラムに関する。
【背景技術】
【０００２】
従来の携帯電話は、通信、通話機能をベースバンドプロセッサ（以下、「ＢＰ」と称する。）が担当しており、その他のマルチメディア処理をアプリケーションプロセッサ（以下、「ＡＰＬ」と称する。）が担当している。さらに、ＢＰは、通話機能で使用する音声の符号化と復号を行う音声コーデック処理をＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）に処理させている（たとえば非特許文献１〜３を参照。）。ＤＳＰは、特定の演算処理を高速に行うことを目的に作られ、主に音声処理・画像処理などに使われるプロセッサである。このように、携帯電話を制御するプロセッサは、ＢＰ、ＡＰＬ、ＤＳＰという処理の異なるプロセッサを有するヘテロジニアス・マルチコアプロセッサシステムである。【０００３】
ヘテロジニアス・マルチコアプロセッサシステムの省電力の技術として、専用のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と汎用のＣＰＵのうち、外部電源かバッテリー駆動かに応じて、プログラムを割り当てるＣＰＵを選択することで省電力化を図るという技術が開示されている（たとえば、下記特許文献１を参照。）。【０００４】
また、ＡＰＬは負荷の高いマルチメディア処理を担当するため、実行しているマルチメディア処理によって演算能力が大きく変化する。したがって、ＡＰＬは、演算能力を変化させる機能として、クロックギア機能を有する場合もある。クロックギア機能は、周波数を段階的に変更させることができる機能である。ＡＰＬが有するクロックギア機能は、３〜５段階に周波数を変更できる場合が多い。このように、ＡＰＬは、実行しているマルチメディア処理に応じてクロックギアを変更することで、省電力化を図ることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２７６３９５号公報
【非特許文献】
【０００６】
【非特許文献１】頭脳放談  ：  第２０回  日立がＳ−ＭＡＰでケータイを変える？、［ｏｎｌｉｎｅ］、［平成２２年０３月１８日検索］、インターネット＜ｈｔｔｐ：／／ｗｗｗ．ａｔｍａｒｋｉｔ．ｃｏ．ｊｐ／ｆｐｃ／ｒｅｎｓａｉ／ｚｕｎｏｕｈｏｕｄａｎ０２０／ｓｍａｐ．ｈｔｍｌ＞
【非特許文献２】＠ＩＴ：頭脳放談：第４４回  ニッポン半導体、復活のカギは携帯電話？、［ｏｎｌｉｎｅ］、［平成２２年０３月１８日検索］、インターネット＜ｈｔｔｐ：／／ｗｗｗ．ａｔｍａｒｋｉｔ．ｃｏ．ｊｐ／ｆｓｙｓ／ｚｕｎｏｕｈｏｕｄａｎ／０４４ｚｕｎｏｕ／ａｐｐ＿ｐｒｏｃｅｓｓｏｒ．ｈｔｍｌ＞
【非特許文献３】Ｍｏｂｉｌｅ：ＴＩの「ＯＭＡＰ」，ＮＥＣ，松下，富士通が３Ｇ携帯に採用、［ｏｎｌｉｎｅ］、［平成２２年０３月１８日検索］、インターネット＜ｈｔｔｐ：／／ｐｌｕｓｄ．ｉｔｍｅｄｉａ．ｃｏ．ｊｐ／ｍｏｂｉｌｅ／０２０３／１８／ｎ＿ｏｍａｐ．ｈｔｍｌ＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来技術において、特許文献１にかかる技術では、電源の利用形態が外部電源かバッテリー駆動かによってプログラムを割り当てるＣＰＵを選択している。バッテリー駆動の際に、省電力状態となる低性能のＣＰＵを選択することになり、バッテリーに余裕があったとしても常にプログラムの実行速度が低速となる問題点があった。また、クロックギア機能を使って省電力化を行っていても、クロックギアで設定できる階数は少ないため、実行中のマルチメディア処理が適切な演算能力とＡＰＬの演算能力とで差分が発生し、演算能力の余剰が発生するという問題点があった。【０００８】
本発明は、上述した従来技術による問題点を解消するため、演算能力の余剰を減らし、省電力化するマルチコアプロセッサシステム、電力制御方法、および電力制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、開示のマルチコアプロセッサシステムは、第１の処理を実行する第１のコアとは異なる第２のコアにおいて、複数のソフトウェアのうち第１のソフトウェアは第１の処理と同等の機能を有し、複数のソフトウェアのうち第１のソフトウェアと異なる機能を有する第２のソフトウェアが実行中であることを検出し、第２のソフトウェアが第２のコアで実行中である状態が検出された場合、複数のソフトウェアのそれぞれに対応する演算能力の要求値を記憶したデータベースから、第１のソフトウェアと第２のソフトウェアとの演算能力の要求値を抽出し、抽出された第１のソフトウェアと第２のソフトウェアとの演算能力の要求値の合計が、第２のコアの演算能力値以下か否かを判断し、演算能力の要求値の合計が第２のコアの演算能力値以下であると判断された場合、第２のコアに第１のソフトウェアを割り当て、第１のソフトウェアが第２のコアに割り当てられた場合、第１のコアを休止させることを要件とする。
【発明の効果】
【００１０】
本マルチコアプロセッサシステム、電力制御方法、および電力制御プログラムによれば、演算能力の余剰を減らし、省電力化できるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】本実施の形態にかかるマルチコアプロセッサシステムのハードウェアを示すブロック図である。
【図２】マルチコアプロセッサシステム１００を示すブロック図である。
【図３】マルチコアプロセッサシステム１００の各ＣＰＵの実行状態の遷移を示す説明図である。
【図４】図３の状態３０２における各ＣＰＵの実行状況と消費電力の説明図である。
【図５】図３の状態３０４における各ＣＰＵの実行状況と消費電力の説明図である。
【図６】図３の状態３０３における各ＣＰＵの実行状況と消費電力の説明図である。
【図７】ソフトウェア能力要求テーブル２０１の記憶内容の一例を示す説明図である。
【図８Ａ】マルチコアプロセッサシステム１００のスケジューリング処理を示すフローチャート（その１）である。
【図８Ｂ】マルチコアプロセッサシステム１００のスケジューリング処理を示すフローチャート（その２）である。
【図９】ＰＭＵイベント取得処理を示すフローチャートである。
【図１０】外部割り込み検出処理を示すフローチャートである。
【図１１】コーデック結果処理を示すフローチャートである。
【図１２】ＤＳＰ起動要求処理を示すフローチャートである。
【図１３】余剰あり処理を示すフローチャートである。
【図１４】ＡＰＬ１０３が単数の場合における余剰判断処理を示すフローチャートである。
【図１５Ａ】ＡＰＬ１０３が複数の場合における余剰判断処理を示すフローチャート（その１）である。
【図１５Ｂ】ＡＰＬ１０３が複数の場合における余剰判断処理を示すフローチャート（その２）である。
【図１６】コーデック開始処理を示すフローチャートである。
【図１７】ＤＳＰコーデック処理を示すフローチャートである。
【図１８】外部割り込み終了処理を示すフローチャートである。
【図１９】ステップＳ１５１７におけるマイグレーションの対象となる移行対象ソフトウェアの検索処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して、本発明にかかるマルチコアプロセッサシステム、電力制御方法、および電力制御プログラムの好適な実施の形態を詳細に説明する。
【００１３】
（マルチコアプロセッサシステムのハードウェア）
図１は、本実施の形態にかかるマルチコアプロセッサシステムのハードウェアを示すブロック図である。図１において、マルチコアプロセッサシステム１００は、ベースバンドプロセッサ（ＢＰ）１０１と、ＰＭＵ（Ｐｏｗｅｒ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）１０２と、アプリケーションプロセッサ（ＡＰＬ）１０３と、ＤＳＰ１０４と、を備えている。
【００１４】
マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。好ましくは、マルチコアプロセッサシステム１００は、性能が異なるコアを複数備える、ヘテロジニアス・マルチコアプロセッサシステムであってもよい。
【００１５】
また、専用の記憶領域として、マルチコアプロセッサシステム１００は、ＢＰ１０１がアクセス可能なＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０７と、ＡＰＬ１０３がアクセス可能なＲＡＭ１０８とを備えている。共用の記憶領域として、マルチコアプロセッサシステム１００は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０９と、ＲＡＭ１１０と、フラッシュＲＯＭ１１１と、を備えている。また、ユーザやその他の機器との入出力装置として、マルチコアプロセッサシステム１００は、アンテナ１０５と、ＲＦ回路１０６と、ディスプレイ１１２と、キーボード１１３と、を備えている。また、各部はバス１１４によってそれぞれ接続されている。
【００１６】
ここで、ＢＰ１０１は、ＲＦ回路１０６の制御によって通話の検出を行い、通信、通話機能を担当するプロセッサコアである。また、本実施の形態にかかるＢＰ１０１は、ＡＰＬ１０３の演算能力に余剰があるか否かで、通話に伴う音声コーデック処理をＡＰＬ１０３かＤＳＰ１０４に配布する。ＰＭＵ１０２は、消費電力を装置ごとに管理する装置であり、本実施の形態では、ＡＰＬ１０３とＤＳＰ１０４をスリープさせる。
【００１７】
ＡＰＬ１０３は、マルチメディア処理を担当するプロセッサコアである。また、ＡＰＬ１０３は、演算能力に余剰がある場合に、音声コーデックも担当する。ＡＰＬ１０３は、ＡＰＬ１０３とＲＡＭ１０８などの動作周波数を変更できる機能として、クロックギア機能を有してもよい。ＡＰＬ１０３は、実行しているソフトウェアの負荷に応じてクロックギアを切り替えることにより、省電力効果を得ることができる。たとえば、ＡＰＬ１０３は、クロックギアを３〜５段階に変更できる。具体的な動作周波数の例としては、１００［ＭＨｚ］、２００［ＭＨｚ］、６００［ＭＨｚ］であり、それぞれの動作周波数に対応する消費電力の例としては、１００［ｍＷ］、２００［ｍＷ］、６００［ｍＷ］である。
【００１８】
ＤＳＰ１０４は、音声コーデックを担当するプロセッサコアである。音声コーデックのフォーマットとしては、ＰＣＭ（Ｐｕｌｓｅ  Ｃｏｄｅ  Ｍｏｄｕｌａｔｉｏｎ）、ＡＤＰＣＭ（Ａｄａｐｔｉｖｅ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｕｌｓｅ  Ｃｏｄｅ  Ｍｏｄｕｌａｔｉｏｎ）が存在する。ＤＳＰ１０４の専用のＲＡＭを図示していないが、ＤＳＰ１０４専用のＲＡＭが存在してもよい。また、マルチコアプロセッサシステム１００は、ＡＰＬ１０３がＲＡＭ１０８にアクセスして音声コーデック処理を実行している途中に、ＤＳＰ１０４に音声コーデック処理を移行することもある。そのときには、ＲＡＭ１０８に格納されている音声コーデックの途中結果にアクセスするため、ＤＳＰ１０４はＲＡＭ１０８にアクセスできるように結線してもよい。
【００１９】
アンテナ１０５は、無線信号を送受信する。ＲＦ回路１０６は、高周波処理部であり、アンテナ１０５を介してインターネットなどのネットワークからデータを受信したり、ネットワークへデータを送信したりする。ここでは、ＲＦ回路１０６は、Ａ（Ａｎａｌｏｇ）／Ｄ（Ｄｉｇｉｔａｌ）コンバータやＤ／Ａコンバータなどを備えていることとし、ネットワークからのデータをディジタル信号に変換したり、ＢＰ１０１からのデータをアナログ信号に変換したりする。
【００２０】
ＲＯＭ１０９は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ１１０は、ＢＰ１０１、ＰＭＵ１０２、ＡＰＬ１０３、ＤＳＰ１０４のワークエリアとして使用される。フラッシュＲＯＭ１１１は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）などのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。
【００２１】
ディスプレイ１１２は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ１１２は、たとえば、ＴＦＴ液晶ディスプレイなどを採用することができる。キーボード１１３は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。図１にて図示した例では、テンキーであり、ユーザからの入力を外部割り込みとしてＰＭＵ１０２に送信する。
【００２２】
（マルチコアプロセッサシステム１００）
次に、マルチコアプロセッサシステム１００について説明する。図２は、マルチコアプロセッサシステム１００を示すブロック図である。マルチコアプロセッサシステム１００は、検出部２０２と、抽出部２０３と、余剰判断部２０４と、割当部２０５と、休止部２０６と、決定部２０７と、移行部２０８と、休止通知部２０９と、コーデック処理検出部２１０と、コーデック処理配布部２１１と、を含む。この制御部となる機能（検出部２０２〜コーデック処理配布部２１１）は、記憶装置に記憶されたプログラムをＢＰ１０１、ＰＭＵ１０２、ＡＰＬ１０３のいずれかが実行することにより、その機能を実現する。記憶装置とは、たとえば、図１に示したＲＡＭ１０７、ＲＡＭ１０８、ＲＯＭ１０９、ＲＡＭ１１０、フラッシュＲＯＭ１１１などである。
【００２３】
また、マルチコアプロセッサシステム１００は、ソフトウェア能力要求テーブル２０１にアクセス可能である。ソフトウェア能力要求テーブル２０１は、複数のソフトウェアのうち、ソフトウェアごとに演算能力の要求値を記憶する。ソフトウェア能力要求テーブル２０１にアクセスするのは、ＡＰＬ１０３であるため、図２ではソフトウェア能力要求テーブル２０１がＲＡＭ１０８に格納されているが、ＲＡＭ１１０などに格納されていてもよい。
【００２４】
また、各制御部のうち、検出部２０２〜割当部２０５、決定部２０７〜休止通知部２０９はＡＰＬ１０３によって実行される。休止部２０６は、ＰＭＵ１０２によって実行される。コーデック処理検出部２１０、コーデック処理配布部２１１は、ＢＰ１０１によって実行される。
【００２５】
検出部２０２は、特定の処理を実行する特定のコアとは異なる他のコアにおいて、複数のソフトウェアのうち、特定のソフトウェアとは異なる他のソフトウェアが実行中であることを検出する機能を有する。特定のソフトウェアは、複数のソフトウェアに属し、特定の処理と同等の機能を有する。また、特定の処理とは、たとえば音声のコーデック処理であり、特定のコアとはＤＳＰ１０４である。また、特定の処理としては、ＤＳＰ１０４が一般的に得意とするディジタル画像処理であってもよい。
【００２６】
特定のコアとは異なる他のコアは、ＡＰＬ１０３である。また、他のソフトウェアは、ＡＰＬ１０３にて実行される特定のソフトウェア以外であればどのソフトウェアであってもよい。たとえば、他のソフトウェアは、特定の処理以外のマルチメディア処理である、ストリーミング映像再生処理であってもよい。たとえば、マルチメディア処理を実行する以外にも、他のソフトウェアがビジネスソフトウェアであるワードプロセッサソフトウェアであれば文章編集処理を実行してもよい。
【００２７】
また、特定のコアと他のコアは、性能の異なるＣＰＵであってもよい。図１、図２で示したＡＰＬ１０３は１つのＣＰＵであるが、マルチメディア処理を実行するＡＰＬ１０３は複数のＣＰＵを含んでいてもよい。特定の処理と同等の機能を有する特定のソフトウェアとは、たとえば、ＤＳＰ１０４が担当するコーデック処理と同等の機能を有するコーデック処理ソフトウェアである。
【００２８】
具体的には、たとえば、検出部２０２は、ＤＳＰ１０４にて音声のコーデック処理が実行中で、ＡＰＬ１０３ではコーデック処理ソフトウェアとは異なる他のソフトウェアが実行中であることを検出する。なお、検出されたという情報は、ＲＡＭ１０８、ＲＡＭ１１０などの記憶領域に記憶される。
【００２９】
抽出部２０３は、検出部２０２によって他のソフトウェアが他のコアに実行中である状態が検出された場合、ソフトウェア能力要求テーブル２０１から、特定のソフトウェアと他のソフトウェアとの演算能力の要求値を抽出する機能を有する。演算能力の要求値とは、ソフトウェアが正常動作するための演算能力である。演算能力の要求値は、実行前のシミュレーションや、プロファイラを用いて事前に測定される。また、ＡＰＬ１０３は、ソフトウェア実行時に記録を取り、ソフトウェア能力要求テーブル２０１を更新してもよい。具体的には、たとえば、検出部２０２によって検出された場合、抽出部２０３は、特定のソフトウェアの演算能力の要求値を抽出する。
【００３０】
抽出された値は、たとえば、１秒間に何百万個の命令が実行できるかを示すＭＩＰＳ（Ｍｉｌｌｉｏｎ  Ｉｎｓｔｒｕｃｔｉｏｎｓ  Ｐｅｒ  Ｓｅｃｏｎｄ）で示される。たとえば、抽出部２０３によって特定のソフトウェアであるコーデック処理ソフトウェアの演算能力の要求値は６０［ＭＩＰＳ］と抽出される。同様に、抽出部２０３によって他のソフトウェアとして、ストリーミング再生ソフトウェアの演算能力の要求値は１００［ＭＩＰＳ］、音声再生ソフトウェアの演算能力の要求値は４０［ＭＩＰＳ］と抽出される。なお、抽出された演算能力の要求値は、ＲＡＭ１０８、ＲＡＭ１１０などの記憶領域に記憶される。
【００３１】
余剰判断部２０４は、抽出部２０３によって抽出された特定のソフトウェアと他のソフトウェアとの演算能力の要求値の合計が、他のコアの演算能力値以下か否かを判断する機能を有する。また、余剰判断部２０４は、移行部２０８によって移行対象ソフトウェアが移行させられる場合に、移行元のコアの移行対象ソフトウェア以外の残余のソフトウェアとの演算能力の要求値の合計が、移行元のコアの演算能力値以下か否かを判断してもよい。また、余剰判断部２０４は、移行元のコアの演算能力値以下であり、かつ、特定のソフトウェアと他のコアごとに実行中のソフトウェア群との演算能力の要求値の合計が、他のコアの演算能力値の合計以下であるか否かを判断してもよい。
【００３２】
具体的には、たとえば、特定のソフトウェアの演算能力の要求値が６０［ＭＩＰＳ］、他のソフトウェアの演算能力の要求値が１００［ＭＩＰＳ］、４０［ＭＩＰＳ］であり、ＡＰＬ１０３の演算能力値が２００［ＭＩＰＳ］である状態を想定する。６０＋１００＋４０≦２００となるため、余剰判断部２０４は、演算能力の要求値の合計が、ＡＰＬ１０３の演算能力値以下であると判断する。なお、判断された情報は、ＲＡＭ１０８、ＲＡＭ１１０などの記憶領域に記憶される。
【００３３】
割当部２０５は、余剰判断部２０４によって他のコアの演算能力値以下であると判断された場合、他のコアに特定のソフトウェアを割り当てる機能を有する。また、割当部２０５は、決定部２０７によって決定されたコアに特定のソフトウェアを割り当ててもよい。具体的には、たとえば、余剰判断部２０４によってＡＰＬ１０３の演算能力値以下であると判断された場合、割当部２０５は、ＡＰＬ１０３にコーデック処理ソフトウェアを割り当てる。なお、割り当て結果は、ＲＡＭ１０８、ＲＡＭ１１０などの記憶領域に記憶される。
【００３４】
休止部２０６は、割当部２０５によって特定のソフトウェアが他のコアに割り当てられた場合、休止通知部２０９から通知を受け、特定のコアを休止させる機能を有する。また、休止部２０６は、割当部２０５によって特定のソフトウェアが決定部２０７によって決定されたコアに割り当てられた場合、特定のコアを休止させてもよい。具体的には、たとえば、ＡＰＬ１０３にコーデック処理ソフトウェアが割り当てられた場合、ＰＭＵ１０２は、ＤＳＰ１０４を休止させる。なお、休止させたという情報は、ＲＡＭ１１０などの記憶領域に記憶される。
【００３５】
決定部２０７は、余剰判断部２０４によって他のコアの演算能力値以下であると判断された場合、他のコアの中から、演算能力値と特定のソフトウェアおよび他のソフトウェアの演算能力の要求値の合計との差分が最大となるコアを決定する機能を有する。
【００３６】
たとえば、ＡＰＬ１０３がＡＰＬ＃１〜ＡＰＬ＃３という３個のＣＰＵを含む。また、ＡＰＬ＃１の演算能力値が１００［ＭＩＰＳ］であり、要求値の合計が７０［ＭＩＰＳ］であれば、差分は３０［ＭＩＰＳ］となる。同様に、ＡＰＬ＃２の演算能力値が２００［ＭＩＰＳ］であり、要求値の合計が１２０［ＭＩＰＳ］であれば、差分は８０［ＭＩＰＳ］となる。同様に、ＡＰＬ＃３の演算能力値が６００［ＭＩＰＳ］であり、要求値の合計が５８０［ＭＩＰＳ］であれば、差分は２０［ＭＩＰＳ］となる。
【００３７】
このとき、決定部２０７は、ＡＰＬ＃１〜ＡＰＬ＃３から差分が最大となるＡＰＬ＃２をコーデック処理ソフトウェアを割り当てられるＣＰＵとして決定する。なお、決定されたＣＰＵの情報は、ＲＡＭ１０８、ＲＡＭ１１０などの記憶領域に記憶される。
【００３８】
移行部２０８は、他のコアのうち移行元のコアで実行中である移行対象ソフトウェアを、他のコアのうち移行先のコアに移行させる機能を有する。また、移行部２０８は、余剰判断部２０４によって、特定のソフトウェアと移行元のコアの移行対象ソフトウェア以外の残余のソフトウェアとの演算能力の要求値の合計が移行元のコアの演算能力値以下と判断された場合、移行対象ソフトウェアを移行させてもよい。
【００３９】
たとえば、ＡＰＬ１０３がＡＰＬ＃１、ＡＰＬ＃２という２個のＣＰＵを含む。さらに、ＡＰＬ＃１が移行元のコア、ＡＰＬ＃２が移行先のコアとする。ＡＰＬ＃１にて実行中のソフトウェアの演算能力の要求値が１６０［ＭＩＰＳ］であり、移行対象ソフトウェアの演算能力の要求値が２０［ＭＩＰＳ］であれば、残余のソフトウェアの演算能力の要求値の合計は１６０−２０＝１４０［ＭＩＰＳ］となる。
【００４０】
さらに、ＡＰＬ＃１の演算能力値が２００［ＭＩＰＳ］、特定のソフトウェアの演算能力の要求値が６０［ＭＩＰＳ］であれば、１４０＋６０≦２００となり、余剰判断部２０４は、移行元のコアの演算能力値以下と判断する。よって、移行部２０８は、移行対象ソフトウェアをＡＰＬ＃２に移行させる。なお、移行させた移行対象ソフトウェアの情報は、ＲＡＭ１０８、ＲＡＭ１１０などの記憶領域に記憶されてもよい。
【００４１】
休止通知部２０９は、割当部２０５によって特定のソフトウェアが他のコアに割り当てられた場合に、特定のコアの休止依頼を通知する機能を有する。具体的には、たとえば、ＡＰＬ１０３に特定のソフトウェアであるコーデック処理ソフトウェアが割り当てられた後、休止通知部２０９は、ＰＭＵ１０２にＤＳＰ１０４の休止依頼を通知する。なお、休止依頼情報は、ＲＡＭ１０８、ＲＡＭ１１０などの記憶領域に記憶されてもよい。
【００４２】
コーデック処理検出部２１０は、ＲＦ回路１０６によって入出力されたデータに基づいて、コーデック処理が発生するかを検出する機能を有する。具体的には、たとえば、入力されたデータをマルチコアプロセッサシステム１００で適用するプロトコルに従って変換した結果、入力されたデータのフォーマットがＰＣＭやＡＤＰＣＭであった場合に、ＢＰ１０１は、コーデック処理が発生することを検出する。なお、検出されたデータは、ＲＡＭ１０７、ＲＡＭ１１０などの記憶領域に記憶される。
【００４３】
コーデック処理配布部２１１は、コーデック処理検出部２１０によって検出されたコーデック処理をＡＰＬ１０３の演算能力の余剰に基づいて、ＡＰＬ１０３かＤＳＰ１０４に配布する機能を有する。具体的には、たとえば、ＡＰＬ１０３の演算能力に余剰があれば、ＢＰ１０１は、コーデック処理をＡＰＬ１０３に配布する。ＡＰＬ１０３の演算能力に余剰がなければ、ＢＰ１０１は、コーデック処理をＤＳＰ１０４に配布する。なお、ＡＰＬ１０３かＤＳＰ１０４のどちらにコーデック処理を配布したかという情報は、ＲＡＭ１０７、ＲＡＭ１１０などの記憶領域に記憶される。
【００４４】
図３は、マルチコアプロセッサシステム１００の各ＣＰＵの実行状態の遷移を示す説明図である。マルチコアプロセッサシステム１００の状態は、以下の５つの状態のうちいずれか１つの状態になる。状態３０１は、通話中でなくＢＰ１０１のみを実行中である。状態３０２は、通話中でありＢＰ１０１とＤＳＰ１０４を実行中である。状態３０３は、通話中でありＢＰ１０１とＡＰＬ１０３を実行中である。状態３０４は、通話中でありＢＰ１０１とＡＰＬ１０３とＤＳＰ１０４を実行中である。状態３０５は、通話中でなくＢＰ１０１とＡＰＬ１０３を実行中である。
【００４５】
マルチコアプロセッサシステム１００が状態３０１の状態で、ＢＰ１０１が通話の検出を行うと、ＰＭＵ１０２は、音声コーデック処理を行うＤＳＰ１０４を休止状態から復帰させる。結果、マルチコアプロセッサシステム１００は、状態３０１から状態３０２に遷移する。また、マルチコアプロセッサシステム１００が状態３０１の状態で、ＰＭＵ１０２がキーボード１１３からの外部割り込みを検出すると、ＰＭＵ１０２は、マルチメディア処理を行うＡＰＬ１０３を休止状態から復帰させる。結果、マルチコアプロセッサシステム１００は、状態３０１から状態３０５に遷移する。
【００４６】
マルチコアプロセッサシステム１００が状態３０２の状態で、ＢＰ１０１が通話終了の検出を行うと、ＰＭＵ１０２は、音声コーデック処理を行うＤＳＰ１０４を休止させる。結果、マルチコアプロセッサシステム１００は、状態３０２から状態３０１に遷移する。
【００４７】
また、マルチコアプロセッサシステム１００が状態３０２の状態で、ＰＭＵ１０２がキーボード１１３からの外部割り込みを検出すると、ＰＭＵ１０２はマルチメディア処理を行うＡＰＬ１０３を休止状態から復帰させる。さらに、ＡＰＬ１０３の演算能力に余剰がある場合は、ＰＭＵ１０２は、コーデック処理をＤＳＰ１０４からＡＰＬ１０３に移行させる。結果、マルチコアプロセッサシステム１００は、状態３０２から状態３０３に遷移する。もし、ＡＰＬ１０３の演算能力に余剰がない場合は、ＤＳＰ１０４はコーデック処理を継続する。結果、マルチコアプロセッサシステム１００は、状態３０２から状態３０４に遷移する。
【００４８】
マルチコアプロセッサシステム１００が状態３０３の状態で、無操作状態が一定時間を超えタイムアウトした場合は、ＡＰＬ１０３は、マルチメディア処理を終了する。続けて、ＰＭＵ１０２は、ＤＳＰ１０４を休止状態から復帰させた後、コーデック処理をＡＰＬ１０３からＤＳＰ１０４に移行させた後、ＡＰＬ１０３を休止させる。結果、マルチコアプロセッサシステム１００は、状態３０３から状態３０２に遷移する。
【００４９】
また、マルチコアプロセッサシステム１００が状態３０３の状態で、更なる外部割り込みを検出しマルチメディア処理が増加し、ＡＰＬ１０３の演算能力に余剰がなくなった場合、ＰＭＵ１０２は、まずＤＳＰ１０４を休止状態から復帰させる。続けて、ＰＭＵ１０２はコーデック処理をＡＰＬ１０３からＤＳＰ１０４に移行させる。結果、マルチコアプロセッサシステム１００は、状態３０３から状態３０４に遷移する。また、マルチコアプロセッサシステム１００が状態３０３の状態で、ＢＰ１０１が通話終了の検出を行うと、ＡＰＬ１０３は音声コーデック処理を終了する。結果、マルチコアプロセッサシステム１００は、状態３０３から状態３０５に遷移する。
【００５０】
マルチコアプロセッサシステム１００が状態３０４の状態で、マルチメディア処理のいくつかが終了し、ＡＰＬ１０３の演算能力に余剰が発生した場合、ＰＭＵ１０２はコーデック処理をＤＳＰ１０４からＡＰＬ１０３に移行させる。続けて、ＰＭＵ１０２は、ＤＳＰ１０４を休止させる。結果、マルチコアプロセッサシステム１００は、状態３０４から状態３０３に遷移する。また、マルチコアプロセッサシステム１００が状態３０４の状態で、ＢＰ１０１が通話終了の検出を行うと、ＰＭＵ１０２は、音声コーデック処理を行うＤＳＰ１０４を休止させる。結果、マルチコアプロセッサシステム１００は、状態３０４から状態３０５に遷移する。
【００５１】
マルチコアプロセッサシステム１００が状態３０５の状態で、ＢＰ１０１が通話の検出を行うと、ＡＰＬ１０３の演算能力に余剰がある場合は、ＡＰＬ１０３がコーデック処理を実行する。結果、マルチコアプロセッサシステム１００は、状態３０５から状態３０３に遷移する。また、ＡＰＬ１０３の演算能力に余剰がない場合は、ＰＭＵ１０２は、ＤＳＰ１０４を休止状態から復帰させる。結果、マルチコアプロセッサシステム１００は、状態３０５から状態３０４に遷移する。
【００５２】
また、マルチコアプロセッサシステム１００が状態３０５の状態で、無操作状態が一定時間を越えタイムアウトした場合は、ＡＰＬ１０３は、マルチメディア処理を終了する。マルチメディア処理がすべて終了した場合、ＰＭＵ１０２は、ＡＰＬ１０３を休止させる。結果、マルチコアプロセッサシステム１００は、状態３０５から状態３０１に遷移する。
【００５３】
図４は、図３の状態３０２における各ＣＰＵの実行状況と消費電力の説明図である。マルチコアプロセッサシステム１００の状態が状態３０２である場合、ＢＰ１０１とＤＳＰ１０４が通話処理を実行中である。また、ＤＳＰ１０４の消費電力を５０［ｍＷ］とし、ＡＰＬ１０３の消費電力は、クロックギアの低い順に１００［ｍＷ］、２００［ｍＷ］、６００［ｍＷ］とする。マルチコアプロセッサシステム１００の状態３０２におけるＤＳＰ１０４とＡＰＬ１０３の合計消費電力は、５０＋０＝５０［ｍＷ］となる。
【００５４】
図５は、図３の状態３０４における各ＣＰＵの実行状況と消費電力の説明図である。マルチコアプロセッサシステム１００の状態が状態３０４である場合、ＢＰ１０１とＡＰＬ１０３とＤＳＰ１０４が実行中である。ＡＰＬ１０３は、下から２番目のクロックギアで動作していることを想定する。マルチコアプロセッサシステム１００の状態３０４におけるＤＳＰ１０４とＡＰＬ１０３の合計消費電力は、５０＋２００＝２５０［ｍＷ］となる。
【００５５】
図６は、図３の状態３０３における各ＣＰＵの実行状況と消費電力の説明図である。マルチコアプロセッサシステム１００の状態が状態３０３である場合、ＢＰ１０１とＡＰＬ１０３が実行中である。マルチコアプロセッサシステム１００の状態３０３におけるＤＳＰ１０４とＡＰＬ１０３の合計消費電力は、０＋２００＝２００［ｍＷ］となる。このように、状態３０４と状態３０３を比較すると、マルチコアプロセッサシステム１００として実行している処理は一致しているものの、ＡＰＬ１０３の演算能力の余剰分をコーデック処理に使用しているため、状態３０３の方が省電力となる。
【００５６】
図７は、ソフトウェア能力要求テーブル２０１の記憶内容の一例を示す説明図である。テーブルは、ソフトウェア名称、演算能力の要求値という２つのフィールドを有する。ソフトウェア名称フィールドは、ソフトウェアの名称を格納する。演算能力の要求値フィールドは、ソフトウェアの演算能力の要求値を格納する。
【００５７】
“ストリーミング再生”ソフトウェアが正常動作するには、たとえば、演算能力は１００［ＭＩＰＳ］となる。同様に、“音声再生”ソフトウェアが正常動作するには、たとえば、演算能力は４０［ＭＩＰＳ］、“地図表示”ソフトウェアが正常動作するには、演算能力は、たとえば、１１０［ＭＩＰＳ］となる。また、ＤＳＰ１０４が行うコーデック処理と同等の機能を持つ“ＰＣＭコーデック”ソフトウェアが正常動作するには、演算能力は、たとえば、６０［ＭＩＰＳ］となる。具体的な演算能力の要求値の設定方法については、実行前のシミュレーションや、プロファイラを用いて事前に測定して得られた結果を設定する。
【００５８】
図７を用いて、マルチコアプロセッサシステム１００が状態３０４から状態３０３になる場合のＡＰＬ１０３でのマルチメディア処理の実行例を示す。たとえば、ＡＰＬ１０３の消費電力が２００［ｍＷ］であり、対応する演算能力が２００［ＭＩＰＳ］とする。このとき、ＡＰＬ１０３で実行しているソフトウェアが、“ストリーミング再生”ソフトウェアと“音声再生”ソフトウェアであれば、両ソフトウェアの演算能力の要求値の合計は１４０［ＭＩＰＳ］となる。ＡＰＬ１０３の演算能力が２００［ＭＩＰＳ］であり、余剰演算能力は、２００−１４０＝６０［ＭＩＰＳ］となることから、ＡＰＬ１０３は、“ＰＣＭコーデック”ソフトウェアの正常動作に６０［ＭＩＰＳ］を確保できる。この場合は、余剰ありとして、マルチコアプロセッサシステム１００の状態が状態３０４から状態３０３となる。
【００５９】
また、ＡＰＬ１０３で実行しているソフトウェアが、“地図表示”ソフトウェアと“音声再生”ソフトウェアである場合を想定する。この場合の両ソフトウェアの演算能力の要求値の合計は１１０＋４０＝１５０［ＭＩＰＳ］となる。余剰演算能力は、２００−１５０＝５０［ＭＩＰＳ］となることから、ＡＰＬ１０３は、６０［ＭＩＰＳ］を確保できないため、“ＰＣＭコーデック”ソフトウェアの正常動作をすることができない。したがって、マルチコアプロセッサシステム１００の状態は、状態３０４を維持する。
【００６０】
図８Ａ、図８Ｂは、マルチコアプロセッサシステム１００のスケジューリング処理を示すフローチャートである。図８ＡではＰＭＵ１０２とＡＰＬ１０３のスケジューリング処理を示し、図８ＢではＢＰ１０１のスケジューリング処理を示す。
【００６１】
ＰＭＵ１０２は、後述するステップＳ８２６、ステップＳ８２８、ステップＳ８３０、ステップＳ８３２、ステップＳ８４６、ステップＳ８５０、ステップＳ８５１から通知を受信すると、ＰＭＵイベント取得処理を実行する（ステップＳ８０１）。ＰＭＵイベント取得処理の詳細は、図９にて後述する。ＰＭＵ１０２は、ＰＭＵイベント取得処理で出力されたイベントによって処理を分岐する（ステップＳ８０２）。出力されたイベントが“外部割り込みイベント”であれば（ステップＳ８０２：外部割り込みイベント）、ＰＭＵ１０２は、外部割り込み検出処理を実行する（ステップＳ８０３）。外部割り込み検出処理の詳細は、図１０にて後述する。ステップＳ８０３の処理内ではＡＰＬ１０３の状態に応じて、ＰＭＵ１０２はＡＰＬ１０３に外部割り込み通知を送信する。外部割り込み検出処理実行後、ＰＭＵ１０２は、ステップＳ８０１の処理に移行する。
【００６２】
出力されたイベントが“コーデック結果イベント”であれば（ステップＳ８０２：コーデック結果イベント）、ＰＭＵ１０２は、コーデック結果処理を実行する（ステップＳ８０４）。コーデック結果処理の詳細は、図１１にて後述する。コーデック結果処理実行後、ＰＭＵ１０２は、ステップＳ８０１の処理に移行する。出力されたイベントが“ＤＳＰ起動要求イベント”であれば（ステップＳ８０２：ＤＳＰ起動要求イベント）、ＰＭＵ１０２は、ＤＳＰ起動要求処理を実行する（ステップＳ８０５）。ＤＳＰ起動要求処理の詳細は、図１２にて後述する。ステップＳ８０５の処理内では、ＤＳＰ起動要求を行った要求元に応じて、ＰＭＵ１０２は、ＡＰＬ１０３か、ＢＰ１０１にＤＳＰ起動完了通知を送信する。ＤＳＰ起動要求処理実行後、ＰＭＵ１０２は、ステップＳ８０１の処理に移行する。
【００６３】
出力されたイベントが“余剰ありイベント”であれば（ステップＳ８０２：余剰ありイベント）、ＰＭＵ１０２は、余剰あり処理を実行する（ステップＳ８０６）。余剰あり処理の詳細は、図１３にて後述する。また、ステップＳ８０６の処理内で、ＰＭＵ１０２は、ＢＰ１０１に余剰あり通知を送信する。余剰あり処理実行後、ＰＭＵ１０２は、ステップＳ８０１の処理に移行する。出力されたイベントが“ＡＰＬスリープ要求イベント”であれば（ステップＳ８０２：ＡＰＬスリープ要求イベント）、ＰＭＵ１０２は、ＡＰＬ１０３を休止させる（ステップＳ８０７）。実行後、ＰＭＵ１０２は、ステップＳ８０１の処理に移行する。
【００６４】
次に、ＡＰＬ１０３のフローチャートを説明する。ＡＰＬ１０３は、通知を受信するまで休止する（ステップＳ８２１）。具体的な休止方法としては、たとえば、ＰＭＵ１０２がＡＰＬ１０３に対して電力の供給を停止することで、ＡＰＬ１０３を休止状態にさせる。
【００６５】
続けて、ステップＳ８０３、ステップＳ８０５、または、後述するステップＳ８４５、ステップＳ８４９から通知を受け取ると、ＡＰＬ１０３は、受信した通知を取得する（ステップＳ８２２）。次に、ＡＰＬ１０３は外部割り込み処理を開始する（ステップＳ８２３）。具体的には、ＡＰＬ１０３は、外部割り込み処理に対応したマルチメディア処理としてストリーミング再生ソフトウェア、音声再生ソフトウェアなどを実行する。
【００６６】
外部割り込み処理開始後、ＡＰＬ１０３は、余剰判断処理を実行する（ステップＳ８２４）。余剰判断処理の詳細は、図１４、図１５Ａ、図１５Ｂにて後述する。判断結果により、ＡＰＬ１０３は、余剰ありか否かを判断する（ステップＳ８２５）。余剰ありと判断された場合（ステップＳ８２５：Ｙｅｓ）、ＡＰＬ１０３は、ＰＭＵ１０２へ余剰あり通知を送信する（ステップＳ８２６）。送信後、ＡＰＬ１０３は、ステップＳ８２２の処理にてコーデック処理依頼通知を受けたかを判断する（ステップＳ８２７）。
【００６７】
コーデック処理依頼通知を受けていた場合（ステップＳ８２７：Ｙｅｓ）、ＡＰＬ１０３は、コーデック開始処理を実行する（ステップＳ８２８）。コーデック開始処理の詳細は、図１６にて後述する。ステップＳ８２８の処理内ではＤＳＰ１０４の休止状態であれば、ＡＰＬ１０３はＰＭＵ１０２にＤＳＰ起動要求通知を送信する。また、コーデック処理が終了した場合、ＡＰＬ１０３は、コーデック処理の結果をＢＰ１０１へ通知する。
【００６８】
コーデック開始処理実行後、ＡＰＬ１０３は、外部割り込み処理が終了したかを判断する（ステップＳ８３１）。外部割り込み処理が終了した場合（ステップＳ８３１：Ｙｅｓ）、ＡＰＬ１０３は、外部割り込み終了処理を実行する（ステップＳ８３２）。外部割り込み終了処理の詳細は、図１８にて後述する。ステップＳ８３２の処理内ではＰＭＵ１０２に余剰あり通知を送信していた場合、ＡＰＬ１０３はＰＭＵ１０２に余剰ありの取り消し通知を送信する。
【００６９】
外部割り込み終了処理終了後、ＡＰＬ１０３は、ステップＳ８２１の処理に移行する。外部割り込み処理が終了していない場合（ステップＳ８３１：Ｎｏ）、ＡＰＬ１０３は、タスクディスパッチが発生したかを判断する（ステップＳ８３３）。タスクディスパッチが発生した場合（ステップＳ８３３：Ｙｅｓ）、再び外部割り込み処理が発生したことになるため、ＡＰＬ１０３は、ステップＳ８２３の処理に移行する。タスクディスパッチが発生していない場合（ステップＳ８３３：Ｎｏ）、ＡＰＬ１０３は、ステップＳ８３１の処理に移行する。
【００７０】
余剰なしと判断された場合（ステップＳ８２５：Ｎｏ）、ＡＰＬ１０３は、コーデック処理依頼通知を受けたかを判断する（ステップＳ８２９）。コーデック処理依頼通知を受けていた場合（ステップＳ８２９：Ｙｅｓ）、ＡＰＬ１０３は、ＤＳＰコーデック処理を実行する（ステップＳ８３０）。ＤＳＰコーデック処理の詳細は、図１７にて後述する。ステップＳ８３０の処理内ではＤＳＰ１０４が休止状態であれば、ＡＰＬ１０３はＰＭＵ１０２にＤＳＰ起動要求通知を送信する。ＤＳＰコーデック処理後、ＡＰＬ１０３は、ステップＳ８３１の処理に移行する。コーデック処理依頼通知を受けていない場合も（ステップＳ８２７：Ｎｏ、ステップＳ８２９：Ｎｏ）、ＡＰＬ１０３は、ステップＳ８３１の処理に移行する。
【００７１】
次に、図８Ｂを用いてＢＰ１０１のスケジューリング処理を説明する。ＢＰ１０１は、コーデック処理が発生したかを判断する（ステップＳ８４１）。コーデック処理が発生していない場合（ステップＳ８４１：Ｎｏ）、ＢＰ１０１は一定時間後に、再びステップＳ８４１の処理を実行する。コーデック処理が発生した場合（ステップＳ８４１：Ｙｅｓ）、ＢＰ１０１は、ステップＳ８０５、ステップＳ８０６、ステップＳ８２８から送信され、ＢＰ１０１が受信した通知を取得する（ステップＳ８４２）。通知を取得後、ＢＰ１０１は、コーデック処理をＤＳＰ１０４かＡＰＬ１０３が現在実行しているかを判断する（ステップＳ８４３）。
【００７２】
コーデック処理が実行されている場合（ステップＳ８４３：Ｙｅｓ）、ＢＰ１０１は、ＰＭＵ１０２からＡＰＬ１０３の余剰あり通知を受信したかを判断する（ステップＳ８４４）。余剰あり通知を受信していない場合（ステップＳ８４４：Ｎｏ）、ＢＰ１０１は、ＤＳＰ１０４またはＡＰＬ１０３からコーデック処理の結果を受信したかを判断する（ステップＳ８４７）。コーデック処理の結果を受信した場合（ステップＳ８４７：Ｙｅｓ）、ＢＰ１０１は、ＰＭＵ１０２へ、コーデック処理結果受け取り通知を送信する（ステップＳ８５１）。送信後、ＢＰ１０１は、ステップＳ８４１の処理に移行する。
【００７３】
コーデック処理の結果を受信していない場合（ステップＳ８４７：Ｎｏ）、ＢＰ１０１は、ステップＳ８４２の処理に移行する。余剰あり通知を受信した場合（ステップＳ８４４：Ｙｅｓ）、ＢＰ１０１は、ＡＰＬ１０３へコーデック処理依頼通知を送信する（ステップＳ８４５）。送信後、ＢＰ１０１は、ＰＭＵ１０２へ、ＡＰＬ１０３への配布完了通知を送信し（ステップＳ８４６）、ステップＳ８４２の処理に移行する。
【００７４】
コーデック処理がＤＳＰ１０４でもＡＰＬ１０３でも実行されていない場合（ステップＳ８４３：Ｎｏ）、ＢＰ１０１は、ＰＭＵ１０２からＡＰＬ１０３の余剰あり通知を受信したかを判断する（ステップＳ８４８）。余剰あり通知を受信した場合（ステップＳ８４８：Ｙｅｓ）、ＢＰ１０１は、ＡＰＬ１０３へコーデック処理依頼通知を送信し（ステップＳ８４９）、ステップＳ８４２の処理に移行する。余剰あり通知を受信していない場合（ステップＳ８４８：Ｎｏ）、ＢＰ１０１は、ＤＳＰコーデック処理を実行し（ステップＳ８５０）、ステップＳ８４２の処理に移行する。ステップＳ８５０の処理内ではＤＳＰ１０４が休止状態であれば、ＢＰ１０１はＰＭＵ１０２にＤＳＰ起動要求通知を送信する。
【００７５】
図９は、ＰＭＵイベント取得処理を示すフローチャートである。ＰＭＵ１０２は、割り込みまたは通知を受信するまで待機する（ステップＳ９０１）。ＰＭＵ１０２は、割り込みまたは通知を取得し（ステップＳ９０２）、余剰ありの取り消し通知を取得したかを判断する（ステップＳ９０３）。余剰ありの取り消し通知を取得した場合（ステップＳ９０３：Ｙｅｓ）、ＰＭＵ１０２は、通知を記憶するキューの中から余剰あり通知を削除し（ステップＳ９０４）、再びステップＳ９０１の処理に移行する。
【００７６】
取得した通知が余剰ありの取り消し通知でない場合（ステップＳ９０３：Ｎｏ）、ＰＭＵ１０２は、外部割り込みを取得したかを判断する（ステップＳ９０５）。外部割り込みを取得した場合（ステップＳ９０５：Ｙｅｓ）、ＰＭＵ１０２は、外部割り込みイベントを出力し（ステップＳ９０６）、ＰＭＵイベント処理を終了する。外部割り込みを取得していない場合（ステップＳ９０５：Ｎｏ）、ＰＭＵ１０２は、ＢＰ１０１からのコーデック処理結果受け取り通知を取得したかを判断する（ステップＳ９０７）。コーデック処理結果受け取り通知を取得した場合（ステップＳ９０７：Ｙｅｓ）、ＰＭＵ１０２は、コーデック結果イベントを出力し（ステップＳ９０８）、ＰＭＵイベント処理を終了する。
【００７７】
コーデック処理結果受け取り通知を取得していない場合（ステップＳ９０７：Ｎｏ）、ＰＭＵ１０２は、ＤＳＰ起動要求通知を取得したかを判断する（ステップＳ９０９）。ＤＳＰ起動要求通知を取得した場合（ステップＳ９０９：Ｙｅｓ）、ＰＭＵ１０２は、ＤＳＰ起動要求イベントを出力し（ステップＳ９１０）、ＰＭＵイベント処理を終了する。ＤＳＰ起動要求通知を取得していない場合（ステップＳ９０９：Ｎｏ）、ＰＭＵ１０２は、余剰あり通知を取得したかを判断する（ステップＳ９１１）。余剰あり通知を取得した場合（ステップＳ９１１：Ｙｅｓ）、ＰＭＵ１０２は、余剰ありイベントを出力し（ステップＳ９１２）、ＰＭＵイベント処理を終了する。
【００７８】
余剰あり通知を取得していない場合（ステップＳ９１１：Ｎｏ）、ＰＭＵ１０２は、ＡＰＬ１０３からのスリープ要求通知を取得したかを判断する（ステップＳ９１３）。スリープ要求通知を取得した場合（ステップＳ９１３：Ｙｅｓ）、ＰＭＵ１０２は、ＡＰＬスリープ要求イベントを出力し（ステップＳ９１４）、ＰＭＵイベント処理を終了する。ＡＰＬスリープ要求通知を取得していない場合（ステップＳ９１３：Ｎｏ）、ステップＳ９０２にて取得した通知は破棄し、ステップＳ９０１の処理に移行する。
【００７９】
図１０は、外部割り込み検出処理を示すフローチャートである。ＰＭＵ１０２は、ＡＰＬ１０３が起動中かを判断する（ステップＳ１００１）。ＡＰＬ１０３が起動中でない場合（ステップＳ１００１：Ｎｏ）、ＰＭＵ１０２は、ＡＰＬ１０３を起動させる（ステップＳ１００２）。ＡＰＬが起動中の場合（ステップＳ１００１：Ｙｅｓ）、またはステップＳ１００２の処理後、ＰＭＵ１０２は、ＡＰＬ１０３へ外部割り込み通知を送信し（ステップＳ１００３）、外部割り込み検出処理を終了する。
【００８０】
図１１は、コーデック結果処理を示すフローチャートである。ＰＭＵ１０２は、ＤＳＰ１０４が起動中かを判断する（ステップＳ１１０１）。起動中である場合（ステップＳ１１０１：Ｙｅｓ）、ＰＭＵ１０２は、ＤＳＰ１０４を休止させ（ステップＳ１１０２）、コーデック結果処理を終了する。ＤＳＰ１０４が起動中でない場合も（ステップＳ１１０１：Ｎｏ）、ＰＭＵ１０２はコーデック結果処理を終了する。
【００８１】
図１２は、ＤＳＰ起動要求処理を示すフローチャートである。ＰＭＵ１０２は、ＤＳＰ１０４を起動させる（ステップＳ１２０１）。ＤＳＰ１０４の起動後、ＰＭＵ１０２は、ＡＰＬ１０３からＤＳＰ起動要求通知を受信したかを判断する（ステップＳ１２０２）。ＡＰＬ１０３からＤＳＰ起動要求通知を受信した場合（ステップＳ１２０２：Ｙｅｓ）、ＰＭＵ１０２は、ＡＰＬ１０３へＤＳＰ起動完了通知を送信する（ステップＳ１２０３）。ステップＳ１２０３の処理後、またＢＰ１０１からＤＳＰ起動要求通知を受信していない場合（ステップＳ１２０２：Ｎｏ）、ＰＭＵ１０２は、ＢＰ１０１へＤＳＰ起動完了通知を送信し（ステップＳ１２０４）、ＤＳＰ起動要求処理を終了する。
【００８２】
図１３は、余剰あり処理を示すフローチャートである。ＰＭＵ１０２は、ＢＰ１０１へ余剰あり通知を送信する（ステップＳ１３０１）。送信後、ＰＭＵ１０２は、ＢＰ１０１からＡＰＬ１０３への配布完了通知を受信したかを判断する（ステップＳ１３０２）。配布完了通知を受信していない場合（ステップＳ１３０２：Ｎｏ）、ＰＭＵ１０２は、一定時間後に、再びステップＳ１３０２の処理に移行する。
【００８３】
配布完了通知を受信した場合（ステップＳ１３０２：Ｙｅｓ）、ＰＭＵ１０２は、ＤＳＰ１０４が起動中かを判断する（ステップＳ１３０３）。ＤＳＰ１０４が起動中の場合（ステップＳ１３０３：Ｙｅｓ）、ＰＭＵ１０２は、ＤＳＰ１０４を休止させ（ステップＳ１３０４）、余剰あり処理を終了する。ＤＳＰ１０４が起動中でない場合（ステップＳ１３０３：Ｎｏ）、ＰＭＵ１０２は、余剰あり処理を終了する。
【００８４】
図１４、図１５Ａ、図１５Ｂは、余剰判断処理を示すフローチャートである。図１４では、マルチコアプロセッサシステム１００でのＡＰＬ１０３の個数が単数である場合のフローチャートを示し、図１５Ａ、図１５Ｂでは、マルチコアプロセッサシステム１００でのＡＰＬ１０３の個数が複数である場合のフローチャートを示す。
【００８５】
図１４は、ＡＰＬ１０３が単数の場合における余剰判断処理を示すフローチャートである。ＡＰＬ１０３は、ソフトウェア能力要求テーブル２０１から、コーデック処理ソフトウェアの演算能力の要求値Ｃを取得する（ステップＳ１４０１）。続けて、ＡＰＬ１０３は、変数ｋを１に設定する（ステップＳ１４０２）。
【００８６】
設定後、ＡＰＬ１０３は、ソフトウェア能力要求テーブル２０１から、ＡＰＬ１０３で実行されているｋ番目のソフトウェアの演算能力の要求値Ａ（ｋ）を取得する（ステップＳ１４０３）。取得後、ＡＰＬ１０３は、変数ｋをインクリメントし（ステップＳ１４０４）、変数ｋがＡＰＬ１０３で実行中のソフトウェア数以下かを判断する（ステップＳ１４０５）。変数ｋが実行中のソフトウェア数以下である場合（ステップＳ１４０５：Ｙｅｓ）、ＡＰＬ１０３は、ステップＳ１４０３の処理に移行する。
【００８７】
変数ｋが実行中のソフトウェア数を越えた場合（ステップＳ１４０５：Ｎｏ）、ＡＰＬ１０３は、ＡＰＬ１０３の現在のクロックギアｎに対する演算能力Ｐ（ｎ）を取得する（ステップＳ１４０６）。ステップＳ１４０３、ステップＳ１４０６で取得した値を使用して、ＡＰＬ１０３は、不等式ΣkＡ（ｋ）＋Ｃ≦Ｐ（ｎ）が成り立つかを判断する（ステップＳ１４０７）。不等式が成り立つ場合（ステップＳ１４０７：Ｙｅｓ）、ＡＰＬ１０３は、余剰ありとして判断し（ステップＳ１４０８）、余剰判断処理を終了する。不等式が成り立たない場合（ステップＳ１４０７：Ｎｏ）、ＡＰＬ１０３は、余剰なしとして判断し（ステップＳ１４０９）、余剰判断処理を終了する。
【００８８】
図１５Ａ、図１５Ｂは、ＡＰＬ１０３が複数の場合における余剰判断処理を示すフローチャートである。図１５Ａ、図１５Ｂでは、ＡＰＬ１０３がＡＰＬ＃１、ＡＰＬ＃２、・・・、ＡＰＬ＃ＭまでのＭ個のＣＰＵを含む。また、ＡＰＬ１０３が複数存在した場合、ＡＰＬ１０３が実行していたスケジューリング処理は、ＡＰＬ＃１〜ＡＰＬ＃Ｍのいずれか一つのＣＰＵが行う。図１５Ａ、図１５Ｂのフローチャートは、ＡＰＬ＃１が実行している状態を説明している。
【００８９】
ＡＰＬ＃１は、ソフトウェア能力要求テーブル２０１から、コーデック処理ソフトウェアの演算能力の要求値Ｃを取得する（ステップＳ１５０１）。取得後、ＡＰＬ＃１は、変数ｘに１を設定する（ステップＳ１５０２）。設定後、ＡＰＬ＃１は、ｘ番目のＡＰＬを選択する（ステップＳ１５０３）。選択後、ＡＰＬ＃１は、変数ｋに１を設定する（ステップＳ１５０４）。設定後、ＡＰＬ＃１は、ソフトウェア能力要求テーブル２０１から、ＡＰＬ＃ｘで実行されているｋ番目のソフトウェアの演算能力の要求値Ａｘ（ｋ）を取得する（ステップＳ１５０５）。
【００９０】
取得後、ＡＰＬ＃１は、変数ｋをインクリメントし（ステップＳ１５０６）、変数ｋがＡＰＬ＃ｘで実行中のソフトウェア数以下かを判断する（ステップＳ１５０７）。変数ｋが実行中のソフトウェア数以下である場合（ステップＳ１５０７：Ｙｅｓ）、ＡＰＬ＃１は、ステップＳ１５０５の処理に移行する。変数ｋが実行中のソフトウェア数を越えた場合（ステップＳ１５０７：Ｎｏ）、ＡＰＬ＃１は、ＡＰＬ＃ｘの、現在のクロックギアｎｘに対する演算能力Ｐｘ（ｎｘ）を取得する（ステップＳ１５０８）。取得後、ＡＰＬ＃１は、ＡＰＬ＃１は変数ｘをインクリメントし（ステップＳ１５０９）、変数ｘがＡＰＬの個数以下かを判断する（ステップＳ１５１０）。変数ｘがＡＰＬの個数以下である場合（ステップＳ１５１０：Ｙｅｓ）、ステップＳ１５０３の処理に移行する。
【００９１】
変数ｘがＡＰＬの個数以下でない場合（ステップＳ１５１０：Ｎｏ）、ＡＰＬ＃１は、不等式ΣxΣkＡｘ（ｋ）＋Ｃ≦ΣxＰｘ（ｎｘ）が成り立つかを判断する（ステップＳ１５１１）。不等式が成り立たない場合（ステップＳ１５１１：Ｎｏ）、ＡＰＬ＃１は、余剰なしと判断し（ステップＳ１５２０）、余剰判断処理を終了する。不等式が成り立つ場合（ステップＳ１５１１：Ｙｅｓ）、ＡＰＬ＃１は、変数ｘを１に設定する（ステップＳ１５１２）。
【００９２】
続けてＡＰＬ＃１は、ＡＰＬ＃ｘでのコーデック割り当て後の余剰演算能力Ｓ（ｘ）をＳ（ｘ）＝Ｐｘ（ｎｘ）−｛ΣkＡｘ（ｋ）＋Ｃ｝として算出する（ステップＳ１５１３）。算出後、ＡＰＬ＃１は、変数ｘをインクリメントし（ステップＳ１５１４）、変数ｘがＡＰＬの個数以下であるかを判断する（ステップＳ１５１５）。変数ｘがＡＰＬの個数以下である場合（ステップＳ１５１５：Ｙｅｓ）、ＡＰＬ＃１は、ステップＳ１５１３の処理に移行する。
【００９３】
変数ｘがＡＰＬの個数以下でない場合（ステップＳ１５１５：Ｎｏ）、ＡＰＬ＃１は、Ｍａｘ（Ｓ（ｘ））が０以上となるかを判断する（ステップＳ１５１６）。Ｍａｘ（Ｓ（ｘ））が０以上である場合（ステップＳ１５１６：Ｙｅｓ）、ＡＰＬ＃１は、Ｍａｘ（Ｓ（ｘ））となるＡＰＬ＃ｘを余剰ありのＣＰＵとして判断し（ステップＳ１５１９）、余剰判断処理を終了する。Ｍａｘ（Ｓ（ｘ））が０未満である場合（ステップＳ１５１６：Ｎｏ）、ＡＰＬ＃１〜ＡＰＬ＃Ｍは、ＡＰＬ＃１〜ＡＰＬ＃Ｍでソフトウェアのリスケジューリング、またはマイグレーションを行う（ステップＳ１５１７）。
【００９４】
ステップＳ１５１７の処理の結果、ＡＰＬ＃１は、ＡＰＬ＃１〜ＡＰＬ＃Ｍの中で、Ｍａｘ（Ｓ（ｘ））≧０となるＡＰＬ＃ｘが存在するかを判断する（ステップＳ１５１８）。ＡＰＬ＃ｘが存在する場合（ステップＳ１５１８：Ｙｅｓ）、ＡＰＬ＃１は、ステップＳ１５１９の処理に移行する。ＡＰＬ＃ｘが存在しない場合（ステップＳ１５１８：Ｎｏ）、ＡＰＬ＃１は、ステップＳ１５２０の処理に移行する。
【００９５】
ステップＳ１５１７の処理であるリスケジューリング、またはマイグレーションはＡＰＬ＃１〜ＡＰＬ＃Ｍの余剰演算能力Ｓ（ｘ）がコーデック処理ソフトウェアの演算能力の要求値Ｃを超えるように実行される。以下に、具体的なマイグレーションの例を示す。具体的には、たとえば、ＡＰＬがＡＰＬ＃１、ＡＰＬ＃２と２つ存在し、それぞれのクロックギアからＡＰＬ＃１の演算能力が１００［ＭＩＰＳ］、ＡＰＬ＃２の演算能力が２００［ＭＩＰＳ］である場合を想定する。
【００９６】
また、ＡＰＬ＃１にて実行されているソフトウェアがソフトウェアＡ、ソフトウェアＢと２つあり、演算能力の要求値が、それぞれ６０［ＭＩＰＳ］、２０［ＭＩＰＳ］であるとする。また、ＡＰＬ＃２にて実行されているソフトウェアがソフトウェアＣ、ソフトウェアＤと２つあり、演算能力の要求値が、１４０［ＭＩＰＳ］、２０［ＭＩＰＳ］であるとする。また、コーデック処理ソフトウェアの演算能力の要求値Ｃが６０［ＭＩＰＳ］であるとする。
【００９７】
このとき、ステップＳ１５１１の不等式は、（６０＋２０）＋（１４０＋２０）＋６０≦１００＋２００となるため、ＡＰＬ＃１は、ステップＳ１５１１：Ｙｅｓのルートを処理する。続けて、ステップＳ１５１６にて、Ｓ（１）＝−４０、Ｓ（２）＝−２０となり、ＡＰＬ＃１は、ステップＳ１５１７：Ｎｏのルートを処理する。
【００９８】
ステップＳ１５１７の処理にて、ＡＰＬ＃１、ＡＰＬ＃２は、ＡＰＬ＃２で実行中のソフトウェアＤを移行対象ソフトウェアとしてＡＰＬ＃１に移行させることで、Ｓ（２）＝０となり、ＡＰＬ＃１は、ステップＳ１５１８：Ｙｅｓのルートを処理することになる。このように、ＡＰＬ＃１、ＡＰＬ＃２の中で、コーデック処理ソフトウェアの演算能力の要求値Ｃを越えるようにＡＰＬ＃１、ＡＰＬ＃２はリスケジューリング、またはマイグレーションを行う。マイグレーションの対象となる移行対象ソフトウェアの検索処理の一例を示すフローチャートは、図１９にて後述する。
【００９９】
図１６は、コーデック開始処理を示すフローチャートである。ＡＰＬ１０３は、コーデック処理を開始する（ステップＳ１６０１）。コーデック処理中に、ＡＰＬ１０３は、外部割り込み処理が終了したか、または、ＡＰＬ１０３の演算能力に余剰がなくなったかを判断する（ステップＳ１６０２）。外部割り込み処理が終了していなく、かつ、ＡＰＬ１０３の演算能力に余剰がある場合（ステップＳ１６０２：Ｎｏ）、ＡＰＬ１０３は、コーデック処理が終了したかを判断する（ステップＳ１６０３）。コーデック処理が終了していない場合、ＡＰＬ１０３は、ステップＳ１６０２の処理に移行する。
【０１００】
コーデック処理が終了した場合（ステップＳ１６０３：Ｙｅｓ）、ＡＰＬ１０３は、ＢＰ１０１へコーデック処理の結果を返却する（ステップＳ１６０４）。結果を返却後、ＡＰＬ１０３は、コーデック処理の依頼通知を引き続き受信したかを判断する（ステップＳ１６０６）。受信していない場合（ステップＳ１６０６：Ｎｏ）、ＡＰＬ１０３は、コーデック開始処理を終了する。
【０１０１】
コーデック処理の依頼通知を受信していた場合（ステップＳ１６０６：Ｙｅｓ）、ＡＰＬ１０３は、ステップＳ１６０１の処理に移行する。外部割り込み処理が終了したか、または、ＡＰＬ１０３の演算能力に余剰がなくなった場合（ステップＳ１６０２：Ｙｅｓ）、ＡＰＬ１０３は、ＤＳＰコーデック処理を実行し（ステップＳ１６０５）、コーデック開始処理を終了する。
【０１０２】
図１７は、ＤＳＰコーデック処理を示すフローチャートである。ＤＳＰコーデック処理は、ＢＰ１０１か、ＡＰＬ１０３によって実行される。図１７の例では、ＤＳＰコーデック処理がＢＰ１０１にて実行される場合を想定する。
【０１０３】
ＢＰ１０１は、ＰＭＵ１０２へＤＳＰ起動要求通知を送信する（ステップＳ１７０１）。ＤＳＰ起動要求通知を送信後、ＢＰ１０１は、ＰＭＵ１０２からＤＳＰ起動完了通知を受信したかを判断する（ステップＳ１７０２）。ＤＳＰ起動完了通知を受信していない場合（ステップＳ１７０２：Ｎｏ）、ＢＰ１０１は、一定時間後、再びステップＳ１７０２の処理に移行する。
【０１０４】
ＤＳＰ起動完了通知を受信した場合（ステップＳ１７０２：Ｙｅｓ）、ＢＰ１０１は、ＡＰＬ１０３にてコーデック処理を実行していたかを判断する（ステップＳ１７０３）。ＡＰＬ１０３にてコーデック処理を実行していた場合（ステップＳ１７０３：Ｙｅｓ）、ＢＰ１０１は、ＡＰＬ１０３からＤＳＰ１０４にコーデック処理を移行し（ステップＳ１７０４）、ＤＳＰコーデック処理を終了する。ＡＰＬ１０３にてコーデック処理を実行していなかった場合（ステップＳ１７０３：Ｎｏ）、ＢＰ１０１は、ＤＳＰ１０４へコーデック処理を配布し（ステップＳ１７０５）、ＤＳＰコーデック処理を終了する。
【０１０５】
図１８は、外部割り込み終了処理を示すフローチャートである。ＡＰＬ１０３は、ＰＭＵ１０２へ余剰あり通知を送信したかを判断する（ステップＳ１８０１）。余剰あり通知を送信した場合（ステップＳ１８０１：Ｙｅｓ）、ＡＰＬ１０３は、ＰＭＵ１０２へ余剰ありの取り消し通知を送信する（ステップＳ１８０２）。余剰あり通知を送信していない場合（ステップＳ１８０１：Ｎｏ）、または、ステップＳ１８０２の終了後、ＡＰＬ１０３は、ＰＭＵ１０２へＡＰＬスリープ要求を送信し（ステップＳ１８０３）、外部割り込み終了処理を終了する。
【０１０６】
なお、余剰ありの取り消し通知を送信する際には、ＡＰＬ１０３は、ＰＭＵ１０２の通知を格納するキューの一番先頭に、余剰ありの取り消し通知を格納してもよい。これにより、ＰＭＵ１０２がステップＳ９０２にて通知を取得する際に、余剰あり通知より先に余剰ありの取り消し通知を取得でき、ＰＭＵ１０２は、余剰あり通知を削除することができる。
【０１０７】
図１９は、ステップＳ１５１７におけるマイグレーションの対象となる移行対象ソフトウェアの検索処理の一例を示すフローチャートである。ＡＰＬ＃１は、変数ｘに１を設定し（ステップＳ１９０１）、変数ｋにも１を設定する（ステップＳ１９０２）。設定後、ＡＰＬ＃１は、ＡＰＬ＃ｘのｋ番目のソフトウェアにおいて、Ｓ（ｘ）＋Ａ（ｋ）を算出する（ステップＳ１９０３）。
【０１０８】
算出後、ＡＰＬ＃１は、変数ｋをインクリメントし（ステップＳ１９０４）、変数ｋが実行中のソフトウェア以下かを判断する（ステップＳ１９０５）。変数ｋが実行中のソフトウェア数以下である場合（ステップＳ１９０５：Ｙｅｓ）、ＡＰＬ＃１は、ステップＳ１９０３の処理に移行する。変数ｋが実行中のソフトウェア数を越えた場合（ステップＳ１９０５：Ｎｏ）、ＡＰＬ＃１は、変数ｘをインクリメントし（ステップＳ１９０６）、変数ｘがＡＰＬの個数以下かを判断する（ステップＳ１９０７）。変数ｘがＡＰＬの個数以下である場合（ステップＳ１９０７：Ｙｅｓ）、ＡＰＬ＃１はステップＳ１９０２の処理に移行する。
【０１０９】
変数ｘがＡＰＬの個数より大きい場合（ステップＳ１９０７：Ｎｏ）、ＡＰＬ＃１は、算出されたＳ（ｘ）＋Ａ（ｋ）のうち、Ｓ（ｘ）＋Ａ（ｋ）≧０となり、最も最小のＳ（ｘ）＋Ａ（ｋ）となるｘ、ｋをｘ１、ｋ１に設定する（ステップＳ１９０８）。ＡＰＬ＃ｘ１が移行元のＣＰＵとなり、ＡＰＬ＃ｘ１のｋ１番目のソフトウェアが移行対象ソフトウェアになる。Ｓ（ｘ１）＋Ａ（ｋ１）≧０となるｘ１、ｋ１が存在しなかった場合、ＡＰＬ＃１は値を設定しない。なお、Ｓ（ｘ１）＋Ａ（ｋ１）≧０については、以下のように変形できる。
【０１１０】
Ｓ（ｘ１）＋Ａ（ｋ１）≧０
⇔Ｐｘ（ｎｘ１）−｛ΣkＡｘ（ｋ）＋Ｃ｝＋Ａ（ｋ１）≧０
⇔Ｐｘ（ｎｘ１）≧｛ΣkＡｘ（ｋ）−Ａ（ｋ１）｝＋Ｃ
【０１１１】
｛ΣkＡｘ（ｋ）−Ａ（ｋ１）｝＋Ｃは、移行対象ソフトウェア以外の残余のソフトウェアとコーデック処理の演算能力の要求値の合計となる。したがって、Ｓ（ｘ１）＋Ａ（ｋ１）≧０を満たすことは、前述の合計がＡＰＬ＃ｘ１の演算能力値以下となることと同値である。
【０１１２】
ＡＰＬ＃１は、ｘ１、ｋ１に値が設定されたかを判断する（ステップＳ１９０９）。値が設定されていない場合（ステップＳ１９０９：Ｎｏ）、ＡＰＬ＃１は、移行対象ソフトウェアが見つからなかったとして出力し（ステップＳ１９１６）、移行対象ソフトウェアの検索処理を終了する。値が設定された場合（ステップＳ１９０９：Ｙｅｓ）、ＡＰＬ＃１は、変数ｘに１を設定する（ステップＳ１９１０）。
【０１１３】
設定後、ＡＰＬ＃１は、変数ｘがＡＰＬの個数以下かを判断する（ステップＳ１９１１）。変数ｘがＡＰＬの個数より大きい場合（ステップＳ１９１１：Ｎｏ）、ＡＰＬ＃１はステップＳ１９１６の処理に移行する。変数ｘがＡＰＬの個数以下である場合（ステップＳ１９１１：Ｙｅｓ）、ＡＰＬ＃１は変数ｘとｘ１が等しいかを判断する（ステップＳ１９１２）。変数ｘとｘ１が等しい場合（ステップＳ１９１２：Ｙｅｓ）、ＡＰＬ＃１は変数ｘをインクリメントし（ステップＳ１９１４）、ステップＳ１９１１の処理に移行する。
【０１１４】
変数ｘとｘ１が等しくない場合（ステップＳ１９１２：Ｎｏ）、ＡＰＬ＃１は、不等式Ｐｘ（ｎｘ）−ΣkＡ（ｋ）−Ａ（ｋ１）≧０が成り立つかを判断する（ステップＳ１９１３）。不等式が成り立たない場合（ステップＳ１９１３：Ｎｏ）、ＡＰＬ＃１は、ステップＳ１９１４の処理に移行する。不等式が成り立つ場合（ステップＳ１９１３：Ｙｅｓ）、ＡＰＬ＃１は、ＡＰＬ＃ｘ１が移行元のＣＰＵ、ＡＰＬ＃ｘ１のｋ１番目のソフトウェアが移行対象ソフトウェア、ＡＰＬ＃ｘが移行先のＣＰＵであると出力する（ステップＳ１９１５）。出力後、ＡＰＬ＃１は、移行対象ソフトウェアの検索処理を終了する。
【０１１５】
図１９の例では、移行対象ソフトウェアが１つの場合を例に挙げたが、複数のソフトウェアを移行対象ソフトウェアとして、移行元のＡＰＬの演算能力にコーデック処理ソフトウェアの演算能力の要求値Ｃ分の余剰が生まれるようにしてもよい。
【０１１６】
以上説明したように、マルチコアプロセッサシステム、電力制御方法、および電力制御プログラムによれば、特定のコアで実行される機能を持つ特定のソフトウェアと他のコアで実行中の他のソフトウェアの演算能力の合計が他のコアの演算能力以内かを判断する。演算能力以内なら、マルチコアプロセッサシステムは、特定のソフトウェアを他のコアに割り当て、特定のコアを休止させる。これにより、マルチコアプロセッサシステムは、他のコアで発生していた演算能力の余剰を有効活用し、特定のコアが使用する電力分省電力化を図ることができる。
【０１１７】
また、マルチコアプロセッサシステムは、他のコアの中で、演算能力の余剰が最大となるコアに、特定のソフトウェアを割り当ててもよい。これにより、マルチコアプロセッサシステムは、特定のコアの分省電力化を図ることができる。さらに、マルチコアプロセッサシステムは、他のコアの負荷が均等に近づくように特定のソフトウェアを割り当てることができる。
【０１１８】
また、マルチコアプロセッサシステムは、移行元のコアで実行中の移行対象ソフトウェアを移行先のコアに移行させ、移行元のコアに、特定のソフトウェアを割り当ててもよい。これにより、マルチコアプロセッサシステムは、他のコアのおのおのの演算能力の余剰が、特定のソフトウェアの演算能力の要求値に届かなくても、演算能力の余剰を１つのコアに集めることで特定のソフトウェアを前述の１つのコアで実行でき、省電力化を図れる。
【０１１９】
また、マルチコアプロセッサシステムは、特定のソフトウェアと他のコアごとに実行中のソフトウェアとの演算能力の要求値の合計が、他のコアの演算能力値の合計以下である場合に、移行対象ソフトウェアを移行してもよい。これにより、マルチコアプロセッサシステムは、演算能力の余剰をまとめる前に、特定のソフトウェアを他のコアの１つのコアで実行できるか否かが判断でき、無駄な移行処理を行わずに済む。
【０１２０】
なお、本実施の形態で説明した電力制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本電力制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本電力制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【符号の説明】
【０１２１】
１０１  ＢＰ
１０２  ＰＭＵ
１０３  ＡＰＬ
１０４  ＤＳＰ
１０５  アンテナ
１０６  ＲＦ回路
１０８  ＲＡＭ
１１４  バス
２０１  ソフトウェア能力要求テーブル
２０２  検出部
２０３  抽出部
２０４  余剰判断部
２０５  割当部
２０６  休止部
２０７  決定部
２０８  移行部
２０９  休止通知部
２１０  コーデック処理検出部
２１１  コーデック処理配布部
【図１】
0005472449.tif 000002
【図２】
0005472449.tif 000003
【図３】
0005472449.tif 000004
【図４】
0005472449.tif 000005
【図５】
0005472449.tif 000006
【図６】
0005472449.tif 000007
【図７】
0005472449.tif 000008
【図８Ａ】
0005472449.tif 000009
【図８Ｂ】
0005472449.tif 000010
【図９】
0005472449.tif 000011
【図１０】
0005472449.tif 000012
【図１１】
0005472449.tif 000013
【図１２】
0005472449.tif 000014
【図１３】
0005472449.tif 000015
【図１４】
0005472449.tif 000016
【図１５Ａ】
0005472449.tif 000017
【図１５Ｂ】
0005472449.tif 000018
【図１６】
0005472449.tif 000019
【図１７】
0005472449.tif 000020
【図１８】
0005472449.tif 000021
【図１９】
0005472449.tif 000022