(57)【特許請求の範囲】
【請求項１】
第１プロセッサと、
第２プロセッサと、
前記第１プロセッサと前記第２プロセッサを繋ぐ通信バスと、
前記通信バスにおける遅延時間を観測して、バス利用率を求める通信バス遅延モニタリング部と、
観測された前記バス利用率に基づいて、入力処理のオフロード判定および指示を行うオフロード判定・指示部と、を有し、
前記第１プロセッサは、
前記通信バス遅延モニタリング部と、
観測された前記バス利用率に基づいて、前記入力処理を前記第２プロセッサで実行した場合の応答時間を見積もる第１応答時間見積部と、
観測された前記バス利用率に基づいて、前記入力処理のオフロード判定および指示を行う第１オフロード判定・指示部と、を有し、
前記第１オフロード判定・指示部は、
前記第１応答時間見積部により見積もられた、前記入力処理を前記第２プロセッサで実行した場合の応答時間が、第１要求応答時間を満たせる場合、前記入力処理を前記第１プロセッサで実行中なら停止し、前記入力処理を前記第２プロセッサで実行させるようにする、
ことを特徴とする演算処理システム。
【請求項２】
第１プロセッサと、
第２プロセッサと、
前記第１プロセッサと前記第２プロセッサを繋ぐ通信バスと、
前記通信バスにおける遅延時間を観測して、バス利用率を求める通信バス遅延モニタリング部と、
観測された前記バス利用率に基づいて、入力処理のオフロード判定および指示を行うオフロード判定・指示部と、を有し、
前記第２プロセッサは、
観測された前記バス利用率に基づいて、前記入力処理を前記第２プロセッサで実行した場合の応答時間を見積もる第２応答時間見積部と、
観測された前記バス利用率に基づいて、前記入力処理のオフロード判定および指示を行う第２オフロード判定・指示部と、を有し、
前記第２オフロード判定・指示部は、
前記第２応答時間見積部により見積もられた、前記入力処理を前記第２プロセッサで実行した場合の応答時間が、第２要求応答時間を満たせない場合、前記入力処理を前記第２プロセッサで実行中なら停止し、前記入力処理を前記第１プロセッサで実行させるようにする、
ことを特徴とする演算処理システム。
【請求項３】
さらに、
前記通信バスに繋がれたメインメモリを有し、
前記メインメモリには、前記通信バスの動作を示す通信バス動作情報が格納されている、
ことを特徴とする請求項１または請求項２に記載の演算処理システム。
【請求項４】
前記第１プロセッサは、第１処理能力で第１消費電力を有し、
前記第２プロセッサは、前記第１処理能力よりも低い第２処理能力で前記第１消費電力よりも小さい第２消費電力を有する、
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載の演算処理システム。
【請求項５】
第１プロセッサと、第２プロセッサと、前記第１プロセッサと前記第２プロセッサを繋ぐ通信バスと、を有する演算処理システムの制御方法であって、
前記通信バスにおける遅延時間を観測して、バス利用率を求め、
観測された前記バス利用率に基づいて、入力処理を前記第１プロセッサおよび第２プロセッサに割り当て、
前記第１プロセッサは、
観測された前記バス利用率に基づいて、前記入力処理を前記第２プロセッサで実行した場合の応答時間を見積もり、
見積もられた前記入力処理を前記第２プロセッサで実行した場合の応答時間が、第１要求応答時間を満たせる場合、前記入力処理を前記第１プロセッサで実行中なら停止し、前記入力処理を前記第２プロセッサで実行させる、
ことを特徴とする演算処理システムの制御方法。
【請求項６】
前記第２プロセッサは、
観測された前記バス利用率に基づいて、前記入力処理を前記第２プロセッサで実行した場合の応答時間を見積もり、
見積もられた前記入力処理を前記第２プロセッサで実行した場合の応答時間が、第２要求応答時間を満たせない場合、前記入力処理を前記第２プロセッサで実行中なら停止し、前記入力処理を前記第１プロセッサで実行させる、
ことを特徴とする請求項５に記載の演算処理システムの制御方法。
【請求項７】
前記第２要求応答時間は、前記第１要求応答時間よりも所定のマージンだけ長く設定されている、
ことを特徴とする請求項６に記載の演算処理システムの制御方法。
【請求項８】
前記入力処理は、複数の機能処理を含み、前記入力処理の実行は、前記複数の機能処理の一部または全部を実行する、
ことを特徴とする請求項５乃至請求項７のいずれか１項に記載の演算処理システムの制御方法。
【請求項９】
第１プロセッサと、第２プロセッサと、前記第１プロセッサと前記第２プロセッサを繋ぐ通信バスと、を有する演算処理システムの制御プログラムであって、
前記第１プロセッサおよび前記第２プロセッサに、
前記通信バスにおける遅延時間を観測して、バス利用率を求めさせ、
観測された前記バス利用率に基づいて、入力処理を前記第１プロセッサおよび第２プロセッサに割り当てさせ、
前記第１プロセッサに、観測された前記バス利用率に基づいて、前記入力処理を前記第２プロセッサで実行した場合の応答時間を見積もらせ、
見積もられた前記入力処理を前記第２プロセッサで実行した場合の応答時間が、第１要求応答時間を満たせる場合、前記入力処理を前記第１プロセッサで実行中なら停止し、前記入力処理を前記第２プロセッサで実行させる、
ことを特徴とする演算処理システムの制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で言及する実施例は、演算処理システムおよび演算処理システムの制御方法に関する。
【背景技術】
【０００２】
近年、例えば、携帯電話に要求される機能および性能は年々高度化し、大型の液晶画面，タッチパネル，カメラおよびＧＰＳ等の様々なデバイスを搭載したスマートフォンやタブレット端末が普及してきている。
【０００３】
このような高機能の携帯電話では、消費電力も増加する傾向にあるが、搭載するバッテリから供給できる電力には限界がある。そのため、バッテリ駆動できる時間をより長くするために、消費電力を削減することが求められている。
【０００４】
これは、スマートフォンやタブレット端末だけでなく、様々な機能が搭載された携帯用ゲーム機や様々な携帯用端末でも同様である。このようなバッテリ駆動の携帯端末において、電力消費が大きいモジュールとしては、例えば、プロセッサ，通信回路およびディスプレイ等が挙げられる。
【０００５】
また、携帯端末の高機能および高性能化に伴って、マルチコアプロセッサを備えたものが普及している。さらに、携帯端末の中には、処理能力および消費電力の異なる複数種類のプロセッサを備えているものも提供されている。
【０００６】
例えば、複数種類のプロセッサを備えた携帯端末では、メインプログラムを処理能力の大きなメインプロセッサで行い、計算処理や音声デコード処理などプログラムの一部の処理を消費電力の小さいサブプロセッサで行うといった使い分けがなされている。
【０００７】
さらに、複数種類のプロセッサを備えた携帯端末では、例えば、タッチパネルや各種センサー或いは入力機器のセンシング処理をサブプロセッサにより高頻度で行い、センシングの精度を保ちつつ、消費電力を抑えるといった仕組みも実装されている。
【０００８】
なお、メインプロセッサとしては、例えば、処理能力は高いが消費電力も大きい汎用のプロセッサであり、また、サブプロセッサとしては、例えば、処理能力は限られているが消費電力の小さいＤＳＰ(Digital Signal Processor)等のプロセッサである。
【０００９】
ところで、従来、複数種類のプロセッサを備えた演算処理システムの制御技術としては、様々な提案がなされている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１０−２５７０５６号公報
【特許文献２】特表２００７−５１４２１４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上述したように、消費電力の異なるメインプロセッサおよびサブプロセッサを含む演算処理システムにおいて、例えば、サブプロセッサにタッチパネルのセンシング処理を高頻度で行わせて消費電力の低減を図るものが提供されている。
【００１２】
しかしながら、サブプロセッサによる処理が重なって負荷が増加すると、例えば、タッチパネルのセンシング処理(ユーザの入力操作)に許容される応答時間を満たすことが困難になり、応答性の悪化を招くことになる。すなわち、サブプロセッサによる処理の応答時間の制約を満たしつつ、メインプロセッサの処理量を減らして消費電力を低減するのは、困難になっている。
【課題を解決するための手段】
【００１３】
一実施形態によれば、第１プロセッサと、第２プロセッサと、前記第１プロセッサと前記第２プロセッサを繋ぐ通信バスと、通信バス遅延モニタリング部と、オフロード判定・指示部と、を有する演算処理システムが提供される。
【００１４】
前記通信バス遅延モニタリング部は、前記通信バスにおける遅延時間を観測して、バス利用率を求め、前記オフロード判定・指示部は、観測された前記バス利用率に基づいて、入力処理のオフロード判定および指示を行う。前記第１プロセッサは、前記通信バス遅延モニタリング部と、観測された前記バス利用率に基づいて、前記入力処理を前記第２プロセッサで実行した場合の応答時間を見積もる第１応答時間見積部と、観測された前記バス利用率に基づいて、前記入力処理のオフロード判定および指示を行う第１オフロード判定・指示部と、を有する。前記第１オフロード判定・指示部は、前記第１応答時間見積部により見積もられた、前記入力処理を前記第２プロセッサで実行した場合の応答時間が、第１要求応答時間を満たせる場合、前記入力処理を前記第１プロセッサで実行中なら停止し、前記入力処理を前記第２プロセッサで実行させるようにする。
【発明の効果】
【００１５】
開示の演算処理システムおよび演算処理システムの制御方法は、サブプロセッサによる処理に対する応答時間の制約を満たしつつ、メインプロセッサの処理量を減らして、消費電力を低減することができるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】図１は、演算処理システムの一例を示すブロック図である。
【図２】図２は、図１に示す演算処理システムにおける課題を説明するための図である。
【図３】図３は、演算処理システムの他の例における制御方法を説明するための図である。
【図４】図４は、図３に示す演算処理システムにおける課題を説明するための図である。
【図５】図５は、演算処理システムの一例をより詳細に示すブロック図である。
【図６】図６は、本実施形態に係る演算処理システムの一例を示すブロック図である。
【図７】図７は、図６に示す演算処理システムのサブプロセッサにおける入力処理結果送信キューイング部の処理の一例を説明するためのフローチャートである。
【図８】図８は、図６に示す演算処理システムのサブプロセッサにおける入力処理結果送信部の処理の一例を説明するためのフローチャートである。
【図９】図９は、図６に示す演算処理システムのサブプロセッサおよびメインプロセッサにおける時刻同期部の処理の一例を説明するためのフローチャートである。
【図１０】図１０は、図６に示す演算処理システムのメインプロセッサにおける通信バス遅延モニタリング部の処理の一例を説明するためのフローチャートである。
【図１１】図１１は、図６に示す演算処理システムのメインプロセッサにおける応答時間見積部の処理の一例を説明するためのフローチャートである。
【図１２】図１２は、図６に示す演算処理システムのメインプロセッサにおけるオフロード判定・指示部の処理の一例を説明するためのフローチャートである。
【図１３】図１３は、図６に示す演算処理システムのサブプロセッサにおけるオフロード判定・指示部の処理の一例を説明するためのフローチャートである。
【図１４】図１４は、図６に示す演算処理システムのメインメモリにおける通信バス動作情報の例を説明するための図である。
【図１５】図１５は、図６に示す演算処理システムのメインメモリにおけるオフロード可能処理制御表の一例を説明するための図である。
【図１６】図１６は、図６に示す演算処理システムのメインメモリにおける入力デバイス属性表の一例を説明するための図である。
【図１７】図１７は、図６に示す演算処理システムのメインメモリにおけるオフロード実行プロセッサ制御表の一例を説明するための図である。
【図１８】図１８は、図６に示す演算処理システムのメインメモリにおけるプロセッサ性能情報制御表の一例を説明するための図である。
【図１９】図１９は、図６に示す演算処理システムのメインメモリにおけるプロセッサ動作情報制御表の一例を説明するための図である。
【図２０】図２０は、本実施形態に係る演算処理システムによりタッチ入力処理を行う実施例を説明するための図(その１)である。
【図２１】図２１は、本実施形態に係る演算処理システムによりタッチ入力処理を行う実施例を説明するための図(その２)である。
【図２２】図２２は、図２０および図２１に示すタッチ入力処理を行う場合のメインメモリにおけるオフロード可能処理制御表の一例を説明するための図である。
【図２３】図２３は、図２０および図２１に示すタッチ入力処理を行う場合のメインメモリにおける入力デバイス属性表の一例を説明するための図である。
【発明を実施するための形態】
【００１７】
まず、本実施例の演算処理システムおよび演算処理システムの制御方法を詳述する前に、図１〜図５を参照して、演算処理システムおよび演算処理システムの制御方法の例、並びに、その課題を説明する。
【００１８】
図１は、演算処理システムの一例を示すブロック図である。図１に示されるように、演算処理システムは、例えば、メインプロセッサ(メインＣＰＵ)１、サブプロセッサ(サブＣＰＵ)２、メインメモリ３、通信バス４およびＩ／Ｏ(Input/Output：入出力)バス５を含む。
【００１９】
メインプロセッサ１、サブプロセッサ２およびメインメモリ３は、通信バス４を経由してバス接続され、例えば、外部に設けられた入力機器またはセンサー６は、Ｉ／Ｏバス５を経由してメインプロセッサ１およびサブプロセッサ２とバス接続されている。
【００２０】
メインプロセッサ(第１プロセッサ)１は、例えば、処理能力は高いが消費電力も大きい汎用のプロセッサであり、ユーザが利用するアプリ(メインプログラム)１ａを実行し、サブプロセッサ２を補助的な役割で使用する。
【００２１】
また、サブプロセッサ(第２プロセッサ)２は、例えば、処理能力は限られているが消費電力の小さいＤＳＰ等のプロセッサであり、このサブプロセッサ２に対してできるだけ多くの処理(入力処理２)を任せることにより、消費電力を低減することが可能になる。
【００２２】
入力処理２ａは、例えば、入力機器またはセンサー６から、Ｉ／Ｏバス５を経由して入力されるデータ入力に基づいた処理(例えば、タッチパネルのセンシング処理)である。そして、サブプロセッサ２で処理された入力結果は、通信バス４を経由してメインプロセッサ１上のアプリ１ａに対して、入力イベント通知として与えられる。
【００２３】
ここで、メインプロセッサ１およびサブプロセッサ２は、それぞれ１つに限定されるものではなく、さらに、メインプロセッサ１は、複数のプロセッサコアを有するものであってもよい。なお、メインプロセッサ１とサブプロセッサ２の処理能力および消費電力の大小(高低)は、相対的なものであり、また、サブプロセッサ２は、ＤＳＰに限定されないのはいうまでもない。
【００２４】
図２は、図１に示す演算処理システムにおける課題を説明するための図であり、サブプロセッサ２が、入力処理２ａの他に、数値計算２ｂおよび音声処理２ｃ等の処理を行って負荷が増加している様子を示すものである。
【００２５】
図２に示されるように、サブプロセッサ２の負荷が増加すると、例えば、入力機器およびセンサー６からの入力処理２ａの処理時間が増加し、メインプロセッサ１上のアプリ１ａに対する入力イベント通知が遅延することになる。その結果、例えば、ユーザ(利用者)の入力操作(例えば、タッチパネルのセンシング処理)に対する応答性の悪化を招く虞がある。
【００２６】
図３は、演算処理システムの他の例における制御方法を説明するための図である。図３に示されるように、メインメモリ３、２つのメインプロセッサ(Big CPU)111，112を含む第１クラスタ100、および、３つのサブプロセッサ(LITTLE CPU)211〜213を含む第２クラスタ200が通信バス４を経由してバス接続されている。
【００２７】
ここで、メインプロセッサ111，112は、処理能力は高いが消費電力が大きく、サブプロセッサ211〜213は、処理能力は低いが消費電力が小さく、これらプロセッサ111，112および211〜213は、同時に動作するようになっている。
【００２８】
そして、例えば、サブプロセッサ211の負荷が上昇して実行待ち時間(run queue上の滞在時間)が長くなってしきい値を超えると、サブプロセッサ211の処理をメインプロセッサ111に移動して、メインプロセッサ111により処理する。
【００２９】
しかしながら、図３の例では、例えば、通信バス４の利用率が上昇して通信時間が大きくなっても、サブプロセッサ211の負荷がしきい値を超えなければ、タスクはサブプロセッサ211に割り当てられた状態を継続することになる。
【００３０】
図４は、図３に示す演算処理システムにおける課題を説明するための図であり、メインプロセッサ111(１)およびサブプロセッサ211(２)のみを描いたものである。上述したように、例えば、サブプロセッサ２の負荷がしきい値を超えない状態で、サブプロセッサ２からメインプロセッサ１への通信時間が大きくなった場合、メインプロセッサ１上のアプリ１ａへの入力イベント通知は遅延することになる。
【００３１】
すなわち、通信バス４には、メインプロセッサ１およびサブプロセッサ２だけでなく、メインメモリ３を始めとして、他の様々なサブコンポーネントが接続されているのが一般的である。
【００３２】
そのため、メインプロセッサ１およびサブプロセッサ２以外のコンポーネントが通信バス４を使用して通信を行うと、通信バス４の負荷が上昇することになり、このような場合にもメインプロセッサ１とサブプロセッサ２間の通信時間は増加することになる。
【００３３】
図５は、演算処理システムの一例をより詳細に示すブロック図であり、後述する本実施形態の演算処理システムに対応させて描いた関連技術の演算処理システムに相当する。図５に示されるように、メインプロセッサ１は、入力割込み受信部101，オフロード判定・指示部102，入力処理起動・停止部103，応答時間見積部104およびプロセッサスケジューリング部105を含む。
【００３４】
サブプロセッサ２は、入力割込み受信部201，オフロード判定・指示部202，入力処理起動・停止部203，応答時間見積部204およびプロセッサスケジューリング部205を含む。ここで、メインプロセッサ１は、アプリ１ａを実行し、サブプロセッサ２は、入力処理２ａを実行する。
【００３５】
メインメモリ３には、プロセッサ性能情報制御表301，プロセッサ動作情報制御表302，オフロード実行プロセッサ制御表303，入力デバイス属性表304およびオフロード可能処理制御表305が格納されている。
【００３６】
ここで、Ｉ／Ｏバス５には、Ｉ／Ｏ制御装置６２を経由してＩ／Ｏ装置６１が接続されている。また、Ｉ／Ｏ装置６１およびＩ／Ｏ制御装置６２は、入力機器またはセンサー６に対応する。なお、メインプロセッサ１，サブプロセッサ２およびメインメモリ３における各ブロックは、本実施形態に係る演算処理システムの一例を示す図６を参照して、後述する。
【００３７】
以下、演算処理システムおよび演算処理システムの制御方法の実施例を、添付図面を参照して詳述する。図６は、本実施形態に係る演算処理システムの一例を示すブロック図である。
【００３８】
図６に示されるように、メインプロセッサ１は、ローカルクロック部１０，入力割込み受信部１１，オフロード判定・指示部１２，入力処理起動・停止部１３および応答時間見積部(第１応答時間見積部)１４を含む。さらに、メインプロセッサ１は、プロセッサスケジューリング部１５，通信バス遅延モニタリング部１６および時刻同期部１７を含む。
【００３９】
サブプロセッサ２は、ローカルクロク部２０，入力割込み受信部２１，オフロード判定・指示部２２，入力処理起動・停止部２３，応答時間見積部(第２応答時間見積部)２４およびプロセッサスケジューリング部２５を含む。さらに、サブプロセッサ２は、入力処理送信キューイング部２６，入力処理結果送信部２８および時刻同期部２７を含む。ここで、メインプロセッサ１は、アプリ１ａを実行し、サブプロセッサ２は、入力処理２ａを実行する。
【００４０】
メインメモリ３には、プロセッサ性能情報制御表３１，プロセッサ動作情報制御表３２，オフロード実行プロセッサ制御表３３，入力デバイス属性表３４，オフロード可能処理制御表３５および通信バス動作情報３６が格納されている。
【００４１】
ここで、通信バス４には、グローバルクロック部７が接続され、グローバルクロック部７からのグローバルクロックは、メインプロセッサ１の時刻同期部１７およびサブプロセッサ２の時刻同期部２７に供給されるようになっている。
【００４２】
また、Ｉ／Ｏバス５には、Ｉ／Ｏ制御装置６２を経由してＩ／Ｏ装置６１が接続されている。このＩ／Ｏ装置６１およびＩ／Ｏ制御装置６２は、例えば、前述した図１における入力機器またはセンサー６に対応する。
【００４３】
なお、前述した図５における、メインプロセッサ１のブロックは101〜105、サブプロセッサ２のブロックは201〜205およびメインメモリ３の表301〜305は、それぞれ図６における、ブロックは１１〜１５、ブロックは２１〜２５および表３１〜３５に相当する。
【００４４】
図７は、図６に示す演算処理システムのサブプロセッサにおける入力処理結果送信キューイング部の処理の一例を説明するためのフローチャートである。図７に示されるように、サブプロセッサ２の入力処理結果送信キューイング部２６による入力処理結果の送信キューイング処理が開始すると、ステップＳＴ１１において、ローカルクロック部２０から現在時刻を取得し、ステップＳＴ１２に進む。
【００４５】
ステップＳＴ１２では、送信データのヘッダに送信キューイング時刻(取得した現在時刻)および送信データのデータサイズを記録し、さらに、ステップＳＴ１３に進んで、送信データヘッダを送信待ちキューに入れて、入力処理結果の送信キューイング処理を終了する。
【００４６】
すなわち、サブプロセッサ２において、入力処理２ａにより処理された入力処理結果をメインプロセッサ１に送信するために、その送信データを送信待ちキューに入れるが、その時点の時刻を、送信キューイング時刻として送信データのヘッダに記録する。
【００４７】
図８は、図６に示す演算処理システムのサブプロセッサにおける入力処理結果送信部の処理の一例を説明するためのフローチャートである。図８に示されるように、サブプロセッサ２の入力処理結果送信部２８による入力処理結果の送信処理が開始すると、ステップＳＴ２１において、送信待ちキューが空かどうかを判定する。
【００４８】
ステップＳＴ２１において、送信待ちキューが空ではない、すなわち、送信待ちキューに送信データが入っていると判定すると、ステップＳＴ２２に進んで、送信待ちキューから送信データを取り出し、ステップＳＴ２３に進む。
【００４９】
ステップＳＴ２３では、ローカルクロック部２０から現在時刻を取得し、ステップＳＴ２４に進んで、送信データのヘッダに現在時刻を送信時刻として記録する。さらに、ステップＳＴ２５に進み、送信データを処理結果通知として、通信バス４を経由してメインプロセッサ１(通信バス遅延モニタリング部１６)へ送信して、入力処理結果の送信処理を終了する。
【００５０】
なお、ステップＳＴ２１において、送信待ちキューが空である、すなわち、送信待ちキューに送信データが入っていないと判定すると、送信待ちキューが空ではないと判定するまで処理を繰り返す。
【００５１】
すなわち、サブプロセッサ２において、送信待ちキューにキューイングされたデータを送信するとき、入力処理結果送信部２８は、その時点の時刻を、送信時刻として送信データのヘッダに記録する。
【００５２】
図９は、図６に示す演算処理システムのサブプロセッサおよびメインプロセッサにおける時刻同期部の処理の一例を説明するためのフローチャートである。ここで、メインプロセッサ１の時刻同期部１７およびサブプロセッサ２の時刻同期部２７は、実質的に同様の処理を行う。
【００５３】
なお、図９の説明では、サブプロセッサ２の時刻同期部２７による時刻同期処理を説明するが、メインプロセッサ１の時刻同期部１７による時刻同期処理も同様である。すなわち、図９に示されるように、サブプロセッサ２の時刻同期部２７による時刻同期処理が開始すると、ステップＳＴ３１において、通信バス４を経由して、グローバルクロック部７から現在時刻を取得し、ステップＳＴ３２に進む。
【００５４】
ステップＳＴ３２では、ローカルクロック部２０の現在時刻を更新し(ローカルクロックをグローバルクロックと同期させ)、ステップＳＴ３３に進んで、タイマーを設定して、一定時間スリープし、さらに、ステップＳＴ３１に戻って同様の処理を繰り返す。
【００５５】
なお、メインプロセッサ１の時刻同期部１７による時刻同期処理では、上述したステップＳＴ３２におけるサブプロセッサ２のローカルクロック部２０を、メインプロセッサ１のローカルクロック部１０と読み替えればよい。
【００５６】
すなわち、時刻同期部１７および２７は、それぞれメインプロセッサ１およびサブプロセッサ２が保持しているローカルクロックの時刻がずれないように、定期的にグローバルクロック部７から時刻を取得し、それぞれのローカルクロックを更新する。これにより、メインプロセッサ１とサブプロセッサ２間の通信における遅延時間を正確に計測することが可能になる。
【００５７】
ここで、グローバルクロック部７は、例えば、演算処理システムが保持するハードウェアの時計機能モジュールであり、通信バス４に接続され、各プロセッサ１，２からアクセスすることでシステム共通の現在時刻を取得できるようにするためのものである。
【００５８】
また、ローカルクロック部１０，２０は、各プロセッサ１，２が保持するハードウェアの時計機能モジュールであり、各プロセッサ１，２は、自身が内蔵するローカルクロック部１０，２０にアクセスして高速に現在時刻を取得することができるようになっている。
【００５９】
図１０は、図６に示す演算処理システムのメインプロセッサにおける通信バス遅延モニタリング部の処理の一例を説明するためのフローチャートである。図１０に示されるように、メインプロセッサ１の通信バス遅延モニタリング部１６による通信バス遅延モニタリング(観測)処理が開始すると、ステップＳＴ４１において、受信データのヘッダから送信時刻，送信キューイング時刻およびデータサイズを取得する。
【００６０】
すなわち、通信バス遅延モニタリング部１６は、サブプロセッサ２から通信バス４を経由して受信データ(処理結果通知)を受け取り、そのヘッダに記録された送信時刻，送信キューイング時刻およびデータサイズを取得して、ステップＳＴ４２に進む。
【００６１】
ステップＳＴ４２では、ローカルクロック部１０から現在時刻を取得し、さらに、ステップＳＴ４３に進む。ステップＳＴ４３では、データ転送遅延時間＝現在時刻−送信時刻，送信時刻転送レート＝データサイズ／データ転送遅延時間，並びに，送信待ち時間＝送信時刻−送信キューイング時刻を求め、ステップＳＴ４４に進む。
【００６２】
ステップＳＴ４４では、通信バス動作情報３６からデータを読み出し、通信バス利用率＝１−(転送レート/最大転送レート)を求める。さらに、ステップＳＴ４５に進んで、(通信バス利用率，送信待ち時間および現在時刻)を、通信バス動作情報３６に書き込み、通信バス遅延モニタリング部１６による通信バス遅延モニタリング処理を終了する。
【００６３】
すなわち、通信バス遅延モニタリング部１６は、ステップＳＴ４４およびＳＴ４５において、通信バス４を経由してメインメモリ３の通信バス動作情報３６に対するデータの読み出しおよび書き込みを行う。
【００６４】
これにより、メインプロセッサ１とサブプロセッサ２間のデータ通信時に、通信バス４を経由したデータ転送遅延時間(通信遅延時間)，送信待ち時間(送信キューイング待ち時間)および通信バス利用率(バス利用率)を計測して記録することができる。
【００６５】
図１１は、図６に示す演算処理システムのメインプロセッサにおける応答時間見積部の処理の一例を説明するためのフローチャートである。図１１に示されるように、メインプロセッサ１の応答時間見積部(第１応答時間見積部)１４による応答時間見積処理が開始すると、ステップＳＴ５１において、現在時刻＞通信記録時刻＋通信記録時刻しきい値が成り立つかどうかを判定する。
【００６６】
ステップＳＴ５１において、現在時刻＞通信記録時刻＋通信記録時刻しきい値が成立すると判定すると、ステップＳＴ５２に進んで、通信バス利用率＝利用率デフォルト値として、ステップ５４に進む。
【００６７】
一方、ステップＳＴ５１において、現在時刻＞通信記録時刻＋通信記録時刻しきい値が成立しないと判定すると、ステップＳＴ５３に進んで、通信バス利用率＝直近の記録された利用率値として、ステップ５４に進む。なお、ステップＳＴ５１の判定処理において、応答時間見積部１４は、通信バス４を経由して、メインメモリ３に格納されている通信バス動作情報３６からデータを読み出す。
【００６８】
ステップＳＴ５４では、各機能の見積現在時刻＝通信時間＋計算時間，および，通信時間＝出力データ量／(１−通信バス利用率)*最大通信レート＋送信待ち時間を求める。また、ステップＳＴ５４では、メインプロセッサ計算時間＝メインプロセッサ計算量／(１−メインプロセッサ利用率)*メインプロセッサ計算レートを求める。さらに、ステップＳＴ５４では、サブプロセッサ計算時間＝サブプロセッサ計算量／(１−サブプロセッサ利用率)*サブプロセッサ計算レートを求める。
【００６９】
なお、ステップＳＴ５４では、通信バス４を経由して、メインメモリ３に格納されたプロセッサ性能情報制御表３１，オフロード可能処理制御表３５および通信バス動作情報３６からデータを読み出して処理を行う。そして、ステップＳＴ５５に進んで、見積応答時間(第１見積応答時間)＝各機能の見積応答時間合計とし、応答時間見積部１４による応答時間見積処理を終了する。
【００７０】
すなわち、メインプロセッサ１の応答時間見積部１４は、メインプロセッサ１とサブプロセッサ２間の通信バス４の利用率に基づいて、入力処理２ａをサブプロセッサ２で実行した際の応答時間を見積もる。
【００７１】
ここで、入力処理２ａをサブプロセッサ２で実行した際の応答時間とは、メインプロセッサ１上のアプリ１ａに対して入力イベントが通知されるまでの時間とする。なお、サブプロセッサ２の応答時間見積部(第２応答時間見積部)２４は、実質的に、メインプロセッサ１の応答時間見積部(第１応答時間見積部)１４と同様であり、その説明は省略する。
【００７２】
図１２は、図６に示す演算処理システムのメインプロセッサにおけるオフロード判定・指示部の処理の一例を説明するためのフローチャートである。図１２に示されるように、メインプロセッサ１のオフロード判定・指示部１２によるオフロード判定・指示処理が開始すると、ステップＳＴ６１において、オフロード可能処理リストを初期化して、ステップＳＴ６２に進む。
【００７３】
ステップＳＴ６２では、オフロード候補の機能ＩＤ(i)を、メインメモリ３に格納されたオフロード可能処理制御表３５の最終行から順に取り出し(読み出し)、ステップＳＴ６３に進んで、応答時間の見積もりを行う。
【００７４】
さらに、ステップＳＴ６４に進んで、見積応答時間＜第１要求応答時間が成り立つかどうかを判定する。なお、ステップＳＴ６４の判定処理において、オフロード判定・指示部１２は、通信バス４を経由して、メインメモリ３に格納されている入力デバイス属性表３４からデータを読み出す。
【００７５】
ステップＳＴ６４において、見積応答時間＜第１要求応答時間が成立すると判定すると、ステップＳＴ６５に進み、オフロード可能処理リストに該当機能ＩＤ(該当機能処理)を追加し、さらに、ステップＳＴ６６に進む。
【００７６】
一方、ステップＳＴ６４において、見積応答時間＜第１要求応答時間が成立しないと判定すると、そのままステップＳＴ６６に進む。なお、ステップＳＴ６５の処理において、オフロード判定・指示部１２は、通信バス４を経由して、メインメモリ３に格納されているオフロード実行プロセッサ制御表３３にデータを書き込む。
【００７７】
ステップＳＴ６６では、すべての機能ＩＤの取り出しが終了したかどうかと判定し、すべての機能ＩＤの取り出しが終了したと判定するとステップＳＴ６７に進む。なお、ステップＳＴ６６において、すべての機能ＩＤの取り出しが終了していないと判定すると、ステップＳＴ６２に戻って同様の処理を繰り返す。
【００７８】
ステップＳＴ６７では、オフロード可能処理リストが空かどうかを判定し、オフロード可能処理リストが空であると判定すると、ステップＳＴ６８に進み、オフロード可能処理リストが空ではないと判定すると、ステップＳＴ６９に進む。
【００７９】
ステップＳＴ６８では、オフロード不可能として、サブプロセッサ２のオフロード可能処理を停止し、メインプロセッサ１でオフロード可能処理を起動し、オフロード判定・指示部１２によるオフロード判定・指示処理を終了する。
【００８０】
一方、ステップＳＴ６９では、オフロード可能として、メインプロセッサ１のオフロード可能処理を停止し、サブプロセッサ２でオフロード可能処理を起動し、オフロード判定・指示部１２によるオフロード判定・指示処理を終了する。
【００８１】
このように、メインプロセッサ１のオフロード判定・指示部１２は、見積応答時間とデバイス毎の要求応答時間に基づいて、入力処理(２ａ)がサブプロセッサ２にオフロード可能かどうかを判定し、その結果により、入力処理の起動・停止指示を行う。
【００８２】
すなわち、第１見積応答時間が第１要求応答時間に間に合う場合は、入力処理を省電力のサブプロセッサ２により動作させ、第１見積応答時間が第１要求応答時間に間に合わない場合には、メインプロセッサ１により動作させる。
【００８３】
図１３は、図６に示す演算処理システムのサブプロセッサにおけるオフロード判定・指示部の処理の一例を説明するためのフローチャートである。図１３と上述した図１２の比較から明らかなように、サブプロセッサ２のオフロード判定・指示部２２によるオフロード判定・指示処理は、実質的にメインプロセッサ１のオフロード判定・指示部１２によるオフロード判定・指示処理と同様である。
【００８４】
すなわち、図１３に示されるように、サブプロセッサ２のオフロード判定・指示部２２によるオフロード判定・指示処理が開始すると、ステップＳＴ７１において、オフロード可能処理リストを初期化して、ステップＳＴ７２に進む。
【００８５】
ステップＳＴ７２では、オフロード候補の機能ＩＤ(i)を、メインメモリ３に格納されたオフロード可能処理制御表３５の最終行から順に取り出し、ステップＳＴ７３に進んで、応答時間の見積もりを行う。
【００８６】
さらに、ステップＳＴ７４に進んで、見積応答時間＜第２要求応答時間が成り立つかどうかを判定する。なお、ステップＳＴ７４の判定処理において、オフロード判定・指示部２２は、通信バス４を経由して、メインメモリ３に格納されている入力デバイス属性表３４からデータを読み出す。
【００８７】
ステップＳＴ７４において、見積応答時間＜第２要求応答時間が成立すると判定すると、ステップＳＴ７５に進み、オフロード可能処理リストに該当機能ＩＤを追加し、さらに、ステップＳＴ７６に進む。
【００８８】
一方、ステップＳＴ７４において、見積応答時間＜第２要求応答時間が成立しないと判定すると、そのままステップＳＴ７６に進む。なお、ステップＳＴ７５の処理において、オフロード判定・指示部２２は、通信バス４を経由して、メインメモリ３に格納されているオフロード実行プロセッサ制御表３３にデータを書き込む。
【００８９】
ステップＳＴ７６では、すべての機能ＩＤ(すべての機能処理)の取り出しが終了したかどうかと判定し、すべての機能ＩＤの取り出しが終了したと判定するとステップＳＴ７７に進む。なお、ステップＳＴ７６において、すべての機能ＩＤの取り出しが終了していないと判定すると、ステップＳＴ７２に戻って同様の処理を繰り返す。
【００９０】
ステップＳＴ７７では、オフロード可能処理リストが空かどうかを判定し、オフロード可能処理リストが空であると判定すると、ステップＳＴ７８に進み、オフロード可能処理リストが空ではないと判定すると、ステップＳＴ７９に進む。
【００９１】
ステップＳＴ７８では、オフロード不可能として、サブプロセッサ２のオフロード可能処理を停止し、メインプロセッサ１でオフロード可能処理を起動し、オフロード判定・指示部１２によるオフロード判定・指示処理を終了する。
【００９２】
一方、ステップＳＴ７９では、オフロード可能として、メインプロセッサ１のオフロード可能処理を停止し、サブプロセッサ２でオフロード可能処理を起動し、オフロード判定・指示部１２によるオフロード判定・指示処理を終了する。
【００９３】
このように、サブプロセッサ２のオフロード判定・指示部２２は、実質的に、メインプロセッサ１のオフロード判定・指示部１２と同様の処理を行うことになる。すなわち、見積応答時間が要求応答時間に間に合う場合は、入力処理を省電力のサブプロセッサ２により動作させ、見積応答時間が要求応答時間に間に合わない場合には、メインプロセッサ１により動作させる。
【００９４】
以上において、図１２のステップＳＴ６４における第１要求応答時間は、図１３のステップＳＴ７４における第２要求応答時間から所定のマージンαだけ短く設定するのが好ましい。
【００９５】
ここで、メインプロセッサ１の入力割込み受信部１１およびサブプロセッサ２の入力割込み受信部２１は、実質的に同様のものであり、入力デバイスを操作した際の割り込み通知(ＩＮＴ)を受信し、オフロード判定・指示部１２および２２を呼び出す。
【００９６】
また、入力処理起動・停止部１３および２３も実質的に同様のものであり、オフロード判定・指示部１２および２２からの指示に基づいて、メインプロセッサ１およびサブプロセッサ２上での入力処理の停止・起動処理を行う。
【００９７】
さらに、プロセッサスケジューリング部１５および２５も実質的に同様のものであり、各プロセッサ１および２上で実行可能な処理を順番にプロセッサ１および２に割り当て、実行させる処理を行う。
【００９８】
なお、アプリ１ａは、ユーザ(利用者)が携帯端末(演算処理システム)を操作して使用するプログラムの本体であり、通常、メインプロセッサ１により実行される。また、入力処理(２ａ)は、例えば、入力デバイス(入力機器またはセンサー６，Ｉ／Ｏ装置６１)からのデータを受信し、入力データに対して補正や解釈などの後処理を行い、アプリ１ａが使えるデータに変換するプログラムである。この入力処理は、メインプロセッサ１およびサブプロセッサ２のいずれでも動作可能な形式で用意される。
【００９９】
図１４は、図６に示す演算処理システムのメインメモリにおける通信バス動作情報の例を説明するための図である。ここで、図１４(a)は、起動時に設定される通信バス動作情報の一例を示し、図１４(b)は、実行中に計測して更新される通信バス動作情報の一例を示す。
【０１００】
図１４(a)に示されるように、起動時に設定される通信バス動作情報(３６)は、例えば、最大通信レート：２００ｂｙｔｅ／ｍｓ，利用率デフォルト値：９９％，および，通信記録時刻しきい値：１００００ｍｓとされている。
【０１０１】
この図１４(a)に示す値は、例えば、前述した図１０のステップＳＴ４４において、メインメモリ３の通信バス動作情報３６から読み出して設定するデータ(最大転送レート)に相当する。なお、通信バス利用率をしばらく計測していない場合は、通信時間を見積もれないため、デフォルト値を使用して通信時間を大きく見積もるようにするのが好ましい。
【０１０２】
図１４(b)に示されるように、実行中に計測して更新される通信バス動作情報(３６)は、例えば、通信バス利用率：５０％，通信記録時刻：２００００ｍｓ，および，送信町時間：０．１ｍｓとされている。
【０１０３】
この図１４(b)に示す値は、例えば、前述した図１０のステップＳＴ４５において、メインメモリ３の通信バス動作情報３６に書き込むデータに相当する。なお、図１４(b)に示す値は、例えば、メインプロセッサ１により、サブプロセッサ２からのデータ受信時に、通信遅延時間から通信バス利用率を計測し、計測時の時刻(通信記録時刻)と共に、図１４(b)のように記録することができる。
【０１０４】
さらに、通信バス利用率を計測するためのメインプロセッサ−サブプロセッサ間の通信バスの最大通信レート、並びに、送信キューで送信待ちに要した時間も送信待ち時間として計測し、図１４(b)のように記録することができる。
【０１０５】
図１５は、図６に示す演算処理システムのメインメモリにおけるオフロード可能処理制御表の一例を説明するための図であり、入力処理がパイプライン処理(機能Ａ〜Ｅ)の場合の例を示すものである。オフロード可能処理制御表３５は、例えば、前述した図１２のステップＳＴ６２において、オフロード判定・指示部１２により読み出して取り込まれる。
【０１０６】
図１５に示されるように、オフロード可能処理制御表３５には、例えば、各機能ＩＤ(例えば、Ｉ／Ｏ装置６１からの入力処理：機能処理Ａ，Ｂ，Ｃ，Ｄ，Ｅ)に対するメインおよびサブプロセッサの計算量、並びに、入出力データ量が記録されている。
【０１０７】
すなわち、オフロード可能処理制御表３５には、例えば、サブプロセッサ２にオフロード可能な各入力処理機能を、メインプロセッサ１実行した場合の計算量(命令数)、および、サブプロセッサ２で実行した場合の計算量が記録されている。
【０１０８】
さらに、オフロード可能処理制御表３５には、メインプロセッサ１とサブプロセッサ２間の入力データ量(ｂｙｔｅ)および出力データ量が記録されている。ここで、オフロード可能処理制御表３５は、例えば、最終行(下)から順にオフロード可能処理候補となるように並べられている。
【０１０９】
すなわち、最終行の機能ＩＤが入力デバイス(Ｉ／Ｏ装置)からの入力処理機能を示し、最終行の機能から連続した行の機能ＩＤのまとまり(例えば、Ｅ，Ｃ〜Ｅ，Ａ〜Ｅ)がオフロード可能な処理のまとまりになる。
【０１１０】
具体的に、例えば、機能(処理)Ａ〜Ｄはメインプロセッサ１で処理して機能Ｅはサブプロセッサ２で処理(オフロード処理)、或いは、機能ＡおよびＢはメインプロセッサ１で処理して機能Ｃ〜Ｅはサブプロセッサ２で処理するといった割り当てを行う。若しくは、例えば、機能Ａ〜Ｅの全てを、オフロード処理としてサブプロセッサ２で処理するといった割り当てを行う。
【０１１１】
なお、例えば、機能Ａ〜Ｅの全てをサブプロセッサ２でオフロード処理する場合、Ａの出力データ量(２００ｂｙｔｅ)がメインプロセッサ１およびサブプロセッサ２間の通信で転送されるデータ量になる。
【０１１２】
図１６は、図６に示す演算処理システムのメインメモリにおける入力デバイス属性表の一例を説明するための図である。図１６に示されるように、入力デバイス属性表３４には、例えば、前述した図１２のステップＳＴ６４で使用する第１要求応答時間および図１３のステップＳＴ７４で使用する第２要求応答時間が記録されている。
【０１１３】
具体的に、例えば、第１要求応答時間は、第２要求応答時間である４．５ｍｓから、０．５ｍｓのマージン(α)を差し引いて、４．０ｍｓに設定されている。すなわち、例えば、機能Ａ〜Ｅをサブプロセッサ２でオフロード処理するとき、所定のマージンαを与えて、サブプロセッサ２からメインプロセッサ１へ処理が移動する(戻る)のを低減して安定した動作を行わせるようになっている。
【０１１４】
ここで、入力デバイス属性表３４には、操作性能を確保するために必要な応答時間、すなわち、ユーザが入力デバイスを操作した結果がアプリケーションプログラムに通知されるまでの時間が事前に設定されている。なお、第１要求応答時間および第２要求応答時間は、例えば、デバイスの種別毎にそれぞれ固有の値に設定される。
【０１１５】
図１７は、図６に示す演算処理システムのメインメモリにおけるオフロード実行プロセッサ制御表の一例を説明するための図である。図１７に示されるように、オフロード実行プロセッサ制御表３３には、例えば、入力処理の各機能ＩＤの現在の実行プロセッサ(メインプロセッサ１(Main)またはサブプロセッサ２(Sub))が格納されている。
【０１１６】
図１８は、図６に示す演算処理システムのメインメモリにおけるプロセッサ性能情報制御表の一例を説明するための図である。図１８に示されるように、プロセッサ性能情報制御表３１には、例えば、プロセッサ種別毎(メインプロセッサ１，サブプロセッサ２)の計算処理能力(計算レート：命令数／ｍｓ)が格納されている。
【０１１７】
図１９は、図６に示す演算処理システムのメインメモリにおけるプロセッサ動作情報制御表の一例を説明するための図である。図１９に示されるように、プロセッサ動作情報制御表３２には、例えば、プロセッサ種別毎(メインプロセッサ１，サブプロセッサ２)の利用率(％)が、ビジー時間(Busy時間(ｍｓ))およびアイドル(Idle時間(ｍｓ))と共に格納されている。
【０１１８】
上述したように、本実施形態に係る演算処理システムは、メインプロセッサ１とサブプロセッサ２間のデータ通信時に通信バス４の利用状況を計測して記録し、その後のメインプロセッサ１とサブプロセッサ２間のデータ通信の所要時間を見積もる。
【０１１９】
すなわち、通信バス４のトラフィックを観測してバス利用率を求め、その後の通信所要時間を見積もる。また、メインプロセッサ１とサブプロセッサ２間のデータ通信の遅延時間を観測することにより、通信バス４の混雑状況を把握し、その後の通信所要時間を見積もる。さらに、メインプロセッサ１とサブプロセッサ２間の通信バス４の利用率に基づいて、オフロード可能な入力処理をサブプロセッサ２で実行した場合の応答時間を見積もる。
【０１２０】
そして、サブプロセッサ２で実行した場合の見積応答時間が、入力デバイス(Ｉ／Ｏ装置６１)の第１要求応答時間を満たせる場合には、該当する入力処理をメインプロセッサ１で実行中なら停止してサブプロセッサ２で実行させる。
【０１２１】
一方、サブプロセッサ２で実行した場合の見積応答時間が、入力デバイスの第２要求応答時間を満たせない場合には、該当する入力処理をサブプロッセサ２で実行中なら停止し、メインプロセッサ１で実行させる。
【０１２２】
このように、本実施形態は、例えば、メインプロセッサと省電力のサブプロセッサを備えた装置において、入力処理をできるだけサブプロセッサにオフロードする。これにより、応答時間の制約を満たしつつ、メインプロセッサの動作時間(処理量)を減らして、消費電力を削減することが可能になる。
【０１２３】
図２０および図２１は、本実施形態に係る演算処理システムによりタッチ入力処理を行う実施例を説明するための図であり、図６におけるＩ／Ｏ装置６１およびＩ／Ｏ制御装置６２がタッチスクリーンデバイスおよびタッチＩＣの場合を説明するためのものである。
【０１２４】
ここで、図２０は、例えば、通信バス４の利用率が低く、サブプロセッサ２にタッチ入力処理(２ａ)をオフロードしても要求される応答時間(例えば、描画フレームレート：１６．６ｍｓ)内にアプリ１ａに対して入力通知が可能な場合の動作例を示す。
【０１２５】
また、図２１は、例えば、サブプロセッサ２が音声処理２ｃおよび数値計算２ｂといった他の処理も行っている等の要因で通信バス４の利用率が上昇し、サブプロセッサ２にオフロードすると応答時間内にアプリ１ａへの入力通知が不可能な場合の動作例を示す。
【０１２６】
なお、図２０および図２１では、タッチ入力処理システム固有の部分を除いて省略されているが、メインプロセッサ１，サブプロセッサ２およびメインメモリ３は、実質的に、図６〜図１９を参照して説明したのと同様である。
【０１２７】
図２０および図２１に示されるように、Ｉ／Ｏバス５には、タッチＩＣ６２を経由して、ユーザがタッチ操作を行うタッチスクリーンデバイス６１(入力デバイス)が接続されている。
【０１２８】
ここで、本システムでは、例えば、ユーザがタッチスクリーンデバイス６１により行ったタッチスクリーン操作を処理し、一定時間以内にアプリ１ａに対する入力情報として伝達し、アプリ１ａの描画処理等の動作に反映させることが求められる。また、ユーザがタッチ操作を行うと、タッチＩＣ６２からプロセッサ１，２へ割り込み(ＩＮＴ)が通知される。
【０１２９】
ここで、タッチスクリーンデバイス６１の描画フレームレートが１６．６ｍｓの場合、メインプロセッサ１およびサブプロセッサ２における様々な回路や処理等を考慮して、例えば、第１要求応答時間は、４．０ｍｓ程度に設定するのが好ましい。
【０１３０】
また、後述するように、第２要求応答時間は、第１要求応答時間に対して所定のマージンα(例えば、０．５ｍｓ)を加えた４．５ｍｓ程度に設定するのが好ましい。なお、第１および第２要求応答時間は、入力デバイスの種類や機能ＩＤ(処理)等に基づいて、それぞれ固有の値が設定される。
【０１３１】
そして、サブプロセッサ２で実行した場合の見積応答時間が、第１要求応答時間(例えば、４．０ｍｓ)を満たせる(例えば、４．０ｍｓよりも短い)場合には、該当する入力処理２ａをサブプロセッサ２で実行させる。すなわち、図２０に示されるように、サブプロセッサ２では、タッチＩＣ６２からデータを読み込み、さらに、後処理を行う。
【０１３２】
入力処理２ａの後処理は、例えば、タッチＩＣデータ読み取り処理２１ｅ，タッチ誤入力検出処理２１ｄ，タッチ位置補正処理２１ｃ，タッチデータ解釈処理２１ｂおよびタッチ位置予測処理２１ａを含む。さらに、サブプロセッサ２による入力処理２ａの結果は、通信バス４を経由して、メインプロセッサ１におけるアプリ１ａの入力処理１１ａに通知される。
【０１３３】
ここで、上記一連の後処理は、例えば、パイプライン処理のように、入力データに対して順番に処理することで、アプリ１ａに通知するデータ形式に変換される。そして、前述したように、本実施形態によれば、一連の後処理は、応答時間(第１要求応答時間)を満たす限りサブプロセッサ２にオフロードして実行させることにより、操作性能を保ちつつ、消費電力を低減することが可能になる。
【０１３４】
一方、サブプロセッサ２で実行した場合の見積応答時間が、タッチスクリーンデバイス６１の第２要求応答時間を満たせない(例えば、４．５ｍｓよりも長い)場合には、該当する入力処理101a(２ａに相当)をメインプロセッサ１で実行させる。
【０１３５】
例えば、図２１に示されるように、サブプロセッサ２が音声処理２ｃや数値計算２ｂを行っていて、サブプロセッサ２にオフロードすると応答時間内にアプリ１ａへの入力通知が不可能な場合には、入力処理101aをメインプロセッサ１で実行させる。すなわち、図２１に示されるように、メインプロセッサ１では、タッチＩＣ６２からデータを読み込み、さらに、後処理101aを行う。
【０１３６】
なお、後処理(入力処理101a)は、前述した図２０における後処理２１ｅ〜２１ａと同様であり、例えば、タッチＩＣデータ読み取り処理101e，タッチ誤入力検出処理101d，タッチ位置補正処理101c，タッチデータ解釈処理101bおよびタッチ位置予測処理101aを含む。そして、メインプロセッサ１による入力処理101aの結果は、そのままアプリ１ａの入力処理１１ａに通知される。
【０１３７】
図２２は、図２０および図２１に示すタッチ入力処理を行う場合のメインメモリにおけるオフロード可能処理制御表の一例を説明するための図である。図２２に示されるように、オフロード可能処理制御表３５には、例えば、プロセッサ種別毎(メインプロセッサ１，サブプロセッサ２)の計算処理能力(計算レート：命令数／ｍｓ)が格納されている。
【０１３８】
図２２と前述した図１５の比較から明らかなように、図２２では、機能ＩＤのＡ〜Ｅに対してタッチ位置予測処理101a，タッチデータ解釈処理101b，タッチ位置補正処理101c，タッチ誤入力検出処理101dおよびタッチＩＣデータ読み取り処理101eが設定されている。なお、オフロード可能処理制御表３５は、図１５を参照して説明したように、例えば、最終行から順にオフロード可能処理候補となるように並べられている。
【０１３９】
図２３は、図２０および図２１に示すタッチ入力処理を行う場合のメインメモリにおける入力デバイス属性表の一例を説明するための図である。図２３に示されるように、入力デバイス属性表３４には、例えば、タッチ入力処理(touch)に対する第１要求応答時間および第２要求応答時間が記録されている。
【０１４０】
すなわち、入力デバイス属性表３４には、例えば、タッチ入力処理の操作性能を確保するために必要な応答時間(ユーザがタッチ操作した結果がアプリ１ａに通知されるまでの時間)が事前に設定されている。
【０１４１】
具体的に、タッチ操作を反映した画像更新が描画更新間隔(例えば、１６．６ｍｓ)の場合、例えば、第１要求応答時間は４．０ｍｓに設定され、第２要求応答時間は、所定のマージンα(例えば、０．５ｍｓ)を考慮して、４．５ｍｓに設定されている。なお、第１要求応答時間および第２要求応答時間は、例えば、デバイスの種別毎にそれぞれ固有の値に設定されるのは、前述した通りである。
【０１４２】
本実施例は、上述したものに限定されず、例えば、メインのアプリケーションプログラムを省電力プロセッサで動作させ、能力の高いプロセッサへ一部の処理をオフロードし、性能と消費電力を調整するような制御を行うことも可能である。また、メインプロセッサ１とサブプロセッサ２の処理能力および電力効率に差がない、ホモジニアスな並列プロセッサシステムにおいても本実施例を適用して、処理を各プロセッサに割り当て、性能と消費電力を調整することも可能である。
【０１４３】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【０１４４】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
（付記１）
第１プロセッサと、
第２プロセッサと、
前記第１プロセッサと前記第２プロセッサを繋ぐ通信バスと、
前記通信バスにおける遅延時間を観測して、バス利用率を求める通信バス遅延モニタリング部と、
観測された前記バス利用率に基づいて、入力処理のオフロード判定および指示を行うオフロード判定・指示部と、を有する、
ことを特徴とする演算処理システム。
【０１４５】
（付記２）
前記第１プロセッサは、
前記通信バス遅延モニタリング部と、
観測された前記バス利用率に基づいて、前記入力処理を前記第２プロセッサで実行した場合の応答時間を見積もる第１応答時間見積部と、
観測された前記バス利用率に基づいて、前記入力処理のオフロード判定および指示を行う第１オフロード判定・指示部と、を有し、
前記第１オフロード判定・指示部は、
前記第１応答時間見積部により見積もられた、前記入力処理を前記第２プロセッサで実行した場合の応答時間が、第１要求応答時間を満たせる場合、前記入力処理を前記第１プロセッサで実行中なら停止し、前記入力処理を前記第２プロセッサで実行させるようにする、
ことを特徴とする付記１に記載の演算処理システム。
【０１４６】
（付記３）
前記第２プロセッサは、
観測された前記バス利用率に基づいて、前記入力処理を前記第２プロセッサで実行した場合の応答時間を見積もる第２応答時間見積部と、
観測された前記バス利用率に基づいて、前記入力処理のオフロード判定および指示を行う第２オフロード判定・指示部と、を有し、
前記第２オフロード判定・指示部は、
前記第２応答時間見積部により見積もられた、前記入力処理を前記第２プロセッサで実行した場合の応答時間が、第２要求応答時間を満たせない場合、前記入力処理を前記第２プロセッサで実行中なら停止し、前記入力処理を前記第１プロセッサで実行させるようにする、
ことを特徴とする付記２に記載の演算処理システム。
【０１４７】
（付記４）
前記第２要求応答時間は、前記第１要求応答時間よりも所定のマージンだけ長く設定されている、
ことを特徴とする付記３に記載の演算処理システム。
【０１４８】
（付記５）
前記入力処理は、複数の機能処理を含み、前記入力処理の実行は、前記複数の機能処理の一部または全部を実行する、
ことを特徴とする付記１乃至付記４のいずれか１項に記載の演算処理システム。
【０１４９】
（付記６）
さらに、
前記通信バスに繋がれたメインメモリを有し、
前記メインメモリには、前記通信バスの動作を示す通信バス動作情報が格納されている、
ことを特徴とする付記１乃至付記５のいずれか１項に記載の演算処理システム。
【０１５０】
（付記７）
前記第１プロセッサは、第１処理能力で第１消費電力を有し、
前記第２プロセッサは、前記第１処理能力よりも低い第２処理能力で前記第１消費電力よりも小さい第２消費電力を有する、
ことを特徴とする付記１乃至付記６のいずれか１項に記載の演算処理システム。
【０１５１】
（付記８）
第１プロセッサと、第２プロセッサと、前記第１プロセッサと前記第２プロセッサを繋ぐ通信バスと、を有する演算処理システムの制御方法であって、
前記通信バスにおける遅延時間を観測して、バス利用率を求め、
観測された前記バス利用率に基づいて、入力処理を前記第１プロセッサおよび第２プロセッサに割り当てる、
ことを特徴とする演算処理システムの制御方法。
【０１５２】
（付記９）
前記第１プロセッサは、
観測された前記バス利用率に基づいて、前記入力処理を前記第２プロセッサで実行した場合の応答時間を見積もり、
見積もられた前記入力処理を前記第２プロセッサで実行した場合の応答時間が、第１要求応答時間を満たせる場合、前記入力処理を前記第１プロセッサで実行中なら停止し、前記入力処理を前記第２プロセッサで実行させる、
ことを特徴とする付記８に記載の演算処理システムの制御方法。
【０１５３】
（付記１０）
前記第２プロセッサは、
観測された前記バス利用率に基づいて、前記入力処理を前記第２プロセッサで実行した場合の応答時間を見積もり、
見積もられた前記入力処理を前記第２プロセッサで実行した場合の応答時間が、第２要求応答時間を満たせない場合、前記入力処理を前記第２プロセッサで実行中なら停止し、前記入力処理を前記第１プロセッサで実行させる、
ことを特徴とする付記９に記載の演算処理システムの制御方法。
【０１５４】
（付記１１）
前記第２要求応答時間は、前記第１要求応答時間よりも所定のマージンだけ長く設定されている、
ことを特徴とする付記１０に記載の演算処理システムの制御方法。
【０１５５】
（付記１２）
前記入力処理は、複数の機能処理を含み、前記入力処理の実行は、前記複数の機能処理の一部または全部を実行する、
ことを特徴とする付記８乃至付記１１のいずれか１項に記載の演算処理システムの制御方法。
【０１５６】
（付記１３）
前記演算処理システムは、さらに、前記通信バスに繋がれたメインメモリを有し、
前記メインメモリには、前記通信バスの動作を示す通信バス動作情報が格納されている、
ことを特徴とする付記８乃至付記１２のいずれか１項に記載の演算処理システムの制御方法。
【０１５７】
（付記１４）
前記第１プロセッサは、第１処理能力で第１消費電力を有し、
前記第２プロセッサは、前記第１処理能力よりも低い第２処理能力で前記第１消費電力よりも小さい第２消費電力を有する、
ことを特徴とする付記８乃至付記１３のいずれか１項に記載の演算処理システムの制御方法。
【０１５８】
（付記１５）
第１プロセッサと、第２プロセッサと、前記第１プロセッサと前記第２プロセッサを繋ぐ通信バスと、を有する演算処理システムの制御プログラムであって、
前記第１プロセッサおよび前記第２プロセッサに、
前記通信バスにおける遅延時間を観測して、バス利用率を求めさせ、
観測された前記バス利用率に基づいて、入力処理を前記第１プロセッサおよび第２プロセッサに割り当てさせる、
ことを特徴とする演算処理システムの制御プログラム。
【符号の説明】
【０１５９】
１，111，112    メインプロセッサ(第１プロセッサ)
２，211〜213    サブプロセッサ(第２プロセッサ)
３    メインメモリ
４    通信バス
５    Ｉ／Ｏバス
６    入力機器またはセンサー(入力デバイス)
１０，２０    ローカルクロック部
１１，２１，101，201    入力割込み受信部
１２，２２，102，202    オフロード判定・指示部
１３，２３，103，203    入力処理起動・停止部
１４，２４，104，204    応答時間見積部
１５，２５，105，205    プロセッサスケジューリング部
１６    通信バス遅延モニタリング部
１７，２７    時刻同期部
２６    入力処理送信キューイング部
２８    入力処理結果送信部
３１    プロセッサ性能情報制御表
３２    プロセッサ動作情報制御表
３３    オフロード実行プロセッサ制御表
３４    入力デバイス属性表
３５    オフロード可能処理制御表
３６    通信バス動作情報
６１    Ｉ／Ｏ装置(入力デバイス：タッチスクリーンデバイス)
６２    Ｉ／Ｏ制御装置(タッチＩＣ)
【図１】
0006428309.tif 000002
【図２】
0006428309.tif 000003
【図３】
0006428309.tif 000004
【図４】
0006428309.tif 000005
【図５】
0006428309.tif 000006
【図６】
0006428309.tif 000007
【図７】
0006428309.tif 000008
【図８】
0006428309.tif 000009
【図９】
0006428309.tif 000010
【図１０】
0006428309.tif 000011
【図１１】
0006428309.tif 000012
【図１２】
0006428309.tif 000013
【図１３】
0006428309.tif 000014
【図１４】
0006428309.tif 000015
【図１５】
0006428309.tif 000016
【図１６】
0006428309.tif 000017
【図１７】
0006428309.tif 000018
【図１８】
0006428309.tif 000019
【図１９】
0006428309.tif 000020
【図２０】
0006428309.tif 000021
【図２１】
0006428309.tif 000022
【図２２】
0006428309.tif 000023
【図２３】
0006428309.tif 000024