"複数のCPUの中の一のCPUが、前記複数のCPUごとに、前記複数のCPUのそれぞれに割り当て可能な投機処理数の最大値から対応するCPUに割り当てられている処理数を引き算し、前記複数のCPUの引算結果を加算して最大投機処理数を求め、前記最大投機処理数以下の投機処理を前記複数のCPUに割り当てることを特徴とするスケジューリング方法。投機処理が実行される確率に基づいて、前記最大投機処理数以下の投機処理を選択することを特徴とする請求項1に記載のスケジューリング方法。前記割り当て可能な投機処理数の最大値は、投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて設定されることを特徴とする請求項1に記載のスケジューリング方法。前記割り当て可能な投機処理数の最大値は、投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて設定されることを特徴とする請求項2に記載のスケジューリング方法。前記最大投機処理数以下の投機処理の一の投機処理が実際に実行されるときは、他の投機処理は削除されることを特徴とする請求項1乃至請求項4の何れか一に記載のスケジューリング方法。前記最大投機処理数以下の投機処理の一の投機処理が外部から指定される処理と一致するとき、前記投機処理をバックグラウンドからフォアグラウンドに移行することを特徴とする請求項1乃至請求項4の何れか一に記載のスケジューリング方法。前記最大投機処理数以下の投機処理の一の投機処理が外部から指定される処理と一致するとき、前記投機処理をバックグラウンドからフォアグラウンドに移行することを特徴とする請求項5に記載のスケジューリング方法。複数のCPUと、前記複数のCPUに処理を割り当てるスケジューラと、を含み、前記スケジューラによって前記複数のCPUに割り当てられる投機処理数が最大投機処理数を超えないことを特徴とするスケジューリングシステム。前記最大投機処理数は、前記複数のCPUのそれぞれに割り当て可能な投機処理数の最大値から前記複数のCPUのそれぞれに割り当てられている処理数を引き算し、引き算された結果を前記複数のCPUの数分加算することで得られることを特徴とする請求項8に記載のスケジューリングシステム。前記スケジューラは、前記投機処理が実際に実行される確率に基づいて前記最大投機処理数以下の投機処理を選択し、前記複数のCPUに選択された投機処理を割り当てることを特徴とする請求項8に記載のスケジューリングシステム。前記スケジューラは、前記投機処理が実際に実行される確率に基づいて前記最大投機処理数以下の投機処理を選択し、前記複数のCPUに選択された投機処理を割り当てることを特徴とする請求項9に記載のスケジューリングシステム。前記選択された投機処理はバックグラウンドで実行され、前記選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されることを特徴とする請求項8に記載のスケジューリングシステム。前記選択された投機処理はバックグラウンドで実行され、前記選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されることを特徴とする請求項9に記載のスケジューリングシステム。前記選択された投機処理はバックグラウンドで実行され、前記選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されることを特徴とする請求項10に記載のスケジューリングシステム。前記選択された投機処理はバックグラウンドで実行され、前記選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されることを特徴とする請求項11に記載のスケジューリングシステム。前記実際に実行される投機処理以外の投機処理は削除されることを特徴とする請求項12乃至請求項15の何れか一に記載のスケジューリングシステム。投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて前記割り当て可能な投機処理数の最大値が設定されることを特徴とする請求項9乃至請求項15の何れか一に記載のスケジューリングシステム。投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて前記割り当て可能な投機処理数の最大値が設定されることを特徴とする請求項16に記載のスケジューリングシステム。投機処理の実行量を増やすほど、投機処理の結果が実際に使用される確率、すなわち投機処理の成功率が高くなる。しかし、投機処理の実行量が増えると、メモリ領域や電力などのリソースが多く消費される。そのため、携帯電話機などの、リソースが少ない組み込み機器では、投機処理により実行されるスレッドが切り替わる際のオーバーヘッドが増えてしまい、電力効率が下がり、消費電力の増大を招くという問題点がある。一方、投機処理の実行量を減らすと、投機処理の成功率が下がってしまう。消費電力の増大を抑制することができるスケジューリング方法及びスケジューリングシステムを提供することを目的とする。投機処理の成功率が下がるのを抑制することができるスケジューリング方法及びスケジューリングシステムを提供することを目的とする。スケジューリング方法及びスケジューリングシステムは、複数のCPUの中の一のCPUが、複数のCPUごとに、次のことを行うことを要件とする。一のCPUは、複数のCPUのそれぞれに割り当て可能な投機処理数の最大値から対応するCPUに割り当てられている処理数を引き算する。一のCPUは、複数のCPUの引算結果を加算して最大投機処理数を求める。一のCPUは、最大投機処理数以下の投機処理を複数のCPUに割り当てる。投機処理はバックグラウンドで処理されていても、実際にはその処理結果が必要とされずに破棄されることがある。つまり、投機処理は、信頼性のない処理である。上記スケジューリング方法及びスケジューリングシステムによれば、消費電力の増大を抑制することができる。投機処理の成功率が下がるのを抑制することができる。以下に、この発明にかかるスケジューリング方法及びスケジューリングシステムの実施例を図面に基づいて詳細に説明する。実施の形態にかかるスケジューリング方法及びスケジューリングシステムは、複数のCPUの中の一のCPUが、複数のCPUに割り当て可能な最大投機処理数を求め、最大投機処理数以下の投機処理を複数のCPUに割り当てるものである。なお、この実施例によりこの発明が限定されるものではない。実施例1図1は、実施例1にかかるスケジューリング方法を示すフローチャートである。図1に示すように、複数のCPUを備えた装置において、スケジューリングが開始されると、複数のCPUの中の一のCPUが、複数のCPUのそれぞれに割り当て可能な投機処理数の最大値から対応するCPUに割り当てられている処理数を引き算する。この演算によって、CPUごとに割り当て可能な投機処理数が求まるステップS1。次いで、一のCPUは、複数のCPUの引算結果を加算して最大投機処理数を求めるステップS2。次いで、一のCPUは、最大投機処理数以下の投機処理を複数のCPUに割り当てるステップS3。それによって、各CPUに、複数のCPUに割り当てられる投機処理数の合計値が最大投機処理数以下となるように、投機処理が割り当てられる。図2は、実施例1にかかるスケジューリング方法を説明する模式図である。図2には、CPUの数が4個である例が示されている。図2に示すように、投機処理は投機スレッド1という単位で実行される。また、図2では、投機処理以外の処理は全て他スレッド2とされている。各CPU0、1、2、33,4,5,6は、投機スレッド上限数まで、投機スレッドを割り当てることができる。つまり、投機スレッド上限数は、CPUのそれぞれに割り当て可能な投機処理数の最大値である。図2に示す例では、特に限定しないが、投機スレッド上限数は3である。ただし、各CPU0、1、2、33,4,5,6には、投機スレッド1以外の他スレッド2が割り当てられている。従って、各CPU0、1、2、33,4,5,6に実際に割り当て可能な投機スレッド1の数は、投機スレッド上限数から各CPU0、1、2、33,4,5,6に実際に割り当てられている他スレッド2の数を引いた数となる。図2に示す例では、特に限定しないが、CPU0_3及びCPU3_6には2個の他スレッド2が割り当てられている。従って、CPU0_3及びCPU3_6に割り当て可能な投機スレッド1の数は、投機スレッド上限数の3から他スレッドの数2を引いた1となる。同様に、CPU1_4では、他スレッドの数が1であるので、割り当て可能な投機スレッド1の数は、3から1を引いた2となる。CPU2_5では、4個の他スレッド2が割り当てられており、引き算の結果が負の値となるので、CPU2_5には投機スレッドを割り当てることができない。従って、割り当て可能な投機スレッド1の数は0である。このように、投機スレッド上限数が求まれば、CPUごとに割り当て可能な投機スレッドの数が求められる。投機スレッド上限数及び各CPU0、1、2、33,4,5,6に割り当てられている他スレッド2の数は、スケジューリングを行う一のCPU、例えばCPU0_3のスケジューラが把握している。最大投機処理数は、各CPU0、1、2、33,4,5,6に割り当て可能な投機スレッド1の数を合計した値であるので、例えば図2に示す例では4個となる。これを式で表すと、最大投機処理数nは次の1式で表される。ただし、NはCPUあたりの投機スレッド上限数を表し、Axは、CPUxに存在する他スレッドの数を表す。また、[N-Ax]が負の値である場合は0とする。スケジューリングを行う例えばCPU0_3のスケジューラは、1式で表されるn個以下の投機スレッド1を複数のCPU0、1、2、33,4,5,6に分散して割り当てる。割り当てる投機スレッド1の数は、nよりも少なくてもよいのは勿論である。なお、CPUの数は2個であってもよいし、3個であってもよいし、5個以上であってもよい。実施例1によれば、各CPUで、投機スレッドと他スレッドとを合わせて投機スレッド上限数までのスレッドが処理されるので、スレッドが切り替わる際のオーバーヘッドの増大を抑制することができる。従って、電力効率の低下を抑制し、消費電力の増大を抑制することができる。また、複数のCPUで、合わせて最大投機処理数以下の数の投機処理が実行されるので、投機処理の成功率が下がるのを抑制することができる。実施例2実施例2は、実施例1のスケジューリング方法を、例えば移動体通信システムの例えば携帯電話機などの携帯情報端末におけるスケジューリング方法に適用したものである。携帯情報端末はバッテリにより駆動されてもよい。移動体通信システムの説明図3は、実施例2にかかる移動体通信システムの一例を示すブロック図である。図3に示すように、携帯情報端末などの端末11は無線通信により基地局12に接続する。基地局12はキャリアネットワーク13に接続されている。キャリアネットワーク13はインターネットなどのネットワーク14に接続されている。ネットワーク14にはサービスサーバ15が接続されている。端末11は、サービスサーバ15からネットワーク14、キャリアネットワーク13及び基地局12を介してサービスの提供を受ける。サービスサーバ15の一例として、例えばウェブサーバやファイルサーバが挙げられる。ウェブサーバは、端末11からの要求に基づいて端末11にウェブページの文書や画像を送信したり、ソフトウェアを実行して結果を端末11に送信したりする。ファイルサーバは、ネットワーク上の他の装置から、自身が管理する記憶装置へのアクセスを可能にする。端末の説明図4は、実施例2にかかる端末を示すブロック図である。図4に示すように、端末11は、複数のCPU21、メモリ22及びパワーマネージメントユニットPMU:PowerManagementUnit23がバス24に接続された構成を有する。スケジューラ25は、複数のCPU21のうちのいずれか一つのCPU21で動作するオペレーティングシステムOSによって実現される。スケジューラ25は、メモリ22から選択頻度テーブル36、オーバーヘッド情報37及び係数テーブル38を取得する。スケジューラ25は、パワーマネージメントユニット23からバッテリ残量39の情報を取得する。スケジューラ25は、選択頻度テーブル36を取得すると、投機ライブラリ33を呼び出す。スケジューラ25は、計算ライブラリ31が算出した投機スレッド上限数及びCPU負荷情報34に基づいて投機ライブラリ33を動作させる。計算ライブラリ31は、選択頻度テーブル36、オーバーヘッド情報37、係数テーブル38、バッテリ残量39及び評価式32に基づいて投機スレッド上限数図2参照を計算する。評価式32は、例えば次の2式で表される式であってもよい。ENは変数Nのときの評価値である。P’Nは変数Nのときの投機の成功率である。投機の成功率は選択頻度テーブル36から求められる。SNは変数Nのときのスレッドスイッチ率である。スレッドスイッチ率はオーバーヘッド情報37から求められる。αとβは、バッテリ残量39と係数テーブル38とから求められる係数である。評価値ENが例えば最大となるような変数Nの値が投機スレッド上限数であってもよい。投機の成功率、スレッドスイッチ率及び係数テーブル38については後述する。スケジューラ25は、CPU負荷情報34により、各CPU21に割り当てられている他スレッドの数上記1式のAxを把握することができる。従って、投機ライブラリ33は、計算ライブラリ31が算出した投機スレッド上限数とCPU負荷情報34とに基づいて、CPU21ごとに、割り当て可能な投機スレッドの数上記1式の[N-Ax]を把握することができる。投機ライブラリ33は、各CPU21の割り当て可能な投機スレッドの数を合計することにより、最大投機処理数上記1式のnを求めることができる。投機ライブラリ33は、最大投機処理数以下の投機実行量、例えばn個分の投機スレッドを生成する。投機ライブラリ33は、投機スレッドとして、例えば選択頻度テーブル36に登録されている選択肢を選択頻度の降順に、投機スレッド上限数まで生成してもよい。投機スレッドはバックグラウンドで実行される。メモリ22には、統計情報データベース35、オーバーヘッド情報37及び係数テーブル38が格納されている。統計情報データベース35には、複数の選択頻度テーブル36が格納されている。選択頻度テーブル36には、選択肢とその選択肢の選択頻度との関係が登録されている。オーバーヘッド情報37により、スレッド数と、ユーザモードの単位時間に占めるスレッドの切り替え時間の割合スレッドスイッチ率と、の関係が得られる。係数テーブル38には、バッテリ残量39と係数α及びβとの関係が登録されている。選択頻度テーブル36は、過去の操作履歴から作成されてもよいし、ユーザが操作するたびにその操作内容を反映して更新されてもよい。また、端末11が外部から選択頻度テーブル36を取得するようにしてもよい。例えば端末11がサービスを要求すると、サービスサーバが、端末11から要求されたサービスに対応する選択頻度テーブル36を端末11へ送信するようにしてもよい。このように、選択頻度テーブル36をどのようにして作成するか、あるいはどこから取得するか、ということについては限定しない。オーバーヘッド情報37はオペレーティングシステムやCPUに固有な値であるので、予めシステムの製作者が用意してもよい。係数テーブル38は予めシステムの製作者が用意してもよい。パワーマネージメントユニット23は、バッテリの残量を監視し、バッテリ残量39の情報を有する。パワーマネージメントユニット23は、端末11の各部に供給する電源を制御する。投機の成功率の説明図5は、実施例2における選択頻度テーブルの一例を示す図表である。図5に示すように、選択頻度テーブル36には、選択肢とその選択肢の選択頻度との関係が例えば降順に登録されている。図6は、実施例2における投機の実行量と投機の成功率との関係の一例を示す特性図である。図6には、選択頻度テーブル36において降順にn番目までの選択肢の選択頻度を累積した特性曲線が示されている。図6に示す特性曲線は次の3式で表される。ただし、Pnは投機実行量n個のときの投機の成功率である。Pnは選択頻度テーブル36において降順でn番目の選択肢Cnの選択頻度である。投機実行量nの値は、例えば上記1式から求まる。図6及び3式に示すように、投機実行量nが増えるほど、投機の成功率Pnは100に近づく。従って、投機の成功率の観点からは、スレッド数が多い方が好ましい。ただし、選択頻度テーブル36に登録されている選択肢を選択頻度の高い順に実行していくと、投機の成功率は鈍化していく。上記2式においてP’Nは、投機実行量nこのときの投機の成功率はPnを投機スレッド上限数Nとしたときの投機の成功率である。スレッドスイッチ率の説明図7は、実施例2におけるスレッドスイッチ率を説明する模式図である。図7に示すように、ユーザモードの単位時間をT例えば1n秒とし、スレッド41の切り替えスレッドスイッチ42にかかる時間をt例えば10μ秒とすると、投機スレッド上限数Nに対するスレッドスイッチ率SNは次の4式で表される。4式をグラフ化した特性図を図8に示す。図8は、実施例2における投機スレッド上限数とスレッドスイッチ率との関係の一例を示す特性図である。図8に示すように、スレッド数が増えるとスレッドスイッチ率が大きくなる。スレッドスイッチ率が大きくなると、オーバーヘッドが増えてしまう。オーバーヘッドが増えると、電力効率が低下してしまう。従って、電力効率の観点からは、スレッド数を多くし過ぎないのが好ましい。係数テーブルの説明図9は、実施例2における係数テーブルの一例を示す図表である。図9に示すように、係数テーブル38には、バッテリ残量に応じて上記2式の評価式における係数α及びβが登録されている。例えば図示例では、バッテリ残量が50を超える場合には、αが2であり、βが1である。バッテリ残量が30を超え、50以下である場合には、αが1であり、βが2である。バッテリ残量が30以下である場合には、αが0であり、βが2である。上記評価式より明らかであるように、評価値Enにおいて、αの値が大きいほど投機の成功率の重みが大きくなり、βの値が大きいほどスレッドスイッチ率の重みが大きくなる。従って、バッテリ残量が十分である場合には、投機の成功率が高くなるように投機スレッドの数が増える。一方、バッテリ残量が減ってくると、スレッドスイッチ率が下がり、電力効率が優先されるように投機スレッドの数が減る。バッテリ残量が殆どない場合には投機処理が行われない。なお、α及びβの値、並びにα及びβの値が変わるバッテリ残量の境界値は、図9に示す値に限定されないのは勿論である。投機スレッド上限数の求め方図10は、実施例2においてバッテリ残量が多い場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。図10に示す例は、例えば図9に示す係数テーブル38においてバッテリ残量が50を超える場合の例である。αが2であり、βは1であるので、上記2式の評価式は次の5式で表される。また、図11は、実施例2においてバッテリ残量が少ない場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。図11に示す例は、例えば図9に示す係数テーブル38においてバッテリ残量が30を超え、50以下である場合の例である。αが1であり、βは2であるので、上記2式の評価式は次の6式で表される。図10に示す特性曲線では、例えばNが40であるときに評価値ENが最大となる。図10に示す例では、投機スレッド上限数Nは例えば40であってもよい。一方、図11に示す特性曲線では、例えばNが28であるときに評価値ENが最大となる。図11に示す例では、投機スレッド上限数Nは例えば28であってもよい。投機スレッド上限数Nが大きくなると、各CPUに割り当て可能な投機スレッドの数が増えるので、複数のCPUで処理される投機スレッドの数が増える。従って、バッテリ残量が多いときには複数のCPUで処理される投機スレッド数が増えるので、投機の成功率が高くなる。一方、バッテリ残量が少ないときには複数のCPUで処理される投機スレッド数が減るので、電力効率が良くなる。スケジューリング方法の説明一例として、端末が携帯電話機であり、携帯電話機においてユーザがメニューに対して種々の選択などを行うメニュー操作を例にして、実施例2にかかるスケジューリング方法を説明する。以下の説明では、携帯電話機が2個のCPUコアCPU0、CPU1を有しているとする。[スケジューラの動作]図12は、実施例2にかかるスケジューリング方法におけるスケジューラの動作を示すフローチャートである。図12に示すように、ユーザが携帯電話機を操作して例えばメニュートップ画面を開くと、スケジューラ25は統計情報データベース35にアクセスし、例えばメニュートップ画面に対応する選択頻度テーブル36の取得を試みるステップS11。メニュートップ画面に対応する選択頻度テーブル36の選択肢は、例えばメニュートップ画面から移行できるメニューであってもよい。選択頻度テーブル36の選択頻度は、各選択肢が過去に選択された確率であってもよい。スケジューラ25は、該当する選択頻度テーブル36の取得に成功した場合ステップS12:Yes、投機ライブラリ33を呼び出しステップS13、スケジューリングを終了する。一方、スケジューラ25は、該当する選択頻度テーブル36の取得に成功しなかった場合ステップS12:No、投機ライブラリ33の呼び出しを行わずに、スケジューリングを終了する。なお、スケジューラ25は、メニュートップ画面に限らず、メニュートップ画面で選択されたメニューによって表示されるメニュー画面などについても、同様に動作する。[投機ライブラリの動作]図13は、実施例2にかかるスケジューリング方法における投機ライブラリの動作を示すフローチャートである。図13に示すように、投機ライブラリ33は、スケジューラ25から呼び出されると、計算ライブラリ31を呼び出すステップS21。それによって、投機ライブラリ33は、計算ライブラリ31から投機スレッド上限数Nを取得する。次いで、投機ライブラリ33は、投機スレッド上限数Nと、CPU0に存在する実行待ちの他スレッドの数A0と、CPU1に存在する実行待ちの他スレッドの数A1とに基づいて、投機実行量nを算出するステップS22。例えば投機スレッド上限数Nが40であり、CPU0で実行待ちの他スレッドの数が37であり、CPU1で実行待ちの他スレッドの数が34であるとする。この場合、CPU0が行うことができる投機実行量は3=40-37であり、CPU1が行うことができる投機実行量は6=40-34である。従って、CPU0及びCPU1を合わせた投機実行量nは9=36である。次いで、投機ライブラリ33は、ステップS11でスケジューラ25が取得した選択頻度テーブル36から、ステップS22で算出した投機実行量n個分の選択肢を取得するステップS23。例えば投機実行量nが9である場合、投機ライブラリ33は、メニュートップ画面から選択することができるメニューのうち、選択頻度が高いものから順に9個のメニューを取得してもよい。次いで、投機ライブラリ33は、取得した選択肢を投機実行する投機スレッドを生成する。投機スレッドは、ユーザがメニューを選択したときに生成されるスレッドと同様に生成される。例えば投機ライブラリ33が選択頻度テーブル36から9個のメニューを取得した場合には、投機ライブラリ33は9個の投機スレッドを生成してもよい。そして、投機ライブラリ33は、各CPUに、生成した投機スレッドを割り当てるステップS24。例えばCPU0が行うことができる投機実行量が3であり、CPU1が行うことができる投機実行量が6であり、投機ライブラリ33が9個の投機スレッドを生成した場合、投機ライブラリ33はCPU0に3個の投機スレッドを割り当て、CPU1に6個の投機スレッドを割り当てる。各CPUに割り当てられた投機スレッドは、各CPUにおいてバックグラウンドで実行される。バックグラウンドでの実行内容は、フォアグラウンドでの実行内容と同じである。バックグラウンドでの実行内容は携帯電話機の画面に表示されないので、携帯電話機の画面を見ながらユーザが現在行っている作業、すなわちフォアグラウンドでの実行内容に支障が生じることはない。次いで、投機ライブラリ33は、ユーザの操作によって何らかのメニューが選択されると、投機が成功したか否かを判断するステップS25。例えば投機ライブラリ33は、ユーザ操作により選択されたメニューと、バックグラウンドで実行されている投機スレッドのメニューとが一致しているか否かを判断する。投機が成功した場合ステップS25:Yes、投機ライブラリ33は成功した投機スレッドをフォアグラウンドに移行させるステップS26。例えば投機に成功した投機スレッドがバックグラウンドでの実行によってバックグラウンドでメニュー画面を描画している場合、投機ライブラリ33は、バックグラウンドで描画されたメニュー画面を携帯電話機の画面に表示する。そして、投機ライブラリ33は、その他の全ての投機スレッドを削除しステップS27、図12のステップS13に戻る。一方、投機が成功しなかった場合、すなわち投機が全て失敗した場合にはステップS25:No、投機ライブラリ33は全ての投機スレッドを削除しステップS27、図12のステップS13に戻る。[計算ライブラリの動作]図14は、実施例2にかかるスケジューリング方法における計算ライブラリの動作を示すフローチャートである。図14に示すように、計算ライブラリ31は、投機ライブラリ33から呼び出されると、対応する選択頻度テーブル36、オーバーヘッド情報37及び係数テーブル38を取得するステップS31。次いで、計算ライブラリ31は、例えば投機スレッド上限数の求め方の項において説明したようにして、上述した評価式の値ENが最大となる投機スレッド上限数Nを求めるステップS32。そして、図13のステップS21に戻る。実施例2によれば、実施例1と同様の効果が得られる。"