(57)【特許請求の範囲】
【請求項１】
複数のアプリケーションを実行するマスタコアと、
前記複数のアプリケーションに対応するスレッドが割り当てられるスレーブコアを有するマルチコアプロセッサシステムであって、
前記マスタコアは、前記複数のアプリケーションのうちの一のアプリケーションにおいて発生したイベントに対応する割込信号を送信し、
前記スレーブコアは、前記割込信号に対応するイベントが、前記スレーブコアで実行中のスレッドに対する排他処理または同期処理の開始イベントである場合に、前記実行中のスレッドを前記スレーブコアから退避し、前記複数のアプリケーションの実行待ちスレッド群のうちの一のスレッドを前記スレーブコアの実行対象スレッドに割り当てる
マルチコアプロセッサシステム。
【請求項２】
前記スレーブコアは、前記実行待ちスレッド群がない場合に、前記スレーブコアを現在の電力よりも低電力の状態に設定する、請求項１に記載のマルチコアプロセッサシステム。
【請求項３】
前記スレーブコアは、前記割込信号に対応するイベントが前記スレーブコアから退避したスレッドに対する排他または同期の終了イベントである場合に、前記退避したスレッドを前記スレーブコアの実行対象に割り当てる、請求項１に記載のマルチコアプロセッサシステム。
【請求項４】
複数のアプリケーションを実行するマスタコアと、前記複数のアプリケーションに対応するスレッドが割り当てられるスレーブコアを有するマルチコアプロセッサシステムの制御方法であって、
前記マスタコアは、前記複数のアプリケーションのうちの一のアプリケーションにおいて発生したイベントに対応する割込信号を送信し、
前記スレーブコアは、前記割込信号に対応するイベントが、前記スレーブコアで実行中のスレッドに対する排他処理または同期処理の開始イベントである場合に、前記実行中のスレッドを前記スレーブコアから退避し、
前記スレーブコアは、前記複数のアプリケーションの実行待ちスレッド群のうちの一のスレッドを前記スレーブコアの実行対象スレッドに割り当てる
処理を実行する、マルチコアプロセッサシステムの制御方法。
【請求項５】
前記スレーブコアはさらに、前記実行待ちスレッド群がない場合に、前記スレーブコアを現在の電力よりも低電力の状態に設定する処理を実行する、請求項４に記載のマルチコアプロセッサシステムの制御方法。
【請求項６】
前記スレーブコアはさらに、前記割込信号に対応するイベントが前記スレーブコアから退避したスレッドに対する排他または同期の終了イベントである場合に、前記退避したスレッドを前記スレーブコアの実行対象に割り当てる処理を実行する、請求項４に記載のマルチコアプロセッサシステムの制御方法。
【請求項７】
複数のアプリケーションを実行するマスタコアと、前記複数のアプリケーションに対応するスレッドが割り当てられるスレーブコアを有するマルチコアプロセッサシステムの制御プログラムであって、
前記マスタコアに、前記複数のアプリケーションのうちの一のアプリケーションにおいて発生したイベントに対応する割込信号を送信する
処理を実行させ、
前記スレーブコアに、前記割込信号に対応するイベントが、前記スレーブコアで実行中のスレッドに対する排他処理または同期処理の開始イベントである場合に、前記実行中のスレッドを前記スレーブコアから退避し、
前記複数のアプリケーションの実行待ちスレッド群のうちの一のスレッドを前記スレーブコアの実行対象スレッドに割り当てる
処理を実行させる、マルチコアプロセッサシステムの制御プログラム。
【請求項８】
前記スレーブコアにさらに、前記実行待ちスレッド群がない場合に、前記スレーブコアを現在の電力よりも低電力の状態に設定する処理を実行させる、請求項７に記載のマルチコアプロセッサシステムの制御プログラム。
【請求項９】
前記スレーブコアにさらに、前記割込信号に対応するイベントが前記スレーブコアから退避したスレッドに対する排他または同期の終了イベントである場合に、前記退避したスレッドを前記スレーブコアの実行対象に割り当てる処理を実行させる、請求項７に記載のマルチコアプロセッサシステムの制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スレッドの割込を制御するマルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラムに関する。
【背景技術】
【０００２】
従来からマルチコアプロセッサシステムが開示されている。たとえば、スレーブＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）ではＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のカーネルを動作させずに、マスタＣＰＵからの起動要求に対し、スレーブライブラリをスレッド起動するマルチコアプロセッサシステムがある（たとえば、下記特許文献１〜４を参照。）。この場合、スレーブＣＰＵではカーネルは動作させず、必要最低限のスレッド実行手続きとマスタＣＰＵからの割り込み制御機能のみを有することで、ＯＳのカーネルによるオーバーヘッドを最小限にする。
【０００３】
たとえば、マスタＣＰＵで実行されているライブラリスレッドがスレーブＣＰＵに対しスレーブライブラリスレッドの呼び出しがあった場合、マスタＣＰＵおよびスレーブＣＰＵで並列実行が実現できる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２５７２６号公報
【特許文献２】特開平６−２４３１０２号公報
【特許文献３】特開平６−１４９７５２号公報
【特許文献４】特開２００６−１８５３４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、スレーブＣＰＵは、マスタＣＰＵから呼び出しがあればスレッドを実行するが、呼び出しがない場合、休止状態が継続することとなる。マスタＣＰＵとスレーブＣＰＵは常時並列実行する場合は少なく、通常は、スレーブＣＰＵはマスタＣＰＵからの呼び出しがあるまで休止状態となる。
【０００６】
このように、動作させるソフトウェアの並列実行可能な比率により、システムの利用効率が決定する（アムダールの法則）が、プロセッサ数が増えるに従い、あるいはソフトウェアのもつ並列実行可能な比率が下がるに従い、極端に利用効率が悪化して性能が劣化するという問題があった。
【０００７】
一方、マルチプロセッサの各ＣＰＵにＯＳを走行させると、各ＣＰＵでアプリケーションが実行されるが、同時に実行されるアプリケーションに対し排他制御などを施す必要が生じる。このように、ＯＳのカーネルによりきめこまかい制御が可能となるが、その管理機構によるオーバーヘッドが発生するという問題があった。特に、携帯端末のような組み込みシステムにおいては、管理機構によるオーバーヘッドが無視できない負荷になるという問題があった。
【０００８】
本発明は、上述した従来技術による問題点を解消するため、低負荷でかつプロセッサの利用効率の向上を図ることができるマルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、本マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラムは、複数のアプリケーションを実行するマスタコアと、前記複数のアプリケーションに対応するスレッドが割り当てられるスレーブコアを有するマルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラムであって、前記マスタコアは、前記複数のアプリケーションのうちの一のアプリケーションにおいて発生したイベントに対応する割込信号を送信し、前記スレーブコアへ送信した前記割込信号に対応するイベントが、前記スレーブコアで実行中のスレッドに対する排他処理または同期処理の開始イベントである場合に、前記実行中のスレッドを前記スレーブコアから退避し、前記複数のアプリケーションの実行待ちスレッド群のうちの一のスレッドを前記スレーブコアの実行対象スレッドに割り当てることを要件とする。
【発明の効果】
【００１０】
本マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラムによれば、低負荷でかつプロセッサの利用効率の向上を図ることができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】本実施の形態にかかるマルチコアプロセッサシステムのハードウェア構成を示すブロック図である。
【図２】本実施の形態にかかるマルチコアプロセッサシステムでの実行処理手順を示すフローチャートである。
【図３】割込制御の具体例１を示すシーケンス図である。
【図４】割込制御の具体例２を示すシーケンス図である。
【図５】割込制御の具体例３を示すシーケンス図である。
【図６】割込制御の具体例４を示すシーケンス図である。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して、この発明にかかるマルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラムの実施の形態を詳細に説明する。なお、本実施の形態のマルチコアプロセッサシステムにおいて、マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
【００１３】
（マルチコアプロセッサシステムのハードウェア構成）
図１は、本実施の形態にかかるマルチコアプロセッサシステムのハードウェア構成を示すブロック図である。図１において、マルチコアプロセッサシステム１００は、マスタＣＰＵ１０１と一または複数のスレーブＣＰＵ１０２（図１では１個）とメモリ１０３とがバス１０４を介して接続されて構成されている。マスタＣＰＵ１０１およびスレーブＣＰＵ１０２にはキャッシュメモリが内蔵されている。
【００１４】
マスタＣＰＵ１０１は、メモリ管理やスレーブＣＰＵ１０２を制御するＯＳ１１０が走行する。ＯＳ１１０はマスタＣＰＵ１０１でのみ走行する。また、マスタＣＰＵ１０１では、ＯＳ１１０に対応する複数のアプリケーションが、ＯＳ１１０のスケジューリングによりタイムスライスで動作する。アプリケーションＡにはその動作中に起動するスレッドＢが含まれており、アプリケーションＸにはその動作中に起動するスレッドＹが含まれる。
【００１５】
スレーブＣＰＵ１０２は、割込プログラム１２０を実行する。また、マスタＣＰＵ１０１で実行されているアプリケーションのスレッドも実行される。スレーブＣＰＵ１０２では、ＯＳ１１０が走行しないため、１個だけで独立動作することとなる。
【００１６】
メモリ１０３は、ＯＳ１１０やアプリケーション、その他各種情報を記憶したり、マスタＣＰＵ１０１およびスレーブＣＰＵ１０２のワークエリアとして使用される。メモリ１０３は、具体的には、たとえば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ハードディスクドライブなどの記憶装置である。
【００１７】
図１では、マスタＣＰＵ１０１ではＯＳ１１０上で動作するアプリケーションＡ，Ｘがタイムスライス動作しており、スレーブＣＰＵ１０２ではアプリケーションＡのスレッドＢが独立動作している。なお、アプリケーションＸのスレッドＹはマスタＣＰＵ１０１のスレッドキューで待機している。
【００１８】
本実施の形態では、排他または同期のイベントが発生した場合、スレーブＣＰＵ１０２を効率よく運用する。ここで、同期の例について説明する。たとえば、アプリケーションＡに、ファイル読み込みを行ってメモリ１０３上に展開する機能があり、同時実行中のスレッドＢはメモリ１０３上に展開されたファイルのデータを利用するものとする。このとき、スレッドＢはアプリケーションＡによるファイル読み出しとメモリ展開が完了するまで待機することになる。すなわちデータが展開されるメモリ領域は、ファイル読み出しと同時にアプリケーションＡにより排他監視下におかれ、一時的にスレーブＣＰＵ１０２からスレッドＢが開放される。このあと、メモリ展開後にスレッドＢとデータを共用（同期）することになる。
【００１９】
また、排他の例について説明する。たとえば、アプリケーションＡがブラウザ、スレッドＢがブラウザ内で動作する動画再生プログラムとする。また、アプリケーションＸがメーラ、スレッドＹがメールの問合わせプログラムとする。
【００２０】
マスタＣＰＵ１０１では、アプリケーションＡ（ブラウザ）とアプリケーションＸ（メーラ）が時分割で動作しているものとする。スレッドＢ（動画再生プログラム）が動画配信サーバからの動画の再生中に、スレッドＹ（メールの問合わせプログラム）の起動タイミングがきた場合、ＯＳ１１０は、スレーブＣＰＵ１０２にスレッドＹ（メールの問合わせプログラム）を実行させるため、スレッドＢ（動画再生プログラム）を排他制御する。これにより、スレーブＣＰＵ１０２からスレッドＢ（動画再生プログラム）が開放されて、スレーブＣＰＵ１０２においてスレッドＹ（メールの問合わせプログラム）が実行されることとなる。
【００２１】
（マルチコアプロセッサシステム１００での割込処理手順）
図２は、本実施の形態にかかるマルチコアプロセッサシステム１００での実行処理手順を示すフローチャートである。図２において、マスタＣＰＵ１０１の処理手順は、ＯＳ１１０の管理処理手順を示しており、スレーブＣＰＵ１０２の処理手順は、マスタＣＰＵ１０１からのスレッドの割込制御処理手順を示している。
【００２２】
まず、マスタＣＰＵ１０１でのＯＳ１１０の管理処理手順について説明する。ＯＳ１１０は、マスタプロセスを並列起動する（ステップＳ２０１）。具体的には、たとえば、マスタプロセスであるアプリケーションＡ，Ｘをタイムスライス動作させる。
【００２３】
また、起動されたマスタプロセスが実行されると、マスタＣＰＵ１０１は、ＯＳ１１０により、マスタプロセスの実行状況に応じてマスタプロセスのスレッドをスレッドキュー２００に設定する（ステップＳ２０２）。具体的には、たとえば、スレッドＢ，Ｙを設定する。スレッドキュー２００のステータスは、たとえば、メモリ１０３に書き込まれており、スレーブＣＰＵ１０２から参照可能となっている。
【００２４】
そして、マスタＣＰＵ１０１は、ＯＳ１１０により、イベントの発生を検出する（ステップＳ２０３）。ここで、イベントとは、スレッドの起動や停止、割込、排他、同期、シグナル・メッセージなどがある。イベントは、ＯＳ１１０上で実行されているアプリケーションやスレーブＣＰＵ１０２で実行されているスレッドにより発生する。
【００２５】
ＯＳ１１０がイベントの発生を検出すると、そのイベント種別を判別する（ステップＳ２０４）。イベントが排他または同期に関するイベントである場合（ステップＳ２０４：排他・同期）、マスタＣＰＵ１０１は、ＯＳ１１０により、割込信号の上位ビットに排他または同期を示す識別子を印加して（ステップＳ２０５）、ステップＳ２０６に移行する。
【００２６】
一方、ステップＳ２０４において、イベント種別が排他・同期以外のイベントである場合（ステップＳ２０４：その他）、ステップＳ２０６に移行する。ステップＳ２０６では、マスタＣＰＵ１０１は、ＯＳ１１０により、ステップＳ２０４で判別されたイベントに応じた割込信号をスレーブＣＰＵ１０２に通知する（ステップＳ２０６）。このように、マスタＣＰＵ１０１は、ＯＳ１１０により、マスタプロセスにおいてイベントが発生すると割込信号をスレーブＣＰＵ１０２に通知するとともに、スレッドキュー２００に必要なスレッドを投入して、実行待ちスレッドにする。
【００２７】
また、スレーブＣＰＵ１０２は、割込プログラム１２０により、スレッドの起動を待ち受け（ステップＳ２１０）、スレッドが起動されると、スレーブＣＰＵ１０２は、割込プログラム１２０により、スレッドを実行する（ステップＳ２１１）。このスレッド動作は割込信号を受信するまでおこなわれる。また、割込信号の受信前にスレッドが終了した場合は、ステップＳ２１６に移行する。
【００２８】
また、スレーブＣＰＵ１０２がマスタＣＰＵ１０１から割込信号の通知を受けると、スレーブＣＰＵ１０２は、割込プログラム１２０により、割込受信処理を実行する（ステップＳ２１２）。そして、スレーブＣＰＵ１０２は、割込プログラム１２０により、割込信号で指定されたイベントの種別を判断する（ステップＳ２１３）。イベントが、排他または同期に関するイベント以外の他のイベントである場合（ステップＳ２１３：その他）、スレーブＣＰＵ１０２は、割込プログラム１２０により、他のイベントに応じたイベント処理を実行して（ステップＳ２１４）、ステップＳ２１１に戻る。
【００２９】
一方、イベント種別が排他または同期の開始イベントである場合（ステップＳ２１３：排他開始・同期開始）、スレーブＣＰＵ１０２は、割込プログラム１２０により、現在実行中のスレッドを退避させる（ステップＳ２１５）。具体的には、たとえば、現在実行中のスレッドが利用していたスレーブＣＰＵ１０２のキャッシュメモリ上のデータをメモリ１０３にフラッシュし、メモリ１０３上のコンテキスト領域を開放することなく、これまで動作していたプログラムカウンタの位置を保存する。これにより、スレーブＣＰＵ１０２が実行していたスレッドから開放される。
【００３０】
スレッドが退避されると、割込プログラム１２０は、割込プログラム１２０により、ＯＳ１１０のスレッドキュー２００のステータスをチェックする（ステップＳ２１６）。スレッドキュー２００が空集合でない場合（ステップＳ２１６：キュー≠Φ）、割込プログラム１２０は、割込プログラム１２０により、スレッドキュー２００の先頭のスレッド（退避させられたスレッドではない）を実行対象スレッドに設定して当該スレッドを実行する（ステップＳ２１７）。そして、ステップＳ２１１に戻る。
【００３１】
一方、スレッドキュー２００のステータスが空集合である場合（ステップＳ２１６：キュー＝Φ）、割込プログラム１２０は、割込プログラム１２０により、スレーブＣＰＵ１０２を低電力モードに設定して（ステップＳ２１８）、ステップＳ２１０のスレッド起動待ち受けに移行する。
【００３２】
また、ステップＳ２１３において、イベント種別が、排他解除（終了）または同期終了である場合（ステップＳ２１３：排他解除・同期終了）、割込プログラム１２０は、割込プログラム１２０により、退避スレッドを復元する（ステップＳ２１９）。具体的には、退避スレッドについては、スレーブＣＰＵ１０２を開放してもメモリ１０３のコンテキスト領域は開放していないため、退避スレッドが用いていたメモリ領域は保護されている。
【００３３】
単純に、スレーブＣＰＵ１０２のレジスタ（メモリ１０３でもよい）に保存していた退避スレッドのプログラムカウンタを復元するのみで、退避スレッドを再開（復元）することができる。そして、ステップＳ２１１に戻る。このように、以上の操作により、従来では排他または同期待ちのため休止していたスレーブＣＰＵ１０２をより効率的に運用することが可能となる。
【００３４】
（割込制御の具体例）
つぎに、図３〜図６を用いて割込制御の具体例を説明する。
【００３５】
図３は、割込制御の具体例１を示すシーケンス図である。図３では、マスタＣＰＵ１０１においてアプリケーションＡ，ＸがＯＳ１１０上でタイムスライス動作しており（実際には、ＯＳ１１０、Ａ、Ｘがタイムスライス動作）、スレーブＣＰＵ１０２にはスレッドＢが実行されているものとする。また、ＯＳ１１０のスレッドキュー２００には実行待ちスレッドとしてスレッドＹが待機しているものとする。
【００３６】
アプリケーションＡにおいて排他開始イベントが検出されると、アプリケーションＡからスレッドＢに対し割込信号（排他開始）を通知する。スレーブＣＰＵ１０２では、排他開始イベントの通知を受け付けると、スレッドＢを退避させることでスレーブＣＰＵ１０２が開放される。スレッドキュー２００にはスレッドＹがあるため、スレーブＣＰＵ１０２にはスレッドＹが割り当てられる。これにより、スレーブＣＰＵ１０２では、スレッドＹが実行される。このあと、スレッドＹが終了すると、スレッドキュー２００は空であるため低電力モードに移行する。
【００３７】
このあと、アプリケーションＡにおいて、排他終了イベントが検出されると、アプリケーションＡからスレーブＣＰＵ１０２に対し割込信号（排他終了）を通知する。スレーブＣＰＵ１０２では、排他終了イベントの通知を受け付けると、スレッドＢをスレーブＣＰＵ１０２に復元する。これにより、スレッドＢを退避させた位置から再実行することができる。
【００３８】
また、同期についても同様に、アプリケーションＡにおいて同期開始イベントが検出されると、アプリケーションＡからスレッドＢに対しコヒーレント処理およびスレーブＣＰＵ１０２への通知をおこなう。このとき、スレーブＣＰＵ１０２では一時的にスレッドＢが退避させられるが、すぐに復元する。そして、同期開始のタイミングになると、アプリケーションＡおよびスレッドＢが同期して実行される。
【００３９】
図４は、割込制御の具体例２を示すシーケンス図である。図４では、マスタＣＰＵ１０１においてアプリケーションＡ，ＸがＯＳ１１０上でタイムスライス動作しており、スレーブＣＰＵ１０２にはスレッドＢが実行されているものとする。そして、スレッドＢがその親となるマスタプロセスではないアプリケーションＸに排他をかける例である。
【００４０】
スレッドＢがアプリケーションＸに対する排他開始イベントを検出すると、ＯＳ１１０に通知する。ＯＳ１１０では、アプリケーションＸの停止イベントを検出することとなり、それ以降は、ＯＳ１１０とアプリケーションＡとでタイムスライス動作することとなる。このあと、スレッドＢがアプリケ−ションＸに対する排他終了イベントを検出すると、ＯＳ１１０に通知する。マスタＣＰＵ１０１では、その後、アプリケーションＸが復元され、ＯＳ１１０、アプリケーションＡ，Ｘがタイムスライス動作することとなる。このように、スレーブＣＰＵ１０２で排他イベントが検出される場合でも、マルチコアプロセッサシステム１００は問題なく動作することとなる。
【００４１】
図５は、割込制御の具体例３を示すシーケンス図である。図５では、マスタＣＰＵ１０１においてアプリケーションＡ，ＸがＯＳ１１０上でタイムスライス動作しており、スレーブＣＰＵ１０２にはスレッドＢが実行されているものとする。そして、スレッドＢがその親となるマスタプロセスのアプリケーションＡに排他をかける例である。
【００４２】
スレッドＢがアプリケーションＡに対する排他開始イベントを検出すると、ＯＳ１１０に通知する。ＯＳ１１０では、アプリケーションＡの停止イベントを検出することとなり、それ以降は、ＯＳ１１０とアプリケーションＸとでタイムスライス動作することとなる。このあと、スレッドＢがアプリケ−ションＡに対する排他終了イベントを検出すると、ＯＳ１１０に通知する。マスタＣＰＵ１０１では、その後、アプリケーションＡが復元され、ＯＳ１１０、アプリケーションＡ，Ｘがタイムスライス動作することとなる。このように、スレーブＣＰＵ１０２で排他イベントが検出される場合でも、マルチコアプロセッサシステム１００は問題なく動作することとなる。
【００４３】
図６は、割込制御の具体例４を示すシーケンス図である。図６は、図５において、ＯＳ１１０のスレッドキュー２００にスレッドＹが設定されている例である。スレッドＢがアプリケーションＡに対する排他開始イベントを検出すると、ＯＳ１１０に通知する。ＯＳ１１０では、アプリケーションＡの停止イベントを検出することとなり、アプリケーションＡが停止させられる。
【００４４】
図６では、このあと、ＯＳ１１０とアプリケーションＸのタイムスライス動作となるが、アプリケーションＸにおいてスレッドＹを起動させたい場合、スレーブＣＰＵ１０２ではスレッドＢが実行中であるため、スレッドＹを実行できない。これにより、アプリケーションＸの実行も中断することとなり、マスタＣＰＵ１０１ではＯＳ１１０のみが実行されることとなる。
【００４５】
このあと、排他終了イベントがスレーブＣＰＵ１０２で検出されると、スレッドＢからＯＳ１１０に通知される。これにより、スレッドＢが終了するとともに、マスタＣＰＵ１０１では、ＯＳ１１０、アプリケーションＸ，Ａがタイムスライス動作することとなる。
【００４６】
このように、本実施の形態にかかるマルチコアプロセッサシステム１００では、マスタＣＰＵ１０１とスレーブＣＰＵ１０２のうちどのＣＰＵで排他や同期のイベントが発生しても、効率的な運用を図ることができる。
【００４７】
以上説明したように、本実施の形態にかかるマルチコアプロセッサシステム１００、割込プログラム１２０、および割込方法によれば、ＯＳ１１０をマスタＣＰＵ１０１でのみ走行させ、スレーブＣＰＵ１０２には割込プログラム１２０を実行させているにすぎないため、低負荷での運用を図ることができる。
【００４８】
また、マスタＣＰＵ１０１からスレーブＣＰＵ１０２のスレッドに対し排他または同期をかけることで、実行中のスレッドを退避させるとともに、退避後の空き状態では実行待ちスレッドを割り当てて実行させる。これにより、スレーブＣＰＵ１０２では、休止状態の期間が大幅に短縮され効率的な運用を図ることができる。また、実行待ちスレッドがない場合には、低電力モードに移行するため、低消費電力化を図ることができる。
【符号の説明】
【００４９】
１００  マルチコアプロセッサシステム
１０１  マスタＣＰＵ
１０２  スレーブＣＰＵ
１０３  メモリ
１０４  バス
１２０  割込プログラム
Ａ，Ｘ  アプリケーション
Ｂ，Ｙ  スレッド
【図１】
0005867630.tif 000002
【図２】
0005867630.tif 000003
【図３】
0005867630.tif 000004
【図４】
0005867630.tif 000005
【図５】
0005867630.tif 000006
【図６】
0005867630.tif 000007