(57)【要約】  複数のＣＰＵ（２１）の中の一のＣＰＵ（２１）が、複数のＣＰＵ（２１）ごとに、次のことを行う。一のＣＰＵ（２１）は、複数のＣＰＵ（２１）のそれぞれに割り当て可能な投機処理数の最大値から対応するＣＰＵ（２１）に割り当てられている処理数を引き算する。一のＣＰＵ（２１）は、複数のＣＰＵ（２１）の引算結果を加算して最大投機処理数を求める。一のＣＰＵ（２１）は、最大投機処理数以下の投機処理を複数のＣＰＵ（２１）に割り当てる。投機処理は、信頼性のない処理であり、バックグラウンドで処理されていても、実際にはその処理結果が必要とされずに破棄されることがある。
2012095984.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵの中の一のＣＰＵが、
前記複数のＣＰＵごとに、前記複数のＣＰＵのそれぞれに割り当て可能な投機処理数の最大値から対応するＣＰＵに割り当てられている処理数を引き算し、
前記複数のＣＰＵの引算結果を加算して最大投機処理数を求め、
前記最大投機処理数以下の投機処理を前記複数のＣＰＵに割り当てること
を特徴とするスケジューリング方法。
【請求項２】
投機処理が実行される確率に基づいて、前記最大投機処理数以下の投機処理を選択すること
を特徴とする請求項１に記載のスケジューリング方法。
【請求項３】
前記割り当て可能な投機処理数の最大値は、
投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて設定されること
を特徴とする請求項１に記載のスケジューリング方法。
【請求項４】
前記割り当て可能な投機処理数の最大値は、
投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて設定されること
を特徴とする請求項２に記載のスケジューリング方法。
【請求項５】
前記最大投機処理数以下の投機処理の一の投機処理が実際に実行されるときは、他の投機処理は削除されること
を特徴とする請求項１乃至請求項４の何れか一に記載のスケジューリング方法。
【請求項６】
前記最大投機処理数以下の投機処理の一の投機処理が外部から指定される処理と一致するとき、前記投機処理をバックグラウンドからフォアグラウンドに移行すること
を特徴とする請求項１乃至請求項４の何れか一に記載のスケジューリング方法。
【請求項７】
前記最大投機処理数以下の投機処理の一の投機処理が外部から指定される処理と一致するとき、前記投機処理をバックグラウンドからフォアグラウンドに移行すること
を特徴とする請求項５に記載のスケジューリング方法。
【請求項８】
複数のＣＰＵと、
前記複数のＣＰＵに処理を割り当てるスケジューラと、
を含み、
前記スケジューラによって前記複数のＣＰＵに割り当てられる投機処理数が最大投機処理数を超えないこと
を特徴とするスケジューリングシステム。
【請求項９】
前記最大投機処理数は、
前記複数のＣＰＵのそれぞれに割り当て可能な投機処理数の最大値から前記複数のＣＰＵのそれぞれに割り当てられている処理数を引き算し、引き算された結果を前記複数のＣＰＵの数分加算することで得られること
を特徴とする請求項８に記載のスケジューリングシステム。
【請求項１０】
前記スケジューラは、前記投機処理が実際に実行される確率に基づいて前記最大投機処理数以下の投機処理を選択し、前記複数のＣＰＵに選択された投機処理を割り当てること
を特徴とする請求項８に記載のスケジューリングシステム。
【請求項１１】
前記スケジューラは、前記投機処理が実際に実行される確率に基づいて前記最大投機処理数以下の投機処理を選択し、前記複数のＣＰＵに選択された投機処理を割り当てること
を特徴とする請求項９に記載のスケジューリングシステム。
【請求項１２】
前記選択された投機処理はバックグラウンドで実行され、前記選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されること
を特徴とする請求項８に記載のスケジューリングシステム。
【請求項１３】
前記選択された投機処理はバックグラウンドで実行され、前記選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されること
を特徴とする請求項９に記載のスケジューリングシステム。
【請求項１４】
前記選択された投機処理はバックグラウンドで実行され、前記選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されること
を特徴とする請求項１０に記載のスケジューリングシステム。
【請求項１５】
前記選択された投機処理はバックグラウンドで実行され、前記選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されること
を特徴とする請求項１１に記載のスケジューリングシステム。
【請求項１６】
前記実際に実行される投機処理以外の投機処理は削除されること
を特徴とする請求項１２乃至請求項１５の何れか一に記載のスケジューリングシステム。
【請求項１７】
投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて前記割り当て可能な投機処理数の最大値が設定されること
を特徴とする請求項９乃至請求項１５の何れか一に記載のスケジューリングシステム。
【請求項１８】
投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて前記割り当て可能な投機処理数の最大値が設定されること
を特徴とする請求項１６に記載のスケジューリングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、スケジューリング方法及びスケジューリングシステムに関する。
【背景技術】
【０００２】
従来、計算機システムにおいて、将来実行されるであろうと予測される処理を予めバックグラウンドで実行しておく投機処理の技術がある。例えば、ウェブページごとのリンク先一覧を、過去の履歴を基にした選択頻度とともに保持し、過去の選択頻度が高いＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）のデータを先読みしてキャッシュ領域に読み込むことによって、ウェブ（Ｗｅｂ）ページデータの高速表示を可能とする技術がある。一方、バッテリで動作するマルチタスク計算装置において、バッテリ電力を維持する技術がある。例えば、信頼性のないアプリケーションがバックグラウンドに存在する場合、この信頼性のないアプリケーションの実行を抑止する方法がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−２４９８２号公報
【特許文献２】特表２００７−５２０７７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
投機処理の実行量を増やすほど、投機処理の結果が実際に使用される確率、すなわち投機処理の成功率が高くなる。しかし、投機処理の実行量が増えると、メモリ領域や電力などのリソースが多く消費される。そのため、携帯電話機などの、リソースが少ない組み込み機器では、投機処理により実行されるスレッドが切り替わる際のオーバーヘッドが増えてしまい、電力効率が下がり、消費電力の増大を招くという問題点がある。一方、投機処理の実行量を減らすと、投機処理の成功率が下がってしまう。【０００５】
消費電力の増大を抑制することができるスケジューリング方法及びスケジューリングシステムを提供することを目的とする。投機処理の成功率が下がるのを抑制することができるスケジューリング方法及びスケジューリングシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
スケジューリング方法及びスケジューリングシステムは、複数のＣＰＵの中の一のＣＰＵが、複数のＣＰＵごとに、次のことを行うことを要件とする。一のＣＰＵは、複数のＣＰＵのそれぞれに割り当て可能な投機処理数の最大値から対応するＣＰＵに割り当てられている処理数を引き算する。一のＣＰＵは、複数のＣＰＵの引算結果を加算して最大投機処理数を求める。一のＣＰＵは、最大投機処理数以下の投機処理を複数のＣＰＵに割り当てる。投機処理はバックグラウンドで処理されていても、実際にはその処理結果が必要とされずに破棄されることがある。つまり、投機処理は、信頼性のない処理である。
【発明の効果】
【０００７】
上記スケジューリング方法及びスケジューリングシステムによれば、消費電力の増大を抑制することができる。投機処理の成功率が下がるのを抑制することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例１にかかるスケジューリング方法を示すフローチャートである。
【図２】図２は、実施例１にかかるスケジューリング方法を説明する模式図である。
【図３】図３は、実施例２にかかる移動体通信システムの一例を示すブロック図である。
【図４】図４は、実施例２にかかる端末を示すブロック図である。
【図５】図５は、実施例２における選択頻度テーブルの一例を示す図表である。
【図６】図６は、実施例２における投機の実行量と投機の成功率との関係の一例を示す特性図である。
【図７】図７は、実施例２におけるスレッドスイッチ率を説明する模式図である。
【図８】図８は、実施例２における投機スレッド上限数とスレッドスイッチ率との関係の一例を示す特性図である。
【図９】図９は、実施例２における係数テーブルの一例を示す図表である。
【図１０】図１０は、実施例２においてバッテリ残量が多い場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。
【図１１】図１１は、実施例２においてバッテリ残量が少ない場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。
【図１２】図１２は、実施例２にかかるスケジューリング方法におけるスケジューラの動作を示すフローチャートである。
【図１３】図１３は、実施例２にかかるスケジューリング方法における投機ライブラリの動作を示すフローチャートである。
【図１４】図１４は、実施例２にかかるスケジューリング方法における計算ライブラリの動作を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下に、この発明にかかるスケジューリング方法及びスケジューリングシステムの実施例を図面に基づいて詳細に説明する。実施の形態にかかるスケジューリング方法及びスケジューリングシステムは、複数のＣＰＵの中の一のＣＰＵが、複数のＣＰＵに割り当て可能な最大投機処理数を求め、最大投機処理数以下の投機処理を複数のＣＰＵに割り当てるものである。なお、この実施例によりこの発明が限定されるものではない。
【００１０】
（実施例１）
図１は、実施例１にかかるスケジューリング方法を示すフローチャートである。図１に示すように、複数のＣＰＵを備えた装置において、スケジューリングが開始されると、複数のＣＰＵの中の一のＣＰＵが、複数のＣＰＵのそれぞれに割り当て可能な投機処理数の最大値から対応するＣＰＵに割り当てられている処理数を引き算する。この演算によって、ＣＰＵごとに割り当て可能な投機処理数が求まる（ステップＳ１）。
【００１１】
次いで、一のＣＰＵは、複数のＣＰＵの引算結果を加算して最大投機処理数を求める（ステップＳ２）。次いで、一のＣＰＵは、最大投機処理数以下の投機処理を複数のＣＰＵに割り当てる（ステップＳ３）。それによって、各ＣＰＵに、複数のＣＰＵに割り当てられる投機処理数の合計値が最大投機処理数以下となるように、投機処理が割り当てられる。
【００１２】
図２は、実施例１にかかるスケジューリング方法を説明する模式図である。図２には、ＣＰＵの数が４個である例が示されている。図２に示すように、投機処理は投機スレッド１という単位で実行される。また、図２では、投機処理以外の処理は全て他スレッド２とされている。各ＣＰＵ（＃０、＃１、＃２、＃３）３，４，５，６は、投機スレッド上限数まで、投機スレッドを割り当てることができる。つまり、投機スレッド上限数は、ＣＰＵのそれぞれに割り当て可能な投機処理数の最大値である。図２に示す例では、特に限定しないが、投機スレッド上限数は３である。
【００１３】
ただし、各ＣＰＵ（＃０、＃１、＃２、＃３）３，４，５，６には、投機スレッド１以外の他スレッド２が割り当てられている。従って、各ＣＰＵ（＃０、＃１、＃２、＃３）３，４，５，６に実際に割り当て可能な投機スレッド１の数は、投機スレッド上限数から各ＣＰＵ（＃０、＃１、＃２、＃３）３，４，５，６に実際に割り当てられている他スレッド２の数を引いた数となる。
【００１４】
図２に示す例では、特に限定しないが、ＣＰＵ＃０＿３及びＣＰＵ＃３＿６には２個の他スレッド２が割り当てられている。従って、ＣＰＵ＃０＿３及びＣＰＵ＃３＿６に割り当て可能な投機スレッド１の数は、投機スレッド上限数の３から他スレッドの数２を引いた１となる。同様に、ＣＰＵ＃１＿４では、他スレッドの数が１であるので、割り当て可能な投機スレッド１の数は、３から１を引いた２となる。
【００１５】
ＣＰＵ＃２＿５では、４個の他スレッド２が割り当てられており、引き算の結果が負の値となるので、ＣＰＵ＃２＿５には投機スレッドを割り当てることができない。従って、割り当て可能な投機スレッド１の数は０である。このように、投機スレッド上限数が求まれば、ＣＰＵごとに割り当て可能な投機スレッドの数が求められる。投機スレッド上限数及び各ＣＰＵ（＃０、＃１、＃２、＃３）３，４，５，６に割り当てられている他スレッド２の数は、スケジューリングを行う一のＣＰＵ、例えばＣＰＵ＃０＿３のスケジューラが把握している。
【００１６】
最大投機処理数は、各ＣＰＵ（＃０、＃１、＃２、＃３）３，４，５，６に割り当て可能な投機スレッド１の数を合計した値であるので、例えば図２に示す例では４個となる。これを式で表すと、最大投機処理数ｎは次の（１）式で表される。ただし、ＮはＣＰＵあたりの投機スレッド上限数を表し、Ａｘは、ＣＰＵ＃ｘに存在する他スレッドの数を表す。また、［Ｎ−Ａｘ］が負の値である場合は０とする。
【００１７】
【数１】
2012095984.tif 000003
【００１８】
スケジューリングを行う例えばＣＰＵ＃０＿３のスケジューラは、（１）式で表されるｎ個以下の投機スレッド１を複数のＣＰＵ（＃０、＃１、＃２、＃３）３，４，５，６に分散して割り当てる。割り当てる投機スレッド１の数は、ｎよりも少なくてもよいのは勿論である。なお、ＣＰＵの数は２個であってもよいし、３個であってもよいし、５個以上であってもよい。
【００１９】
実施例１によれば、各ＣＰＵで、投機スレッドと他スレッドとを合わせて投機スレッド上限数までのスレッドが処理されるので、スレッドが切り替わる際のオーバーヘッドの増大を抑制することができる。従って、電力効率の低下を抑制し、消費電力の増大を抑制することができる。また、複数のＣＰＵで、合わせて最大投機処理数以下の数の投機処理が実行されるので、投機処理の成功率が下がるのを抑制することができる。
【００２０】
（実施例２）
実施例２は、実施例１のスケジューリング方法を、例えば移動体通信システムの例えば携帯電話機などの携帯情報端末におけるスケジューリング方法に適用したものである。携帯情報端末はバッテリにより駆動されてもよい。
【００２１】
・移動体通信システムの説明
図３は、実施例２にかかる移動体通信システムの一例を示すブロック図である。図３に示すように、携帯情報端末などの端末１１は無線通信により基地局１２に接続する。基地局１２はキャリアネットワーク１３に接続されている。キャリアネットワーク１３はインターネットなどのネットワーク１４に接続されている。ネットワーク１４にはサービスサーバ１５が接続されている。端末１１は、サービスサーバ１５からネットワーク１４、キャリアネットワーク１３及び基地局１２を介してサービスの提供を受ける。
【００２２】
サービスサーバ１５の一例として、例えばウェブサーバやファイルサーバが挙げられる。ウェブサーバは、端末１１からの要求に基づいて端末１１にウェブページの文書や画像を送信したり、ソフトウェアを実行して結果を端末１１に送信したりする。ファイルサーバは、ネットワーク上の他の装置から、自身が管理する記憶装置へのアクセスを可能にする。
【００２３】
・端末の説明
図４は、実施例２にかかる端末を示すブロック図である。図４に示すように、端末１１は、複数のＣＰＵ２１、メモリ２２及びパワーマネージメントユニット（ＰＭＵ：Ｐｏｗｅｒ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）２３がバス２４に接続された構成を有する。スケジューラ２５は、複数のＣＰＵ２１のうちのいずれか一つのＣＰＵ２１で動作するオペレーティングシステム（ＯＳ）によって実現される。
【００２４】
スケジューラ２５は、メモリ２２から選択頻度テーブル３６、オーバーヘッド情報３７及び係数テーブル３８を取得する。スケジューラ２５は、パワーマネージメントユニット２３からバッテリ残量３９の情報を取得する。スケジューラ２５は、選択頻度テーブル３６を取得すると、投機ライブラリ３３を呼び出す。スケジューラ２５は、計算ライブラリ３１が算出した投機スレッド上限数及びＣＰＵ負荷情報３４に基づいて投機ライブラリ３３を動作させる。
【００２５】
計算ライブラリ３１は、選択頻度テーブル３６、オーバーヘッド情報３７、係数テーブル３８、バッテリ残量３９及び評価式３２に基づいて投機スレッド上限数（図２参照）を計算する。評価式３２は、例えば次の（２）式で表される式であってもよい。Ｅ（Ｎ）は変数Ｎのときの評価値である。Ｐ’（Ｎ）は変数Ｎのときの投機の成功率である。投機の成功率は選択頻度テーブル３６から求められる。Ｓ（Ｎ）は変数Ｎのときのスレッドスイッチ率である。スレッドスイッチ率はオーバーヘッド情報３７から求められる。αとβは、バッテリ残量３９と係数テーブル３８とから求められる係数である。評価値Ｅ（Ｎ）が例えば最大となるような変数Ｎの値が投機スレッド上限数であってもよい。投機の成功率、スレッドスイッチ率及び係数テーブル３８については後述する。
【００２６】
【数２】
2012095984.tif 000004
【００２７】
スケジューラ２５は、ＣＰＵ負荷情報３４により、各ＣＰＵ２１に割り当てられている他スレッドの数（上記（１）式のＡｘ）を把握することができる。従って、投機ライブラリ３３は、計算ライブラリ３１が算出した投機スレッド上限数とＣＰＵ負荷情報３４とに基づいて、ＣＰＵ２１ごとに、割り当て可能な投機スレッドの数（上記（１）式の［Ｎ−Ａｘ］）を把握することができる。
【００２８】
投機ライブラリ３３は、各ＣＰＵ２１の割り当て可能な投機スレッドの数を合計することにより、最大投機処理数（上記（１）式のｎ）を求めることができる。投機ライブラリ３３は、最大投機処理数以下の投機実行量、例えばｎ個分の投機スレッドを生成する。投機ライブラリ３３は、投機スレッドとして、例えば選択頻度テーブル３６に登録されている選択肢を選択頻度の降順に、投機スレッド上限数まで生成してもよい。投機スレッドはバックグラウンドで実行される。
【００２９】
メモリ２２には、統計情報データベース３５、オーバーヘッド情報３７及び係数テーブル３８が格納されている。統計情報データベース３５には、複数の選択頻度テーブル３６が格納されている。選択頻度テーブル３６には、選択肢とその選択肢の選択頻度との関係が登録されている。オーバーヘッド情報３７により、スレッド数と、ユーザモードの単位時間に占めるスレッドの切り替え時間の割合（スレッドスイッチ率）と、の関係が得られる。係数テーブル３８には、バッテリ残量３９と係数α及びβとの関係が登録されている。
【００３０】
選択頻度テーブル３６は、過去の操作履歴から作成されてもよいし、ユーザが操作するたびにその操作内容を反映して更新されてもよい。また、端末１１が外部から選択頻度テーブル３６を取得するようにしてもよい。例えば端末１１がサービスを要求すると、サービスサーバが、端末１１から要求されたサービスに対応する選択頻度テーブル３６を端末１１へ送信するようにしてもよい。このように、選択頻度テーブル３６をどのようにして作成するか、あるいはどこから取得するか、ということについては限定しない。オーバーヘッド情報３７はオペレーティングシステムやＣＰＵに固有な値であるので、予めシステムの製作者が用意してもよい。係数テーブル３８は予めシステムの製作者が用意してもよい。
【００３１】
パワーマネージメントユニット２３は、バッテリの残量を監視し、バッテリ残量３９の情報を有する。パワーマネージメントユニット２３は、端末１１の各部に供給する電源を制御する。
【００３２】
・投機の成功率の説明
図５は、実施例２における選択頻度テーブルの一例を示す図表である。図５に示すように、選択頻度テーブル３６には、選択肢とその選択肢の選択頻度との関係が例えば降順に登録されている。
【００３３】
図６は、実施例２における投機の実行量と投機の成功率との関係の一例を示す特性図である。図６には、選択頻度テーブル３６において降順にｎ番目までの選択肢の選択頻度を累積した特性曲線が示されている。図６に示す特性曲線は次の（３）式で表される。ただし、Ｐ（ｎ）は投機実行量ｎ個のときの投機の成功率である。Ｐｎは選択頻度テーブル３６において降順でｎ番目の選択肢Ｃｎの選択頻度である。投機実行量ｎの値は、例えば上記（１）式から求まる。図６及び（３）式に示すように、投機実行量ｎが増えるほど、投機の成功率Ｐ（ｎ）は１００％に近づく。従って、投機の成功率の観点からは、スレッド数が多い方が好ましい。ただし、選択頻度テーブル３６に登録されている選択肢を選択頻度の高い順に実行していくと、投機の成功率は鈍化していく。上記（２）式においてＰ’（Ｎ）は、投機実行量ｎ（このときの投機の成功率はＰ（ｎ））を投機スレッド上限数Ｎとしたときの投機の成功率である。
【００３４】
【数３】
2012095984.tif 000005
【００３５】
・スレッドスイッチ率の説明
図７は、実施例２におけるスレッドスイッチ率を説明する模式図である。図７に示すように、ユーザモードの単位時間をＴ（例えば１ｎ秒）とし、スレッド４１の切り替え（スレッドスイッチ４２）にかかる時間をｔ（例えば１０μ秒）とすると、投機スレッド上限数Ｎに対するスレッドスイッチ率Ｓ（Ｎ）は次の（４）式で表される。（４）式をグラフ化した特性図を図８に示す。
【００３６】
【数４】
2012095984.tif 000006
【００３７】
図８は、実施例２における投機スレッド上限数とスレッドスイッチ率との関係の一例を示す特性図である。図８に示すように、スレッド数が増えるとスレッドスイッチ率が大きくなる。スレッドスイッチ率が大きくなると、オーバーヘッドが増えてしまう。オーバーヘッドが増えると、電力効率が低下してしまう。従って、電力効率の観点からは、スレッド数を多くし過ぎないのが好ましい。
【００３８】
・係数テーブルの説明
図９は、実施例２における係数テーブルの一例を示す図表である。図９に示すように、係数テーブル３８には、バッテリ残量に応じて上記（２）式の評価式における係数α及びβが登録されている。例えば図示例では、バッテリ残量が５０％を超える場合には、αが２であり、βが１である。バッテリ残量が３０％を超え、５０％以下である場合には、αが１であり、βが２である。バッテリ残量が３０％以下である場合には、αが０であり、βが２である。
【００３９】
上記評価式より明らかであるように、評価値Ｅ（ｎ）において、αの値が大きいほど投機の成功率の重みが大きくなり、βの値が大きいほどスレッドスイッチ率の重みが大きくなる。従って、バッテリ残量が十分である場合には、投機の成功率が高くなるように投機スレッドの数が増える。一方、バッテリ残量が減ってくると、スレッドスイッチ率が下がり、電力効率が優先されるように投機スレッドの数が減る。バッテリ残量が殆どない場合には投機処理が行われない。なお、α及びβの値、並びにα及びβの値が変わるバッテリ残量の境界値は、図９に示す値に限定されないのは勿論である。
【００４０】
・投機スレッド上限数の求め方
図１０は、実施例２においてバッテリ残量が多い場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。図１０に示す例は、例えば図９に示す係数テーブル３８においてバッテリ残量が５０％を超える場合の例である。αが２であり、βは１であるので、上記（２）式の評価式は次の（５）式で表される。また、図１１は、実施例２においてバッテリ残量が少ない場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。図１１に示す例は、例えば図９に示す係数テーブル３８においてバッテリ残量が３０％を超え、５０％以下である場合の例である。αが１であり、βは２であるので、上記（２）式の評価式は次の（６）式で表される。
【００４１】
【数５】
2012095984.tif 000007
【００４２】
【数６】
2012095984.tif 000008
【００４３】
図１０に示す特性曲線では、例えばＮが４０であるときに評価値Ｅ（Ｎ）が最大となる。図１０に示す例では、投機スレッド上限数Ｎは例えば４０であってもよい。一方、図１１に示す特性曲線では、例えばＮが２８であるときに評価値Ｅ（Ｎ）が最大となる。図１１に示す例では、投機スレッド上限数Ｎは例えば２８であってもよい。投機スレッド上限数Ｎが大きくなると、各ＣＰＵに割り当て可能な投機スレッドの数が増えるので、複数のＣＰＵで処理される投機スレッドの数が増える。従って、バッテリ残量が多いときには複数のＣＰＵで処理される投機スレッド数が増えるので、投機の成功率が高くなる。一方、バッテリ残量が少ないときには複数のＣＰＵで処理される投機スレッド数が減るので、電力効率が良くなる。
【００４４】
・スケジューリング方法の説明
一例として、端末が携帯電話機であり、携帯電話機においてユーザがメニューに対して種々の選択などを行うメニュー操作を例にして、実施例２にかかるスケジューリング方法を説明する。以下の説明では、携帯電話機が２個のＣＰＵコア（ＣＰＵ＃０、ＣＰＵ＃１）を有しているとする。
【００４５】
［スケジューラの動作］
図１２は、実施例２にかかるスケジューリング方法におけるスケジューラの動作を示すフローチャートである。図１２に示すように、ユーザが携帯電話機を操作して例えばメニュートップ画面を開くと、スケジューラ２５は統計情報データベース３５にアクセスし、例えばメニュートップ画面に対応する選択頻度テーブル３６の取得を試みる（ステップＳ１１）。メニュートップ画面に対応する選択頻度テーブル３６の選択肢は、例えばメニュートップ画面から移行できるメニューであってもよい。選択頻度テーブル３６の選択頻度は、各選択肢が過去に選択された確率であってもよい。
【００４６】
スケジューラ２５は、該当する選択頻度テーブル３６の取得に成功した場合（ステップＳ１２：Ｙｅｓ）、投機ライブラリ３３を呼び出し（ステップＳ１３）、スケジューリングを終了する。一方、スケジューラ２５は、該当する選択頻度テーブル３６の取得に成功しなかった場合（ステップＳ１２：Ｎｏ）、投機ライブラリ３３の呼び出しを行わずに、スケジューリングを終了する。なお、スケジューラ２５は、メニュートップ画面に限らず、メニュートップ画面で選択されたメニューによって表示されるメニュー画面などについても、同様に動作する。
【００４７】
［投機ライブラリの動作］
図１３は、実施例２にかかるスケジューリング方法における投機ライブラリの動作を示すフローチャートである。図１３に示すように、投機ライブラリ３３は、スケジューラ２５から呼び出されると、計算ライブラリ３１を呼び出す（ステップＳ２１）。それによって、投機ライブラリ３３は、計算ライブラリ３１から投機スレッド上限数Ｎを取得する。次いで、投機ライブラリ３３は、投機スレッド上限数Ｎと、ＣＰＵ＃０に存在する実行待ちの他スレッドの数Ａ０と、ＣＰＵ＃１に存在する実行待ちの他スレッドの数Ａ１とに基づいて、投機実行量ｎを算出する（ステップＳ２２）。
【００４８】
例えば投機スレッド上限数Ｎが４０であり、ＣＰＵ＃０で実行待ちの他スレッドの数が３７であり、ＣＰＵ＃１で実行待ちの他スレッドの数が３４であるとする。この場合、ＣＰＵ＃０が行うことができる投機実行量は３（＝４０−３７）であり、ＣＰＵ＃１が行うことができる投機実行量は６（＝４０−３４）である。従って、ＣＰＵ＃０及びＣＰＵ＃１を合わせた投機実行量ｎは９（＝３＋６）である。
【００４９】
次いで、投機ライブラリ３３は、ステップＳ１１でスケジューラ２５が取得した選択頻度テーブル３６から、ステップＳ２２で算出した投機実行量ｎ個分の選択肢を取得する（ステップＳ２３）。例えば投機実行量ｎが９である場合、投機ライブラリ３３は、メニュートップ画面から選択することができるメニューのうち、選択頻度が高いものから順に９個のメニューを取得してもよい。
【００５０】
次いで、投機ライブラリ３３は、取得した選択肢を投機実行する投機スレッドを生成する。投機スレッドは、ユーザがメニューを選択したときに生成されるスレッドと同様に生成される。例えば投機ライブラリ３３が選択頻度テーブル３６から９個のメニューを取得した場合には、投機ライブラリ３３は９個の投機スレッドを生成してもよい。そして、投機ライブラリ３３は、各ＣＰＵに、生成した投機スレッドを割り当てる（ステップＳ２４）。
【００５１】
例えばＣＰＵ＃０が行うことができる投機実行量が３であり、ＣＰＵ＃１が行うことができる投機実行量が６であり、投機ライブラリ３３が９個の投機スレッドを生成した場合、投機ライブラリ３３はＣＰＵ＃０に３個の投機スレッドを割り当て、ＣＰＵ＃１に６個の投機スレッドを割り当てる。各ＣＰＵに割り当てられた投機スレッドは、各ＣＰＵにおいてバックグラウンドで実行される。バックグラウンドでの実行内容は、フォアグラウンドでの実行内容と同じである。バックグラウンドでの実行内容は携帯電話機の画面に表示されないので、携帯電話機の画面を見ながらユーザが現在行っている作業、すなわちフォアグラウンドでの実行内容に支障が生じることはない。
【００５２】
次いで、投機ライブラリ３３は、ユーザの操作によって何らかのメニューが選択されると、投機が成功したか否かを判断する（ステップＳ２５）。例えば投機ライブラリ３３は、ユーザ操作により選択されたメニューと、バックグラウンドで実行されている投機スレッドのメニューとが一致しているか否かを判断する。投機が成功した場合（ステップＳ２５：Ｙｅｓ）、投機ライブラリ３３は成功した投機スレッドをフォアグラウンドに移行させる（ステップＳ２６）。
【００５３】
例えば投機に成功した投機スレッドがバックグラウンドでの実行によってバックグラウンドでメニュー画面を描画している場合、投機ライブラリ３３は、バックグラウンドで描画されたメニュー画面を携帯電話機の画面に表示する。そして、投機ライブラリ３３は、その他の全ての投機スレッドを削除し（ステップＳ２７）、図１２のステップＳ１３に戻る。一方、投機が成功しなかった場合、すなわち投機が全て失敗した場合には（ステップＳ２５：Ｎｏ）、投機ライブラリ３３は全ての投機スレッドを削除し（ステップＳ２７）、図１２のステップＳ１３に戻る。
【００５４】
［計算ライブラリの動作］
図１４は、実施例２にかかるスケジューリング方法における計算ライブラリの動作を示すフローチャートである。図１４に示すように、計算ライブラリ３１は、投機ライブラリ３３から呼び出されると、対応する選択頻度テーブル３６、オーバーヘッド情報３７及び係数テーブル３８を取得する（ステップＳ３１）。次いで、計算ライブラリ３１は、例えば「・投機スレッド上限数の求め方」の項において説明したようにして、上述した評価式の値Ｅ（Ｎ）が最大となる投機スレッド上限数Ｎを求める（ステップＳ３２）。そして、図１３のステップＳ２１に戻る。
【００５５】
実施例２によれば、実施例１と同様の効果が得られる。
【符号の説明】
【００５６】
２１  ＣＰＵ
２５  スケジューラ
３６  選択頻度テーブル
３７  オーバーヘッド情報
３９  バッテリ残量
【図１】
2012095984.tif 000009
【図２】
2012095984.tif 000010
【図３】
2012095984.tif 000011
【図４】
2012095984.tif 000012
【図５】
2012095984.tif 000013
【図６】
2012095984.tif 000014
【図７】
2012095984.tif 000015
【図８】
2012095984.tif 000016
【図９】
2012095984.tif 000017
【図１０】
2012095984.tif 000018
【図１１】
2012095984.tif 000019
【図１２】
2012095984.tif 000020
【図１３】
2012095984.tif 000021
【図１４】
2012095984.tif 000022
【手続補正書】
【提出日】平成25年7月31日(2013.7.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のＣＰＵの中の一のＣＰＵが、
前記複数のＣＰＵごとに、前記複数のＣＰＵのそれぞれに割り当て可能な投機処理数の最大値から対応するＣＰＵに割り当てられている処理数を引き算し、
前記複数のＣＰＵの引算結果を加算して最大投機処理数を求め、
前記最大投機処理数以下の投機処理を前記複数のＣＰＵに割り当てること
を特徴とするスケジューリング方法。
【請求項２】
投機処理が実行される確率に基づいて、前記最大投機処理数以下の投機処理を選択すること
を特徴とする請求項１に記載のスケジューリング方法。
【請求項３】
前記割り当て可能な投機処理数の最大値は、
投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて設定されること
を特徴とする請求項１に記載のスケジューリング方法。
【請求項４】
前記割り当て可能な投機処理数の最大値は、
投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて設定されること
を特徴とする請求項２に記載のスケジューリング方法。
【請求項５】
前記最大投機処理数以下の投機処理の一の投機処理が外部から指定される処理と一致するとき、前記投機処理をバックグラウンドからフォアグラウンドに移行すること
を特徴とする請求項１乃至請求項４の何れか一に記載のスケジューリング方法。
【請求項６】
複数のＣＰＵと、
前記複数のＣＰＵに処理を割り当てるスケジューラと、
を含み、
前記スケジューラによって前記複数のＣＰＵに割り当てられる投機処理数が最大投機処理数を超えないこと
を特徴とするスケジューリングシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、スケジューリング方法及びスケジューリングシステムに関する。
【背景技術】
【０００２】
従来、計算機システムにおいて、将来実行されるであろうと予測される処理を予めバックグラウンドで実行しておく投機処理の技術がある。例えば、ウェブページごとのリンク先一覧を、過去の履歴を基にした選択頻度とともに保持し、過去の選択頻度が高いＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）のデータを先読みしてキャッシュ領域に読み込むことによって、ウェブ（Ｗｅｂ）ページデータの高速表示を可能とする技術がある。一方、バッテリで動作するマルチタスク計算装置において、バッテリ電力を維持する技術がある。例えば、信頼性のないアプリケーションがバックグラウンドに存在する場合、この信頼性のないアプリケーションの実行を抑止する方法がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−２４９８２号公報
【特許文献２】特表２００７−５２０７７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
投機処理の実行量を増やすほど、投機処理の結果が実際に使用される確率、すなわち投機処理の成功率が高くなる。しかし、投機処理の実行量が増えると、メモリ領域や電力などのリソースが多く消費される。そのため、携帯電話機などの、リソースが少ない組み込み機器では、投機処理により実行されるスレッドが切り替わる際のオーバーヘッドが増えてしまい、電力効率が下がり、消費電力の増大を招くという問題点がある。一方、投機処理の実行量を減らすと、投機処理の成功率が下がってしまう。
【０００５】
消費電力の増大を抑制することができるスケジューリング方法及びスケジューリングシステムを提供することを目的とする。投機処理の成功率が下がるのを抑制することができるスケジューリング方法及びスケジューリングシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
スケジューリング方法及びスケジューリングシステムは、複数のＣＰＵの中の一のＣＰＵが、複数のＣＰＵごとに、次のことを行うことを要件とする。一のＣＰＵは、複数のＣＰＵのそれぞれに割り当て可能な投機処理数の最大値から対応するＣＰＵに割り当てられている処理数を引き算する。一のＣＰＵは、複数のＣＰＵの引算結果を加算して最大投機処理数を求める。一のＣＰＵは、最大投機処理数以下の投機処理を複数のＣＰＵに割り当てる。投機処理はバックグラウンドで処理されていても、実際にはその処理結果が必要とされずに破棄されることがある。つまり、投機処理は、信頼性のない処理である。
【発明の効果】
【０００７】
上記スケジューリング方法及びスケジューリングシステムによれば、消費電力の増大を抑制することができる。投機処理の成功率が下がるのを抑制することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例１にかかるスケジューリング方法を示すフローチャートである。
【図２】図２は、実施例１にかかるスケジューリング方法を説明する模式図である。
【図３】図３は、実施例２にかかる移動体通信システムの一例を示すブロック図である。
【図４】図４は、実施例２にかかる端末を示すブロック図である。
【図５】図５は、実施例２における選択頻度テーブルの一例を示す図表である。
【図６】図６は、実施例２における投機の実行量と投機の成功率との関係の一例を示す特性図である。
【図７】図７は、実施例２におけるスレッドスイッチ率を説明する模式図である。
【図８】図８は、実施例２における投機スレッド上限数とスレッドスイッチ率との関係の一例を示す特性図である。
【図９】図９は、実施例２における係数テーブルの一例を示す図表である。
【図１０】図１０は、実施例２においてバッテリ残量が多い場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。
【図１１】図１１は、実施例２においてバッテリ残量が少ない場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。
【図１２】図１２は、実施例２にかかるスケジューリング方法におけるスケジューラの動作を示すフローチャートである。
【図１３】図１３は、実施例２にかかるスケジューリング方法における投機ライブラリの動作を示すフローチャートである。
【図１４】図１４は、実施例２にかかるスケジューリング方法における計算ライブラリの動作を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下に、この発明にかかるスケジューリング方法及びスケジューリングシステムの実施例を図面に基づいて詳細に説明する。実施の形態にかかるスケジューリング方法及びスケジューリングシステムは、複数のＣＰＵの中の一のＣＰＵが、複数のＣＰＵに割り当て可能な最大投機処理数を求め、最大投機処理数以下の投機処理を複数のＣＰＵに割り当てるものである。なお、この実施例によりこの発明が限定されるものではない。
【００１０】
（実施例１）
図１は、実施例１にかかるスケジューリング方法を示すフローチャートである。図１に示すように、複数のＣＰＵを備えた装置において、スケジューリングが開始されると、複数のＣＰＵの中の一のＣＰＵが、複数のＣＰＵのそれぞれに割り当て可能な投機処理数の最大値から対応するＣＰＵに割り当てられている処理数を引き算する。この演算によって、ＣＰＵごとに割り当て可能な投機処理数が求まる（ステップＳ１）。
【００１１】
次いで、一のＣＰＵは、複数のＣＰＵの引算結果を加算して最大投機処理数を求める（ステップＳ２）。次いで、一のＣＰＵは、最大投機処理数以下の投機処理を複数のＣＰＵに割り当てる（ステップＳ３）。それによって、各ＣＰＵに、複数のＣＰＵに割り当てられる投機処理数の合計値が最大投機処理数以下となるように、投機処理が割り当てられる。
【００１２】
図２は、実施例１にかかるスケジューリング方法を説明する模式図である。図２には、ＣＰＵの数が４個である例が示されている。図２に示すように、投機処理は投機スレッド１という単位で実行される。また、図２では、投機処理以外の処理は全て他スレッド２とされている。各ＣＰＵ（＃０、＃１、＃２、＃３）３，４，５，６は、投機スレッド上限数まで、投機スレッドを割り当てることができる。つまり、投機スレッド上限数は、ＣＰＵのそれぞれに割り当て可能な投機処理数の最大値である。図２に示す例では、特に限定しないが、投機スレッド上限数は３である。
【００１３】
ただし、各ＣＰＵ（＃０、＃１、＃２、＃３）３，４，５，６には、投機スレッド１以外の他スレッド２が割り当てられている。従って、各ＣＰＵ（＃０、＃１、＃２、＃３）３，４，５，６に実際に割り当て可能な投機スレッド１の数は、投機スレッド上限数から各ＣＰＵ（＃０、＃１、＃２、＃３）３，４，５，６に実際に割り当てられている他スレッド２の数を引いた数となる。
【００１４】
図２に示す例では、特に限定しないが、ＣＰＵ＃０＿３及びＣＰＵ＃３＿６には２個の他スレッド２が割り当てられている。従って、ＣＰＵ＃０＿３及びＣＰＵ＃３＿６に割り当て可能な投機スレッド１の数は、投機スレッド上限数の３から他スレッドの数２を引いた１となる。同様に、ＣＰＵ＃１＿４では、他スレッドの数が１であるので、割り当て可能な投機スレッド１の数は、３から１を引いた２となる。
【００１５】
ＣＰＵ＃２＿５では、４個の他スレッド２が割り当てられており、引き算の結果が負の値となるので、ＣＰＵ＃２＿５には投機スレッドを割り当てることができない。従って、割り当て可能な投機スレッド１の数は０である。このように、投機スレッド上限数が求まれば、ＣＰＵごとに割り当て可能な投機スレッドの数が求められる。投機スレッド上限数及び各ＣＰＵ（＃０、＃１、＃２、＃３）３，４，５，６に割り当てられている他スレッド２の数は、スケジューリングを行う一のＣＰＵ、例えばＣＰＵ＃０＿３のスケジューラが把握している。
【００１６】
最大投機処理数は、各ＣＰＵ（＃０、＃１、＃２、＃３）３，４，５，６に割り当て可能な投機スレッド１の数を合計した値であるので、例えば図２に示す例では４個となる。これを式で表すと、最大投機処理数ｎは次の（１）式で表される。ただし、ＮはＣＰＵあたりの投機スレッド上限数を表し、Ａｘは、ＣＰＵ＃ｘに存在する他スレッドの数を表す。また、［Ｎ−Ａｘ］が負の値である場合は０とする。
【００１７】
【数１】
2012095984.tif 000023
【００１８】
スケジューリングを行う例えばＣＰＵ＃０＿３のスケジューラは、（１）式で表されるｎ個以下の投機スレッド１を複数のＣＰＵ（＃０、＃１、＃２、＃３）３，４，５，６に分散して割り当てる。割り当てる投機スレッド１の数は、ｎよりも少なくてもよいのは勿論である。なお、ＣＰＵの数は２個であってもよいし、３個であってもよいし、５個以上であってもよい。
【００１９】
実施例１によれば、各ＣＰＵで、投機スレッドと他スレッドとを合わせて投機スレッド上限数までのスレッドが処理されるので、スレッドが切り替わる際のオーバーヘッドの増大を抑制することができる。従って、電力効率の低下を抑制し、消費電力の増大を抑制することができる。また、複数のＣＰＵで、合わせて最大投機処理数以下の数の投機処理が実行されるので、投機処理の成功率が下がるのを抑制することができる。
【００２０】
（実施例２）
実施例２は、実施例１のスケジューリング方法を、例えば移動体通信システムの例えば携帯電話機などの携帯情報端末におけるスケジューリング方法に適用したものである。携帯情報端末はバッテリにより駆動されてもよい。
【００２１】
・移動体通信システムの説明
図３は、実施例２にかかる移動体通信システムの一例を示すブロック図である。図３に示すように、携帯情報端末などの端末１１は無線通信により基地局１２に接続する。基地局１２はキャリアネットワーク１３に接続されている。キャリアネットワーク１３はインターネットなどのネットワーク１４に接続されている。ネットワーク１４にはサービスサーバ１５が接続されている。端末１１は、サービスサーバ１５からネットワーク１４、キャリアネットワーク１３及び基地局１２を介してサービスの提供を受ける。
【００２２】
サービスサーバ１５の一例として、例えばウェブサーバやファイルサーバが挙げられる。ウェブサーバは、端末１１からの要求に基づいて端末１１にウェブページの文書や画像を送信したり、ソフトウェアを実行して結果を端末１１に送信したりする。ファイルサーバは、ネットワーク上の他の装置から、自身が管理する記憶装置へのアクセスを可能にする。
【００２３】
・端末の説明
図４は、実施例２にかかる端末を示すブロック図である。図４に示すように、端末１１は、複数のＣＰＵ２１、メモリ２２及びパワーマネージメントユニット（ＰＭＵ：Ｐｏｗｅｒ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）２３がバス２４に接続された構成を有する。スケジューラ２５は、複数のＣＰＵ２１のうちのいずれか一つのＣＰＵ２１で動作するオペレーティングシステム（ＯＳ）によって実現される。
【００２４】
スケジューラ２５は、メモリ２２から選択頻度テーブル３６、オーバーヘッド情報３７及び係数テーブル３８を取得する。スケジューラ２５は、パワーマネージメントユニット２３からバッテリ残量３９の情報を取得する。スケジューラ２５は、選択頻度テーブル３６を取得すると、投機ライブラリ３３を呼び出す。スケジューラ２５は、計算ライブラリ３１が算出した投機スレッド上限数及びＣＰＵ負荷情報３４に基づいて投機ライブラリ３３を動作させる。
【００２５】
計算ライブラリ３１は、選択頻度テーブル３６、オーバーヘッド情報３７、係数テーブル３８、バッテリ残量３９及び評価式３２に基づいて投機スレッド上限数（図２参照）を計算する。評価式３２は、例えば次の（２）式で表される式であってもよい。Ｅ（Ｎ）は変数Ｎのときの評価値である。Ｐ’（Ｎ）は変数Ｎのときの投機の成功率である。投機の成功率は選択頻度テーブル３６から求められる。Ｓ（Ｎ）は変数Ｎのときのスレッドスイッチ率である。スレッドスイッチ率はオーバーヘッド情報３７から求められる。αとβは、バッテリ残量３９と係数テーブル３８とから求められる係数である。評価値Ｅ（Ｎ）が例えば最大となるような変数Ｎの値が投機スレッド上限数であってもよい。投機の成功率、スレッドスイッチ率及び係数テーブル３８については後述する。
【００２６】
【数２】
2012095984.tif 000024
【００２７】
スケジューラ２５は、ＣＰＵ負荷情報３４により、各ＣＰＵ２１に割り当てられている他スレッドの数（上記（１）式のＡｘ）を把握することができる。従って、投機ライブラリ３３は、計算ライブラリ３１が算出した投機スレッド上限数とＣＰＵ負荷情報３４とに基づいて、ＣＰＵ２１ごとに、割り当て可能な投機スレッドの数（上記（１）式の［Ｎ−Ａｘ］）を把握することができる。
【００２８】
投機ライブラリ３３は、各ＣＰＵ２１の割り当て可能な投機スレッドの数を合計することにより、最大投機処理数（上記（１）式のｎ）を求めることができる。投機ライブラリ３３は、最大投機処理数以下の投機実行量、例えばｎ個分の投機スレッドを生成する。投機ライブラリ３３は、投機スレッドとして、例えば選択頻度テーブル３６に登録されている選択肢を選択頻度の降順に、投機スレッド上限数まで生成してもよい。投機スレッドはバックグラウンドで実行される。
【００２９】
メモリ２２には、統計情報データベース３５、オーバーヘッド情報３７及び係数テーブル３８が格納されている。統計情報データベース３５には、複数の選択頻度テーブル３６が格納されている。選択頻度テーブル３６には、選択肢とその選択肢の選択頻度との関係が登録されている。オーバーヘッド情報３７により、スレッド数と、ユーザモードの単位時間に占めるスレッドの切り替え時間の割合（スレッドスイッチ率）と、の関係が得られる。係数テーブル３８には、バッテリ残量３９と係数α及びβとの関係が登録されている。
【００３０】
選択頻度テーブル３６は、過去の操作履歴から作成されてもよいし、ユーザが操作するたびにその操作内容を反映して更新されてもよい。また、端末１１が外部から選択頻度テーブル３６を取得するようにしてもよい。例えば端末１１がサービスを要求すると、サービスサーバが、端末１１から要求されたサービスに対応する選択頻度テーブル３６を端末１１へ送信するようにしてもよい。このように、選択頻度テーブル３６をどのようにして作成するか、あるいはどこから取得するか、ということについては限定しない。オーバーヘッド情報３７はオペレーティングシステムやＣＰＵに固有な値であるので、予めシステムの製作者が用意してもよい。係数テーブル３８は予めシステムの製作者が用意してもよい。
【００３１】
パワーマネージメントユニット２３は、バッテリの残量を監視し、バッテリ残量３９の情報を有する。パワーマネージメントユニット２３は、端末１１の各部に供給する電源を制御する。
【００３２】
・投機の成功率の説明
図５は、実施例２における選択頻度テーブルの一例を示す図表である。図５に示すように、選択頻度テーブル３６には、選択肢とその選択肢の選択頻度との関係が例えば降順に登録されている。
【００３３】
図６は、実施例２における投機の実行量と投機の成功率との関係の一例を示す特性図である。図６には、選択頻度テーブル３６において降順にｎ番目までの選択肢の選択頻度を累積した特性曲線が示されている。図６に示す特性曲線は次の（３）式で表される。ただし、Ｐ（ｎ）は投機実行量ｎ個のときの投機の成功率である。Ｐｎは選択頻度テーブル３６において降順でｎ番目の選択肢Ｃｎの選択頻度である。投機実行量ｎの値は、例えば上記（１）式から求まる。図６及び（３）式に示すように、投機実行量ｎが増えるほど、投機の成功率Ｐ（ｎ）は１００％に近づく。従って、投機の成功率の観点からは、スレッド数が多い方が好ましい。ただし、選択頻度テーブル３６に登録されている選択肢を選択頻度の高い順に実行していくと、投機の成功率は鈍化していく。上記（２）式においてＰ’（Ｎ）は、投機実行量ｎ（このときの投機の成功率はＰ（ｎ））を投機スレッド上限数Ｎとしたときの投機の成功率である。
【００３４】
【数３】
2012095984.tif 000025
【００３５】
・スレッドスイッチ率の説明
図７は、実施例２におけるスレッドスイッチ率を説明する模式図である。図７に示すように、ユーザモードの単位時間をＴ（例えば１ｎ秒）とし、スレッド４１の切り替え（スレッドスイッチ４２）にかかる時間をｔ（例えば１０μ秒）とすると、投機スレッド上限数Ｎに対するスレッドスイッチ率Ｓ（Ｎ）は次の（４）式で表される。（４）式をグラフ化した特性図を図８に示す。
【００３６】
【数４】
2012095984.tif 000026
【００３７】
図８は、実施例２における投機スレッド上限数とスレッドスイッチ率との関係の一例を示す特性図である。図８に示すように、スレッド数が増えるとスレッドスイッチ率が大きくなる。スレッドスイッチ率が大きくなると、オーバーヘッドが増えてしまう。オーバーヘッドが増えると、電力効率が低下してしまう。従って、電力効率の観点からは、スレッド数を多くし過ぎないのが好ましい。
【００３８】
・係数テーブルの説明
図９は、実施例２における係数テーブルの一例を示す図表である。図９に示すように、係数テーブル３８には、バッテリ残量に応じて上記（２）式の評価式における係数α及びβが登録されている。例えば図示例では、バッテリ残量が５０％を超える場合には、αが２であり、βが１である。バッテリ残量が３０％を超え、５０％以下である場合には、αが１であり、βが２である。バッテリ残量が３０％以下である場合には、αが０であり、βが２である。
【００３９】
上記評価式より明らかであるように、評価値Ｅ（ｎ）において、αの値が大きいほど投機の成功率の重みが大きくなり、βの値が大きいほどスレッドスイッチ率の重みが大きくなる。従って、バッテリ残量が十分である場合には、投機の成功率が高くなるように投機スレッドの数が増える。一方、バッテリ残量が減ってくると、スレッドスイッチ率が下がり、電力効率が優先されるように投機スレッドの数が減る。バッテリ残量が殆どない場合には投機処理が行われない。なお、α及びβの値、並びにα及びβの値が変わるバッテリ残量の境界値は、図９に示す値に限定されないのは勿論である。
【００４０】
・投機スレッド上限数の求め方
図１０は、実施例２においてバッテリ残量が多い場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。図１０に示す例は、例えば図９に示す係数テーブル３８においてバッテリ残量が５０％を超える場合の例である。αが２であり、βは１であるので、上記（２）式の評価式は次の（５）式で表される。また、図１１は、実施例２においてバッテリ残量が少ない場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。図１１に示す例は、例えば図９に示す係数テーブル３８においてバッテリ残量が３０％を超え、５０％以下である場合の例である。αが１であり、βは２であるので、上記（２）式の評価式は次の（６）式で表される。
【００４１】
【数５】
2012095984.tif 000027
【００４２】
【数６】
2012095984.tif 000028
【００４３】
図１０に示す特性曲線では、例えばＮが４０であるときに評価値Ｅ（Ｎ）が最大となる。図１０に示す例では、投機スレッド上限数Ｎは例えば４０であってもよい。一方、図１１に示す特性曲線では、例えばＮが２８であるときに評価値Ｅ（Ｎ）が最大となる。図１１に示す例では、投機スレッド上限数Ｎは例えば２８であってもよい。投機スレッド上限数Ｎが大きくなると、各ＣＰＵに割り当て可能な投機スレッドの数が増えるので、複数のＣＰＵで処理される投機スレッドの数が増える。従って、バッテリ残量が多いときには複数のＣＰＵで処理される投機スレッド数が増えるので、投機の成功率が高くなる。一方、バッテリ残量が少ないときには複数のＣＰＵで処理される投機スレッド数が減るので、電力効率が良くなる。
【００４４】
・スケジューリング方法の説明
一例として、端末が携帯電話機であり、携帯電話機においてユーザがメニューに対して種々の選択などを行うメニュー操作を例にして、実施例２にかかるスケジューリング方法を説明する。以下の説明では、携帯電話機が２個のＣＰＵコア（ＣＰＵ＃０、ＣＰＵ＃１）を有しているとする。
【００４５】
［スケジューラの動作］
図１２は、実施例２にかかるスケジューリング方法におけるスケジューラの動作を示すフローチャートである。図１２に示すように、ユーザが携帯電話機を操作して例えばメニュートップ画面を開くと、スケジューラ２５は統計情報データベース３５にアクセスし、例えばメニュートップ画面に対応する選択頻度テーブル３６の取得を試みる（ステップＳ１１）。メニュートップ画面に対応する選択頻度テーブル３６の選択肢は、例えばメニュートップ画面から移行できるメニューであってもよい。選択頻度テーブル３６の選択頻度は、各選択肢が過去に選択された確率であってもよい。
【００４６】
スケジューラ２５は、該当する選択頻度テーブル３６の取得に成功した場合（ステップＳ１２：Ｙｅｓ）、投機ライブラリ３３を呼び出し（ステップＳ１３）、スケジューリングを終了する。一方、スケジューラ２５は、該当する選択頻度テーブル３６の取得に成功しなかった場合（ステップＳ１２：Ｎｏ）、投機ライブラリ３３の呼び出しを行わずに、スケジューリングを終了する。なお、スケジューラ２５は、メニュートップ画面に限らず、メニュートップ画面で選択されたメニューによって表示されるメニュー画面などについても、同様に動作する。
【００４７】
［投機ライブラリの動作］
図１３は、実施例２にかかるスケジューリング方法における投機ライブラリの動作を示すフローチャートである。図１３に示すように、投機ライブラリ３３は、スケジューラ２５から呼び出されると、計算ライブラリ３１を呼び出す（ステップＳ２１）。それによって、投機ライブラリ３３は、計算ライブラリ３１から投機スレッド上限数Ｎを取得する。次いで、投機ライブラリ３３は、投機スレッド上限数Ｎと、ＣＰＵ＃０に存在する実行待ちの他スレッドの数Ａ０と、ＣＰＵ＃１に存在する実行待ちの他スレッドの数Ａ１とに基づいて、投機実行量ｎを算出する（ステップＳ２２）。
【００４８】
例えば投機スレッド上限数Ｎが４０であり、ＣＰＵ＃０で実行待ちの他スレッドの数が３７であり、ＣＰＵ＃１で実行待ちの他スレッドの数が３４であるとする。この場合、ＣＰＵ＃０が行うことができる投機実行量は３（＝４０−３７）であり、ＣＰＵ＃１が行うことができる投機実行量は６（＝４０−３４）である。従って、ＣＰＵ＃０及びＣＰＵ＃１を合わせた投機実行量ｎは９（＝３＋６）である。
【００４９】
次いで、投機ライブラリ３３は、ステップＳ１１でスケジューラ２５が取得した選択頻度テーブル３６から、ステップＳ２２で算出した投機実行量ｎ個分の選択肢を取得する（ステップＳ２３）。例えば投機実行量ｎが９である場合、投機ライブラリ３３は、メニュートップ画面から選択することができるメニューのうち、選択頻度が高いものから順に９個のメニューを取得してもよい。
【００５０】
次いで、投機ライブラリ３３は、取得した選択肢を投機実行する投機スレッドを生成する。投機スレッドは、ユーザがメニューを選択したときに生成されるスレッドと同様に生成される。例えば投機ライブラリ３３が選択頻度テーブル３６から９個のメニューを取得した場合には、投機ライブラリ３３は９個の投機スレッドを生成してもよい。そして、投機ライブラリ３３は、各ＣＰＵに、生成した投機スレッドを割り当てる（ステップＳ２４）。
【００５１】
例えばＣＰＵ＃０が行うことができる投機実行量が３であり、ＣＰＵ＃１が行うことができる投機実行量が６であり、投機ライブラリ３３が９個の投機スレッドを生成した場合、投機ライブラリ３３はＣＰＵ＃０に３個の投機スレッドを割り当て、ＣＰＵ＃１に６個の投機スレッドを割り当てる。各ＣＰＵに割り当てられた投機スレッドは、各ＣＰＵにおいてバックグラウンドで実行される。バックグラウンドでの実行内容は、フォアグラウンドでの実行内容と同じである。バックグラウンドでの実行内容は携帯電話機の画面に表示されないので、携帯電話機の画面を見ながらユーザが現在行っている作業、すなわちフォアグラウンドでの実行内容に支障が生じることはない。
【００５２】
次いで、投機ライブラリ３３は、ユーザの操作によって何らかのメニューが選択されると、投機が成功したか否かを判断する（ステップＳ２５）。例えば投機ライブラリ３３は、ユーザ操作により選択されたメニューと、バックグラウンドで実行されている投機スレッドのメニューとが一致しているか否かを判断する。投機が成功した場合（ステップＳ２５：Ｙｅｓ）、投機ライブラリ３３は成功した投機スレッドをフォアグラウンドに移行させる（ステップＳ２６）。
【００５３】
例えば投機に成功した投機スレッドがバックグラウンドでの実行によってバックグラウンドでメニュー画面を描画している場合、投機ライブラリ３３は、バックグラウンドで描画されたメニュー画面を携帯電話機の画面に表示する。そして、投機ライブラリ３３は、その他の全ての投機スレッドを削除し（ステップＳ２７）、図１２のステップＳ１３に戻る。一方、投機が成功しなかった場合、すなわち投機が全て失敗した場合には（ステップＳ２５：Ｎｏ）、投機ライブラリ３３は全ての投機スレッドを削除し（ステップＳ２７）、図１２のステップＳ１３に戻る。
【００５４】
［計算ライブラリの動作］
図１４は、実施例２にかかるスケジューリング方法における計算ライブラリの動作を示すフローチャートである。図１４に示すように、計算ライブラリ３１は、投機ライブラリ３３から呼び出されると、対応する選択頻度テーブル３６、オーバーヘッド情報３７及び係数テーブル３８を取得する（ステップＳ３１）。次いで、計算ライブラリ３１は、例えば「・投機スレッド上限数の求め方」の項において説明したようにして、上述した評価式の値Ｅ（Ｎ）が最大となる投機スレッド上限数Ｎを求める（ステップＳ３２）。そして、図１３のステップＳ２１に戻る。
【００５５】
実施例２によれば、実施例１と同様の効果が得られる。
【００５６】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００５７】
（付記１）複数のＣＰＵの中の一のＣＰＵが、
前記複数のＣＰＵごとに、前記複数のＣＰＵのそれぞれに割り当て可能な投機処理数の最大値から対応するＣＰＵに割り当てられている処理数を引き算し、
前記複数のＣＰＵの引算結果を加算して最大投機処理数を求め、
前記最大投機処理数以下の投機処理を前記複数のＣＰＵに割り当てること
を特徴とするスケジューリング方法。
【００５８】
（付記２）投機処理が実行される確率に基づいて、前記最大投機処理数以下の投機処理を選択すること
を特徴とする付記１に記載のスケジューリング方法。
【００５９】
（付記３）前記割り当て可能な投機処理数の最大値は、
投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて設定されること
を特徴とする付記１に記載のスケジューリング方法。
【００６０】
（付記４）前記割り当て可能な投機処理数の最大値は、
投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて設定されること
を特徴とする付記２に記載のスケジューリング方法。
【００６１】
（付記５）前記最大投機処理数以下の投機処理の一の投機処理が実際に実行されるときは、他の投機処理は削除されること
を特徴とする付記１乃至付記４の何れか一に記載のスケジューリング方法。
【００６２】
（付記６）前記最大投機処理数以下の投機処理の一の投機処理が外部から指定される処理と一致するとき、前記投機処理をバックグラウンドからフォアグラウンドに移行すること
を特徴とする付記１乃至付記４の何れか一に記載のスケジューリング方法。
【００６３】
（付記７）前記最大投機処理数以下の投機処理の一の投機処理が外部から指定される処理と一致するとき、前記投機処理をバックグラウンドからフォアグラウンドに移行すること
を特徴とする付記５に記載のスケジューリング方法。
【００６４】
（付記８）複数のＣＰＵと、
前記複数のＣＰＵに処理を割り当てるスケジューラと、
を含み、
前記スケジューラによって前記複数のＣＰＵに割り当てられる投機処理数が最大投機処理数を超えないこと
を特徴とするスケジューリングシステム。
【００６５】
（付記９）前記最大投機処理数は、
前記複数のＣＰＵのそれぞれに割り当て可能な投機処理数の最大値から前記複数のＣＰＵのそれぞれに割り当てられている処理数を引き算し、引き算された結果を前記複数のＣＰＵの数分加算することで得られること
を特徴とする付記８に記載のスケジューリングシステム。
【００６６】
（付記１０）前記スケジューラは、投機処理が実際に実行される確率に基づいて前記最大投機処理数以下の投機処理を選択し、前記複数のＣＰＵに選択された投機処理を割り当てること
を特徴とする付記８に記載のスケジューリングシステム。
【００６７】
（付記１１）前記スケジューラは、投機処理が実際に実行される確率に基づいて前記最大投機処理数以下の投機処理を選択し、前記複数のＣＰＵに選択された投機処理を割り当てること
を特徴とする付記９に記載のスケジューリングシステム。
【００６８】
（付記１２）選択された投機処理はバックグラウンドで実行され、選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されること
を特徴とする付記８に記載のスケジューリングシステム。
【００６９】
（付記１３）選択された投機処理はバックグラウンドで実行され、選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されること
を特徴とする付記９に記載のスケジューリングシステム。
【００７０】
（付記１４）選択された投機処理はバックグラウンドで実行され、選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されること
を特徴とする付記１０に記載のスケジューリングシステム。
【００７１】
（付記１５）選択された投機処理はバックグラウンドで実行され、選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されること
を特徴とする付記１１に記載のスケジューリングシステム。
【００７２】
（付記１６）前記実際に実行される投機処理以外の投機処理は削除されること
を特徴とする付記１２乃至付記１５の何れか一に記載のスケジューリングシステム。
【００７３】
（付記１７）投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて割り当て可能な投機処理数の最大値が設定されること
を特徴とする付記９乃至付記１５の何れか一に記載のスケジューリングシステム。
【００７４】
（付記１８）投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて割り当て可能な投機処理数の最大値が設定されること
を特徴とする付記１６に記載のスケジューリングシステム。
【符号の説明】
【００７５】
２１  ＣＰＵ
２５  スケジューラ
３６  選択頻度テーブル
３７  オーバーヘッド情報
３９  バッテリ残量
【国際調査報告】
2012095984.tif 000029
2012095984.tif 000030
2012095984.tif 000031
2012095984.tif 000032