(57)【要約】  実施形態は、ウェイクロックアウェアスケジューリングを実施するためのコンピューティングデバイス、装置、および装置によって実行される方法を含む。装置は、ウェイクロックプロファイラによってウェイクロック要求を受信し、ウェイクロック要求に関連するウェイクロック事象のウェイクロック情報を入手し得る。ウェイクロック情報は、ウェイクロック時間パラメータを含み得る。装置は、ウェイクロック時間パラメータを有するヒントを送り得る。装置は、ヒントを受信し、準備完了ジョブがウェイクロック事象中に実行できるかどうかを判断し、準備完了ジョブがウェイクロック事象中に実行できるとの判断に応答して、ウェイクロック事象中に実行するように準備完了ジョブをスケジュールすることの許可を求める要求を送り得る。
2019527867.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイス上でウェイクロックアウェアスケジューリングを実施する方法であって、
ウェイクロックプロファイラによってウェイクロック要求を受信するステップと、
前記ウェイクロックプロファイラによって、前記ウェイクロック要求に関連するウェイクロック事象のウェイクロック情報を入手するステップであって、前記ウェイクロック情報はウェイクロック時間パラメータを含む、ステップと、
前記ウェイクロックプロファイラによって、前記ウェイクロック時間パラメータを含むヒントを送るステップと、
スケジューラによって前記ヒントを受信するステップと、
前記スケジューラによって、第1の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと、
前記スケジューラによって、前記第1の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める要求を送るステップと
を含む方法。
【請求項２】
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求は、前記第1の準備完了ジョブに関するプロセッサ使用の推定値を含み、前記方法は、
前記ウェイクロックプロファイラによって、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を受信するステップと、
前記ウェイクロックプロファイラによって、前記第1の準備完了ジョブを含む作業負荷が全プロセッサ使用しきい値を上回るかどうかを判断するステップと、
前記ウェイクロックプロファイラによって、前記作業負荷が前記全プロセッサ使用しきい値を上回るとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の拒絶を送るステップと、
前記ウェイクロックプロファイラによって、前記作業負荷が前記全プロセッサ使用しきい値を上回らないとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の承認を送るステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記スケジューラによって、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の前記拒絶を受信するステップと、
前記スケジューラによって、第2の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと、
前記スケジューラによって、前記第2の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールすることの許可を求める要求を送るステップと、
前記スケジューラによって、前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールすることの許可を求める前記要求の前記承認を受信するステップと、
前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールするステップと
をさらに含む、請求項2に記載の方法。
【請求項４】
前記スケジューラによって、前記第1の準備完了ジョブがプロセッサ使用しきい値を上回るかどうかを判断し、前記第1の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、かつ前記第1の準備完了ジョブが前記プロセッサ使用しきい値を上回らないとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を送るステップと、
前記スケジューラによって、第2の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと
をさらに含む、請求項1に記載の方法。
【請求項５】
前記ウェイクロックプロファイラによって、前記ウェイクロック情報がウェイクロック時間パラメータを含むかどうかを判断するステップと、
前記ウェイクロックプロファイラによって、前記ウェイクロック情報が前記ウェイクロック時間パラメータを含まないとの判断に応答して、前記ウェイクロック事象に関するウェイクロック持続時間推定値を計算するステップと、
前記ウェイクロックプロファイラによって、前記ウェイクロック持続時間推定値を記憶するステップと
をさらに含む、請求項1に記載の方法。
【請求項６】
前記ウェイクロック持続時間推定値を記憶するステップは、
前記ウェイクロック持続時間推定値を、前記ウェイクロック要求に関連する前記ウェイクロック事象のウェイクロック識別子(ID)と相関付けるステップと、
前記ウェイクロック持続時間推定値を、対応するウェイクロックIDとともにウェイクロック情報データ構造に記憶するステップと
を含み、
前記ウェイクロック情報を入手するステップは、前記ウェイクロック情報データ構造から前記ウェイクロック持続時間推定値を取り出すステップを含む、請求項5に記載の方法。
【請求項７】
前記ウェイクロック事象に関する前記ウェイクロック持続時間推定値を計算するステップは、前記ウェイクロック事象に関する複数のウェイクロック持続時間を使用して、前記ウェイクロック事象に関する前記ウェイクロック持続時間推定値を計算するステップを含む、請求項5に記載の方法。
【請求項８】
前記複数のウェイクロック持続時間は、複数のウェイクロック持続時間推定値、複数のウェイクロック持続時間観測値、または複数のウェイクロック持続時間推定値およびウェイクロック持続時間観測値を含む、請求項7に記載の方法。
【請求項９】
コンピューティングデバイス上でウェイクロックアウェアスケジューリングを実施するように構成されたウェイクロックアウェアシステムであって、
ウェイクロック要求を受信するステップと、
前記ウェイクロック要求に関連するウェイクロック事象のウェイクロック情報を入手するステップであって、前記ウェイクロック情報はウェイクロック時間パラメータを含む、ステップと、
前記ウェイクロック時間パラメータを含むヒントを送るステップと
を含む動作を実行するように構成されたウェイクロックプロファイラと、
前記ウェイクロックプロファイラに通信可能に接続されるスケジューラであって、
前記ヒントを受信するステップと、
第1の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと、
前記第1の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める要求を送るステップと
を含む動作を実行するように構成されたスケジューラと
を含むウェイクロックアウェアシステム。
【請求項１０】
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求は、前記第1の準備完了ジョブに関するプロセッサ使用の推定値を含み、
前記ウェイクロックプロファイラは、
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を受信するステップと、
前記第1の準備完了ジョブを含む作業負荷が全プロセッサ使用しきい値を上回るかどうかを判断するステップと、
前記作業負荷が前記全プロセッサ使用しきい値を上回るとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の拒絶を送るステップと、
前記作業負荷が前記全プロセッサ使用しきい値を上回らないとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の承認を送るステップと
をさらに含む動作を実行するように構成される、請求項9に記載のウェイクロックアウェアシステム。
【請求項１１】
前記スケジューラは、
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の前記拒絶を受信するステップと、
第2の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと、
前記第2の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールすることの許可を求める要求を送るステップと、
前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールすることの許可を求める前記要求の前記承認を受信するステップと、
前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールするステップと
をさらに含む動作を実行するように構成される、請求項10に記載のウェイクロックアウェアシステム。
【請求項１２】
前記スケジューラは、
前記第1の準備完了ジョブがプロセッサ使用しきい値を上回るかどうかを判断し、前記第1の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、かつ前記第1の準備完了ジョブが前記プロセッサ使用しきい値を上回らないとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を送るステップと、
第2の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと
をさらに含む動作を実行するように構成される、請求項9に記載のウェイクロックアウェアシステム。
【請求項１３】
前記ウェイクロックプロファイラは、
前記ウェイクロック情報がウェイクロック時間パラメータを含むかどうかを判断するステップと、
前記ウェイクロック情報がウェイクロック時間パラメータを含まないとの判断に応答して、前記ウェイクロック事象に関するウェイクロック持続時間推定値を計算するステップと、
前記ウェイクロック持続時間推定値を記憶するステップと
をさらに含む動作を実行するように構成される、請求項9に記載のウェイクロックアウェアシステム。
【請求項１４】
前記ウェイクロックプロファイラは、
前記ウェイクロック持続時間推定値を記憶するステップが、
前記ウェイクロック持続時間推定値を、前記ウェイクロック要求に関連する前記ウェイクロック事象のウェイクロック識別子(ID)と相関付けるステップと、
前記ウェイクロック持続時間推定値を、対応するウェイクロックIDとともにウェイクロック情報データ構造に記憶するステップと
を含み、
前記ウェイクロック情報を入手するステップが、前記ウェイクロック情報データ構造から前記ウェイクロック持続時間推定値を取り出すステップを含む
ように動作を実行するように構成される、請求項13に記載のウェイクロックアウェアシステム。
【請求項１５】
前記ウェイクロックプロファイラは、前記ウェイクロック事象に関する前記ウェイクロック持続時間推定値を計算するステップが、前記ウェイクロック事象に関する複数のウェイクロック持続時間を使用して、前記ウェイクロック事象に関する前記ウェイクロック持続時間推定値を計算するステップを含むように動作を実行するように構成される、請求項13に記載のウェイクロックアウェアシステム。
【請求項１６】
前記複数のウェイクロック持続時間は、複数のウェイクロック持続時間推定値、複数のウェイクロック持続時間観測値、または複数のウェイクロック持続時間推定値およびウェイクロック持続時間観測値を含む、請求項15に記載のウェイクロックアウェアシステム。
【請求項１７】
コンピューティングデバイス上でウェイクロックアウェアスケジューリングを実施するように構成されたウェイクロックアウェアシステムであって、
ウェイクロック要求を受信するための手段と、
前記ウェイクロック要求に関連するウェイクロック事象のウェイクロック情報を入手するための手段であって、前記ウェイクロック情報はウェイクロック時間パラメータを含む、手段と、
前記ウェイクロック時間パラメータを含むヒントを送るための手段と、
前記ヒントを受信するための手段と、
第1の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するための手段と、
前記第1の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める要求を送るための手段と
を含むウェイクロックアウェアシステム。
【請求項１８】
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求は、前記第1の準備完了ジョブに関するプロセッサ使用の推定値を含み、前記ウェイクロックアウェアシステムは、
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を受信するための手段と、
前記第1の準備完了ジョブを含む作業負荷が全プロセッサ使用しきい値を上回るかどうかを判断するための手段と、
前記作業負荷が前記全プロセッサ使用しきい値を上回るとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の拒絶を送るための手段と、
前記作業負荷が前記全プロセッサ使用しきい値を上回らないとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の承認を送るための手段と
をさらに含む、請求項17に記載のウェイクロックアウェアシステム。
【請求項１９】
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の前記拒絶を受信するための手段と、
第2の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するための手段と、
前記第2の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールすることの許可を求める要求を送るための手段と、
前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールすることの許可を求める前記要求の前記承認を受信するための手段と、
前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールするための手段と
をさらに含む、請求項18に記載のウェイクロックアウェアシステム。
【請求項２０】
前記第1の準備完了ジョブがプロセッサ使用しきい値を上回るかどうかを判断するための手段であって、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を送るための手段は、前記第1の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、かつ前記第1の準備完了ジョブが前記プロセッサ使用しきい値を上回らないとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を送るための手段を含む、手段と、
第2の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するための手段と
をさらに含む、請求項17に記載のウェイクロックアウェアシステム。
【請求項２１】
前記ウェイクロック情報がウェイクロック時間パラメータを含むかどうかを判断するための手段と、
前記ウェイクロック情報がウェイクロック時間パラメータを含まないとの判断に応答して、前記ウェイクロック事象に関するウェイクロック持続時間推定値を計算するための手段と、
前記ウェイクロック持続時間推定値を記憶するための手段と
をさらに含む、請求項17に記載のウェイクロックアウェアシステム。
【請求項２２】
前記ウェイクロック持続時間推定値を記憶するための手段は、
前記ウェイクロック持続時間推定値を、前記ウェイクロック要求に関連する前記ウェイクロック事象のウェイクロック識別子(ID)と相関付けるための手段と、
前記ウェイクロック持続時間推定値を、対応するウェイクロックIDとともにウェイクロック情報データ構造に記憶するための手段と
を含み、
前記ウェイクロック情報を入手するための手段は、前記ウェイクロック情報データ構造から前記ウェイクロック持続時間推定値を取り出すための手段を含む、請求項21に記載のウェイクロックアウェアシステム。
【請求項２３】
前記ウェイクロック事象に関する前記ウェイクロック持続時間推定値を計算するための手段は、前記ウェイクロック事象に関する複数のウェイクロック持続時間を使用して、前記ウェイクロック事象に関する前記ウェイクロック持続時間推定値を計算するための手段を含み、前記複数のウェイクロック持続時間は、複数のウェイクロック持続時間推定値、複数のウェイクロック持続時間観測値、または複数のウェイクロック持続時間推定値およびウェイクロック持続時間観測値を含む、請求項21に記載のウェイクロックアウェアシステム。
【請求項２４】
コンピューティングデバイスのプロセッサに動作を実行させるように構成されたプロセッサ実行可能命令を記憶した非一時的プロセッサ可読記憶媒体であって、前記動作は、
ウェイクロック要求を受信するステップと、
前記ウェイクロック要求に関連するウェイクロック事象のウェイクロック情報を入手するステップであって、前記ウェイクロック情報はウェイクロック時間パラメータを含む、ステップと、
前記ウェイクロック時間パラメータを含むヒントを送るステップと、
前記ヒントを受信するステップと、
第1の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと、
前記第1の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める要求を送るステップと
を含む、非一時的プロセッサ可読記憶媒体。
【請求項２５】
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求は、前記第1の準備完了ジョブに関するプロセッサ使用の推定値を含み、前記記憶されたプロセッサ実行可能命令は、前記プロセッサに、
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を受信するステップと、
前記第1の準備完了ジョブを含む作業負荷が全プロセッサ使用しきい値を上回るかどうかを判断するステップと、
前記作業負荷が前記全プロセッサ使用しきい値を上回るとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の拒絶を送るステップと、
前記作業負荷が前記全プロセッサ使用しきい値を上回らないとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の承認を送るステップと
をさらに含む動作を実行させるように構成される、請求項24に記載の非一時的プロセッサ可読記憶媒体。
【請求項２６】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサに、
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の前記拒絶を受信するステップと、
第2の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと、
前記第2の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールすることの許可を求める要求を送るステップと、
前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールすることの許可を求める前記要求の前記承認を受信するステップと、
前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールするステップと
をさらに含む動作を実行させるように構成される、請求項25に記載の非一時的プロセッサ可読記憶媒体。
【請求項２７】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサに、
前記第1の準備完了ジョブがプロセッサ使用しきい値を上回るかどうかを判断するステップであって、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を送るステップは、前記第1の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、かつ前記第1の準備完了ジョブが前記プロセッサ使用しきい値を上回らないとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を送るステップを含む、ステップと、
第2の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと
をさらに含む動作を実行させるように構成される、請求項24に記載の非一時的プロセッサ可読記憶媒体。
【請求項２８】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサに、
前記ウェイクロック情報がウェイクロック時間パラメータを含むかどうかを判断するステップと、
前記ウェイクロック情報がウェイクロック時間パラメータを含まないとの判断に応答して、前記ウェイクロック事象に関するウェイクロック持続時間推定値を計算するステップと、
前記ウェイクロック持続時間推定値を記憶するステップと
をさらに含む動作を実行させるように構成される、請求項24に記載の非一時的プロセッサ可読記憶媒体。
【請求項２９】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサに、
前記ウェイクロック持続時間推定値を記憶するステップが、
前記ウェイクロック持続時間推定値を、前記ウェイクロック要求に関連する前記ウェイクロック事象のウェイクロック識別子(ID)と相関付けるステップと、
前記ウェイクロック持続時間推定値を、対応するウェイクロックIDとともにウェイクロック情報データ構造に記憶するステップと
を含み、
前記ウェイクロック情報を入手するステップが、前記ウェイクロック情報データ構造から前記ウェイクロック持続時間推定値を取り出すステップを含む
ように動作を実行させるように構成される、請求項28に記載の非一時的プロセッサ可読記憶媒体。
【請求項３０】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサに、前記ウェイクロック事象に関する前記ウェイクロック持続時間推定値を計算するステップが、前記ウェイクロック事象に関する複数のウェイクロック持続時間を使用して、前記ウェイクロック事象に関する前記ウェイクロック持続時間推定値を計算するステップを含むように動作を実行させるように構成され、前記複数のウェイクロック持続時間は、複数のウェイクロック持続時間推定値、複数のウェイクロック持続時間観測値、または複数のウェイクロック持続時間推定値およびウェイクロック持続時間観測値を含む、請求項28に記載の非一時的プロセッサ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モバイルデバイス上でのエネルギー効率のためのウェイクロックアウェアシステム(Wake Lock Aware System)全体のジョブスケジューリングに関する。
【背景技術】
【０００２】
現代のスマートフォンのコンピューティングシステムの様々な部分は、それらの個々のジョブ(周期的または非周期的)をスケジュールする。アプリケーションレベルサービスおよびシステムレベルサービスは、ユーザ空間においてスケジュールされる。ドライバレベルジョブおよびバックグラウンドジョブは、カーネル空間においてスケジュールされる。コンピューティングシステムの中央処理装置(CPU)は、スケジュールされたジョブを完了させるために定期的にウェイクアップする。頻繁なCPUウェイクアップは、エネルギー消費全体を増加させる。アプリケーションおよびサービスのバックグラウンド活動を実行するために、コンピューティングシステムのスクリーンがオフである間でも、CPUはアウェイクしたままでいる。バッテリー電源式システム、たとえば、スマートフォンでは、これはバッテリー電力を消費する。
【発明の概要】
【課題を解決するための手段】
【０００３】
様々な実施形態の方法および装置は、コンピューティングデバイス上でウェイクロックアウェアスケジューリングを実施するための装置および方法を提供する。様々な実施形態は、ウェイクロック要求を受信し、ウェイクロック要求に関連するウェイクロック事象(Wake Lock Event)のウェイクロック情報を入手し、ウェイクロック時間パラメータを含むヒントを送るウェイクロックプロファイラを含み得る。様々な実施形態では、ウェイクロック情報は、ウェイクロック時間パラメータを含み得る。ウェイクロック時間パラメータは、ウェイクロック持続時間、ウェイクロック持続時間推定値、ウェイクロック開始時間および/またはウェイクロック終了時間のうちの1つまたは複数を含む、ウェイクロックの持続時間を識別し、かつ/またはその計算を有効化する情報を含み得る。いくつかの実施形態は、スケジューラによってヒントを受信するステップと、スケジューラによって、第1の準備完了ジョブがウェイクロック事象中に実行できるかどうかを判断するステップと、スケジューラによって、第1の準備完了ジョブがウェイクロック事象中に実行できるとの判断に応答して、ウェイクロック事象中に実行するように第1の準備完了ジョブをスケジュールすることの許可を求める要求を送るステップとをさらに含み得る。
【０００４】
いくつかの実施形態では、ウェイクロック事象中に実行するように第1の準備完了ジョブをスケジュールすることの許可を求める要求は、第1の準備完了ジョブに関するプロセッサ使用の推定値を含み得る。いくつかの実施形態は、ウェイクロック事象中に実行するように第1の準備完了ジョブをスケジュールすることの許可を求める要求を受信し、第1の準備完了ジョブを含む作業負荷が全プロセッサ使用しきい値を上回るかどうかを判断するウェイクロックプロファイラをさらに含み得る。いくつかの実施形態は、作業負荷が全プロセッサ使用しきい値を上回るとの判断に応答して、ウェイクロック事象中に実行するように第1の準備完了ジョブをスケジュールすることの許可を求める要求の拒絶を送るウェイクロックプロファイラをさらに含み得る。いくつかの実施形態は、作業負荷が全プロセッサ使用しきい値を上回らないとの判断に応答して、ウェイクロック事象中に実行するように第1の準備完了ジョブをスケジュールすることの許可を求める要求の承認を送るウェイクロックプロファイラをさらに含み得る。
【０００５】
いくつかの実施形態は、ウェイクロック事象中に実行するように第1の準備完了ジョブをスケジュールすることの許可を求める要求の拒絶を受信し、第2の準備完了ジョブがウェイクロック事象中に実行できるかどうかを判断するスケジューラをさらに含み得る。いくつかの実施形態は、第2の準備完了ジョブがウェイクロック事象中に実行できるとの判断に応答して、ウェイクロック事象中に実行するように第2の準備完了ジョブをスケジュールすることの許可を求める要求を送るスケジューラをさらに含み得る。いくつかの実施形態は、ウェイクロック事象中に実行するように第2の準備完了ジョブをスケジュールすることの許可を求める要求の承認を受信し、ウェイクロック事象中に実行するように第2の準備完了ジョブをスケジュールするスケジューラをさらに含み得る。
【０００６】
いくつかの実施形態は、第1の準備完了ジョブがプロセッサ使用しきい値を上回るかどうかを判断し、第1の準備完了ジョブがウェイクロック事象中に実行できるとの判断に応答して、かつ第1の準備完了ジョブがプロセッサ使用しきい値を上回らないとの判断に応答して、ウェイクロック事象中に実行するように第1の準備完了ジョブをスケジュールすることの許可を求める要求を送るスケジューラをさらに含み得る。様々な実施形態は、第2の準備完了ジョブがウェイクロック事象中に実行できるかどうかを判断するスケジューラをさらに含み得る。
【０００７】
いくつかの実施形態は、ウェイクロック情報がウェイクロック時間パラメータを含むかどうかを判断し、ウェイクロック情報がウェイクロック時間パラメータを含まないとの判断に応答して、ウェイクロック事象に関するウェイクロック持続時間推定値を計算するウェイクロックプロファイラをさらに含み得る。いくつかの実施形態は、ウェイクロック持続時間推定値を、対応するウェイクロックIDとともにウェイクロック情報データ構造に記憶するウェイクロックプロファイラをさらに含み得る。
【０００８】
いくつかの実施形態では、ウェイクロック事象に関するウェイクロック持続時間推定値を計算するステップは、ウェイクロック事象に関する複数のウェイクロック持続時間を使用して、ウェイクロック事象に関するウェイクロック持続時間推定値を計算するステップを含み得る。いくつかの実施形態では、複数のウェイクロック持続時間は、複数のウェイクロック持続時間推定値、複数のウェイクロック持続時間観測値、または複数のウェイクロック持続時間推定値およびウェイクロック持続時間観測値を含み得る。
【０００９】
様々な実施形態は、スケジューラに通信可能に接続されたウェイクロックプロファイラを有するウェイクロックアウェアシステムを含み得る。ウェイクロックプロファイラおよびスケジューラは、上記で要約した実施形態方法のうちの1つまたは複数の動作を実行するように構成され得る。
【００１０】
様々な実施形態は、上記で要約した実施形態方法のうちの1つまたは複数の機能を実行するための手段を有するウェイクロックアウェアシステムを含み得る。
【００１１】
様々な実施形態は、上記で要約した実施形態方法のうちの1つまたは複数の動作をコンピューティングデバイスのプロセッサに実行させるように構成されたプロセッサ実行可能命令を記憶した非一時的プロセッサ可読記憶媒体を含み得る。
【００１２】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、様々な実施形態のうちの例示的な実施形態を示し、上記の一般的な説明および下記の発明を実施するための形態とともに、特許請求の範囲の特徴を説明するのに役立つ。
【図面の簡単な説明】
【００１３】
【図１】一実施形態を実装するのに適したコンピューティングデバイスを示す構成要素ブロック図である。
【図２】一実施形態を実装するのに適した例示的なマルチコアプロセッサを示す構成要素ブロック図である。
【図３Ａ】様々な実施形態によるウェイクロックアウェアシステムの一例を示す構成要素ブロック図である。
【図３Ｂ】様々な実施形態によるウェイクロックアウェアシステムの一例を示す構成要素ブロック図である。
【図３Ｃ】様々な実施形態によるウェイクロックアウェアシステムの一例を示す構成要素ブロック図である。
【図４】一実施形態によるウェイクロック情報テーブルの一例を示すブロック図である。
【図５】一実施形態による例示的なウェイクロック持続時間推定を示すグラフ図である。
【図６】一実施形態によるウェイクロックアンアウェアスケジューリングの一例を示すグラフ図である。
【図７】一実施形態によるウェイクロックアウェアスケジューリングの一例を示すグラフ図である。
【図８】一実施形態によるウェイクロック持続時間推定のための方法を示すプロセスフロー図である。
【図９】一実施形態によるウェイクロックアウェアスケジューリングのための方法を示すプロセスフロー図である。
【図１０】一実施形態によるウェイクロックアウェアスケジューリングのための方法を示すプロセスフロー図である。
【図１１】様々な実施形態とともに使用するのに適した例示的なモバイルコンピューティングデバイスを示す構成要素ブロック図である。
【図１２】様々な実施形態とともに使用するのに適した例示的なモバイルコンピューティングデバイスを示す構成要素ブロック図である。
【図１３】様々な実施形態とともに使用するのに適した例示的なサーバを示す構成要素ブロック図である。
【発明を実施するための形態】
【００１４】
様々な実施形態が、添付の図面を参照して詳細に説明される。可能な場合はいつでも、同一のまたは同様の部分を指すために、図面全体を通して同一の参照番号が使用される。特定の例および実装形態に対してなされる参照は、説明が目的であり、特許請求の範囲を限定することを意図していない。
【００１５】
「コンピューティングデバイス」および「モバイルコンピューティングデバイス」という用語は、セルラー電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、コンバーチブルラップトップ/タブレット(2-in-1コンピュータ)、スマートブック、ウルトラブック、ネットブロック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、モバイルゲームコンソール、ワイヤレスゲームコントローラ、ならびに、メモリおよびプログラマブルプロセッサを含む同様のパーソナル電子デバイスのうちのいずれか1つまたはすべてを指すために本明細書において互換的に使用される。「コンピューティングデバイス」という用語はさらに、パーソナルコンピュータを含む据置型コンピューティングデバイス、デスクトップコンピュータ、オールインワンコンピュータ、ワークステーション、スーパーコンピュータ、メインフレームコンピュータ、組込み型コンピュータ、サーバ、ホームシアターコンピュータ、およびゲームコンソールを指す場合がある。
【００１６】
様々な実施形態は、ウェイクロック活動に基づいてより良好なエネルギー効率のためにより長い/より深いプロセッサスリープ段階を可能にするために、コンピューティングデバイスにおいてシステム全体の協調ジョブスケジューリングを系統的に適応させ実行するための方法、ならびにそのような方法を実施するシステムおよびデバイスを含む。実施形態は、ウェイクロック活動に関する持続時間推定値を計算するステップと、次の/既存のウェイクロック活動時間のヒントをスケジューラに提供するステップと、作業負荷がしきい値未満のままである限り、次の/既存のウェイクロック活動のためのジョブをスケジュールするステップとを含み得る。
【００１７】
各アプリケーション内の(Androidシステムにおける「活動」と呼ばれる)ユーザ対応構成要素(User Facing Component)およびバックグラウンドサービスは、ウェイクロックを入手することが多い。ウェイクロックは、特定のタスクを完了させるために、ある時間ウィンドウの間に中央処理装置(CPU)をアウェイクしたままにする。ウェイクロックは、明示的なタイムアウト値とともに入手され得る。たとえば、60秒のYouTube(登録商標)ビデオの再生のために、またはプログラムの何らかの特定の明確なコードセクションを実行するために、ウェイクロックが取得され得る。他のウェイクロックのタスクベースの性質は、履歴に基づいていくつかのウェイクロックの平均持続時間を推定することを可能にする。
【００１８】
様々なタスクを実行するためにウェイクロックを取得するためのCPUウェイクアップの数を減らすために、システムの異なる部分からのジョブが、次の/既存のウェイクロック時間ウィンドウを機会主義的に利用するようにスケジュールされ得る。異なるレベルでのジョブスケジューラは、次の/既存のウェイク時間ロックウィンドウについてのヒントに従ってジョブのスケジューリングを適応させるように構成され得る。これは、CPUがより長い持続時間にわたってスリープし、スリープからアクティブおよびアクティブからスリープの遷移の数を減らすことを可能にし得る。
【００１９】
ウェイクロックの持続時間および/または持続時間推定値が、オフラインおよび/またはランタイム分析に基づいて、平均、中央値、指数加重移動平均などの適切な測定値を使用して計算され得る。様々なシステムでは、持続時間および/または持続時間推定値は、記憶され、ウェイクロックの他のパラメータを識別し指定する情報と相関付けられ得る。たとえば、持続時間および/または持続時間推定値は、Androidシステムにおいて、ウェイクロックのグローバルテーブルに追加され、ウェイクロック識別子(ID)と相関付けられ得る。
【００２０】
持続時間および/または持続時間推定値を計算するために、ウェイクロックの持続時間および/または持続時間推定値に関係するヒントを異なるレベルでのスケジューラに提供するために、スケジュールされた作業が全プロセッサ使用しきい値を上回るかどうかを判断するために、かつ作業スケジュールを承認/拒絶するために、システムにウェイクロックプロファイラが追加され得る。ウェイクロックプロファイラは、独立型構成要素、電力マネージャの一体型構成要素、CPUによって実装されるソフトウェアプログラム、またはCPUおよび専用ハードウェアによって実装されるソフトウェアプログラムの組合せであり得る。
【００２１】
アプリケーションが、電力マネージャに対してウェイクロックを要求し得る。ウェイクロックを入手することを求める要求は、ウェイクロック識別子、および/またはCPUがアクティブ状態からスリープ状態に遷移することが可能になるウェイクロックの解放をいつすべきかを示すタイムアウト値を指定し得る。ウェイクロックプロファイラは、ウェイクロックを求める要求を検出、受信および/またはインターセプトし、1つまたは複数のスケジューラにウェイクロックヒントを渡すことができる。ウェイクロックヒントは、ウェイクロックの開始時間および/または終了時間を定義するために使用され得るプロセス/ジョブ/タスクの開始時間および/または終了時間または持続時間を含み得る、次の/既存のプロセス、ジョブまたはタスクの実際持続時間または推定持続時間を、受信スケジューラに対して指定し得る。
【００２２】
スケジューラは、次の/既存のウェイクロック中に実行するのを待っているか、または実行するウェイクロックを入手するのを待っている準備完了ジョブのリストを維持し得る。スケジューラは、相関付けられたウェイクロック中に実行するようにスケジュールするために、ウェイクロックヒントにおいて指定された持続時間中に実行できる準備完了ジョブを選択し得る。準備完了ジョブの選択は、CPU使用率がウェイクロック中にプロセッサ使用しきい値を下回ることになる、たとえば、CPU能力の50%以下の使用率になるとの判断に応答して、実施され得る。
【００２３】
各スケジューラは、スケジューラのそれぞれの選択された準備完了ジョブをスケジュールするために、ウェイクロックプロファイラと交渉し得る。各スケジューラは、選択された準備完了ジョブに関する推定CPU使用率をウェイクロックプロファイラに送り得る。ウェイクロックプロファイラは、全CPU使用率、様々なスケジューラからの選択された準備完了ジョブに関する推定CPU使用率と要求されたウェイクロックに関するスケジュールされたジョブのCPU使用率との組合せが、全プロセッサ使用しきい値を上回ることになる(たとえば、CPU能力の75%以上の使用率になる)かどうかを判断し得る。全CPU使用率が全プロセッサ使用しきい値を下回ることになるとの判断に応答して、ウェイクロックプロファイラは、選択された準備完了ジョブのスケジューリングの承認を様々なスケジューラにシグナリングし得る。
【００２４】
全CPU使用率が全プロセッサ使用しきい値を上回ることになるとの判断に応答して、ウェイクロックプロファイラは、選択された準備完了ジョブのすべての拒絶を様々なスケジューラにシグナリングし得る。拒絶のシグナリングに基づいて、スケジューラは、より低い推定CPU使用率を有する準備完了ジョブを選択し、選択された準備完了ジョブの承認を受信するまでウェイクロックプロファイラと交渉し続けることができる。
【００２５】
全CPU使用率が全プロセッサ使用しきい値を上回ることになるとの判断に応答して、ウェイクロックプロファイラは、全プロセッサ使用しきい値を上回ることなくウェイクロック中に実行できるいくつかの準備完了ジョブを選択し、いくつかの選択された準備完了ジョブの承認および他の選択された準備完了ジョブの拒絶を様々なスケジューラにシグナリングすることができる。承認のシグナリングに基づいて、スケジューラは、次の/既存のウェイクロック中に実行するように、承認された準備完了ジョブをスケジュールし得る。
【００２６】
図1は、様々な実施形態とともに使用するのに適したコンピューティングデバイス10を示す。コンピューティングデバイス10は、プロセッサ14、メモリ16、通信インターフェース18、およびストレージメモリインターフェース20を有するシステムオンチップ(SoC)12を含み得る。コンピューティングデバイス10は、有線またはワイヤレスモデムなどの通信構成要素22、ストレージメモリ24、およびワイヤレス通信リンクを確立するためのアンテナ26をさらに含み得る。プロセッサ14は、様々な処理デバイスのいずれか、たとえば、いくつかのプロセッサコアを含んでよい。
【００２７】
「システムオンチップ」(SoC)という用語は、通常、限定はしないが、処理デバイス、メモリ、および通信インターフェースを含む相互接続された電子回路のセットを指すために本明細書において使用される。処理デバイスは、汎用プロセッサ、中央処理装置(CPU)、デジタル信号プロセッサ(DSP)、グラフィクス処理装置(GPU)、加速処理装置(APU)、補助プロセッサ、シングルコアプロセッサ、およびマルチコアプロセッサなどの様々な異なるタイプのプロセッサ14およびプロセッサコアを含み得る。処理デバイスはさらに、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、他のプログラマブル論理デバイス、個別ゲート論理、トランジスタ論理、性能監視ハードウェア、ウォッチドッグハードウェア、および時間基準などの、他のハードウェアおよびハードウェアの組合せを具現化し得る。集積回路は、集積回路の構成要素がシリコンなどの単体の半導体材料上に存在するように構成されてよい。
【００２８】
SoC12は、1つまたは複数のプロセッサ14を含むことができる。コンピューティングデバイス10は、2つ以上のSoC12を含み、それによって、プロセッサ14およびプロセッサコアの数を増やすことができる。コンピューティングデバイス10はまた、SoC12に関連付けられていないプロセッサ14を含み得る。個々のプロセッサ14は、図2を参照して以下で説明するようなマルチコアプロセッサであり得る。プロセッサ14は各々、コンピューティングデバイス10の他のプロセッサ14と同じであっても異なっていてもよい特定の目的のために構成され得る。同じまたは異なる構成のプロセッサ14およびプロセッサコアのうちの1つまたは複数は、一緒にグループ化され得る。プロセッサ14またはプロセッサコアのグループは、マルチプロセッサクラスタと呼ばれ得る。
【００２９】
SoC12のメモリ16は、プロセッサ14によるアクセスのためにデータおよびプロセッサ実行可能コードを記憶するように構成された、揮発性または不揮発性のメモリとすることができる。コンピューティングデバイス10および/またはSoC12は、様々な目的のために構成された1つまたは複数のメモリ16を含むことができる。1つまたは複数のメモリ16は、ランダムアクセスメモリ(RAM)もしくはメインメモリ、またはキャッシュメモリなど、揮発性メモリを含んでもよい。これらのメモリ16は、データセンサまたはサブシステムから受信される限られた量のデータ、不揮発性メモリに対して要求され、様々な因子に基づいて将来アクセスされることを予期して不揮発性メモリからメモリ16にロードされる限られた量のデータおよび/またはプロセッサ実行可能コード命令、ならびに/あるいはプロセッサ14によって生成され、不揮発性メモリには記憶されずに将来迅速にアクセスできるように一時的に記憶される限られた量の中間処理データおよび/またはプロセッサ実行可能コード命令を一時的に保持するように構成されてもよい。
【００３０】
メモリ16は、プロセッサ14のうちの1つまたは複数によるアクセスのために、別のメモリ16またはストレージメモリ24など、別のメモリデバイスからメモリ16にロードされるデータおよびプロセッサ実行可能コードを、少なくとも一時的に記憶するように構成されてもよい。メモリ16にロードされるデータおよびプロセッサ実行可能コードは、プロセッサ14による機能の実行に応答してロードされてもよい。機能の実行に応答してデータまたはプロセッサ実行可能コードをメモリ16にロードすることは、要求されたデータまたはプロセッサ実行可能コードがメモリ16内にないことが原因で不成功またはミスになるメモリ16へのメモリアクセス要求から生じる場合がある。ミスに応答して、要求されたデータまたはプロセッサ実行可能コードを他のメモリ16またはストレージメモリ24からメモリデバイス16にロードするために、別のメモリ16またはストレージメモリ24へのメモリアクセス要求が行われてもよい。機能の実行に応答してデータまたはプロセッサ実行可能コードをメモリ16にロードすることは、別のメモリ16またはストレージメモリ24へのメモリアクセス要求から生じる場合があり、データまたはプロセッサ実行可能コードは、後のアクセスのためにメモリ16にロードされてもよい。
【００３１】
ストレージメモリインターフェース20およびストレージメモリ24は、コンピューティングデバイス10が不揮発性記憶媒体上にデータとプロセッサ実行可能コードとを記憶することが可能になるように、調和して動作し得る。ストレージメモリ24は、ストレージメモリ24がプロセッサ14のうちの1つまたは複数によるアクセスのためのデータまたはプロセッサ実行可能コードを記憶し得るように、メモリ16の実施形態とほとんど同じように構成され得る。不揮発性であるストレージメモリ24は、コンピューティングデバイス10の電源が切断された後に情報を保持し得る。電源が再び投入され、コンピューティングデバイス10が再起動すると、ストレージメモリ24上に記憶された情報がコンピューティングデバイス10にとって利用可能になり得る。ストレージメモリインターフェース20は、ストレージメモリ24へのアクセスを制御し、プロセッサ14がストレージメモリ24からデータを読み取り、ストレージメモリ24にデータを書き込むことを可能にしてもよい。
【００３２】
コンピューティングデバイス10の構成要素の一部または全部は、必要な機能を果たしながらも、異なるように構成され、かつ/または組み合わされ得る。その上、コンピューティングデバイス10は、構成要素の各々のうちの1つに限定されなくてもよく、各構成要素の複数のインスタンスがコンピューティングデバイス10の様々な構成の中に含まれてもよい。
【００３３】
図2は、一実施形態を実装するのに適したマルチコアプロセッサ14を示す。マルチコアプロセッサ14は、複数の同種または異種のプロセッサコア200、201、202、203を有してもよい。単一のプロセッサ14のプロセッサコア200、201、202、203が同じ目的のために構成され、同じまたは同様の性能特性を有してもよいという点で、プロセッサコア200、201、202、203は同種であってもよい。たとえば、プロセッサ14は汎用プロセッサであってもよく、プロセッサコア200、201、202、203は同種の汎用プロセッサコアであってもよい。代替的に、プロセッサ14はグラフィックス処理装置またはデジタル信号プロセッサであってもよく、プロセッサコア200、201、202、203はそれぞれ、同種のグラフィックスプロセッサコアまたはデジタル信号プロセッサコアであってもよい。参照しやすいように、「プロセッサ」および「プロセッサコア」という用語は、本明細書で互換的に使用されることがある。
【００３４】
単一のプロセッサ14のプロセッサコア200、201、202、203が異なる目的のために構成され、かつ/または異なる性能特性を有してもよいという点で、プロセッサコア200、201、202、203は異種であってもよい。そのような異種プロセッサコアの異種性は、異なる命令セットアーキテクチャ、パイプライン、動作周波数などを含み得る。そのような異種のプロセッサコアの例には、より低速で低電力のプロセッサコアがより強力で電力を大量に消費するプロセッサコアと結合され得る「big.LITTLE」アーキテクチャとして知られているものが含まれ得る。同様の実施形態では、SoC12は、いくつかの同種または異種のプロセッサ14を含み得る。
【００３５】
図2に示す例では、マルチコアプロセッサ14は、4つのプロセッサコア200、201、202、203(すなわち、プロセッサコア0、プロセッサコア1、プロセッサコア2、およびプロセッサコア3)を含む。説明を簡単にするために、本明細書の例は、図2に示す4つのプロセッサコア200、201、202、203を参照し得る。しかしながら、図2に示し、本明細書で説明する4つのプロセッサコア200、201、202、203は単に一例として提供され、決して様々な実施形態を4コアプロセッサシステムに限定するものではない。コンピューティングデバイス10、SoC12、またはマルチコアプロセッサ14は、図示し本明細書で説明する4つのプロセッサコア200、201、202、203よりも少数またはより多数のプロセッサコアを個々にまたは組合せで含むことができる。
【００３６】
図3A〜図3Cは、ウェイクロックアウェアスケジューリングシステム300a〜300cの例示的な実施形態を示す。ウェイクロックアウェアスケジューリングシステム300a〜300cの例示的な実施形態は、(図1のコンピューティングデバイス10と同様の)コンピューティングデバイス上に含まれ得る。ウェイクロックアウェアスケジューリングシステム300a〜300cの例示的な実施形態の各々は、ウェイクロックプロファイラ304、サービスジョブスケジューラ306、およびドライバジョブ/カーネルレベルバックグラウンドジョブスケジューラ308を含み得る。ウェイクロックプロファイラ304は、サービスジョブスケジューラ306およびドライバジョブ/カーネルレベルバックグラウンドジョブスケジューラ308に通信可能に接続され得る。様々な実施形態では、ウェイクロックプロファイラ304は、(図1および図2のプロセッサ14と同様の)汎用ハードウェア上または電力マネージャ302と同様の専用ハードウェア上で実行されるソフトウェアとして実装され得る。様々な実施形態では、ウェイクロックプロファイラ304は、(図1および図2のプロセッサ14と同様の)汎用ハードウェアの一部として、または電力マネージャ302と同様の専用ハードウェアの一部として統合されたハードウェア構成要素として実装され得る。様々な実施形態では、ウェイクロックプロファイラ304は、電力マネージャ302などのウェイクロックを管理するように構成されたソフトウェアのソフトウェア構成要素を実行するプログラマブルプロセッサにおいて実装され得る。代替的に、ウェイクロックプロファイラ304は、(図1および図2のプロセッサ14と同様の)汎用ハードウェア/回路中または専用ハードウェア/回路中で実装され得る。様々な実施形態では、ウェイクロックプロファイラ304は、専用ハードウェア構成要素として実装されてよく、プロセッサ14および電力マネージャ302に通信可能に接続されてよい。
【００３７】
ウェイクロックプロファイラ304は、アプリケーションからのウェイクロック要求を受信/検出/インターセプトし、要求および/またはウェイクロック事象(Wake Lock Event)中のプロセッサ14の活動の観測値とともに含まれるウェイクロック情報を使用して、様々なウェイクロックに関するウェイクロック情報をコンパイルするように構成され得る。ウェイクロック要求とともに含まれ、ウェイクロックプロファイラ304によってコンパイルされ得るウェイクロック情報は、ウェイクロック識別子(ID)、ユーザID、プロセスID、およびウェイクロック時間パラメータを含み得る。ウェイクロック時間パラメータは、ウェイクロック持続時間、ウェイクロック持続時間推定値、ウェイクロック開始時間および/またはウェイクロック終了時間のうちの1つまたは複数を含む、ウェイクロックの持続時間を識別し、かつ/またはその計算を有効化する情報を含み得る。ウェイクロック識別子(ID)、ユーザID、プロセスID、およびウェイクロック時間パラメータはまた、ウェイクロック事象中にプロセッサ14からウェイクロックプロファイラ304によって観測され得る。ウェイクロックプロファイラ304はまた、ウェイクロック事象中のプロセッサ14の活動の観測値からウェイクロック持続時間推定値を計算およびコンパイルし、ウェイクロック持続時間推定値を、ウェイクロック要求からのコンパイルされたウェイクロック情報と相関付けることができる。ウェイクロックプロファイラ304はウェイクロック情報を、それらのウェイクロックIDによって識別された指定ウェイクロックに関してウェイクロック情報を相関付けるように構成されたデータ構造に記憶し得る。
【００３８】
ウェイクロックプロファイラ304は、ウェイクロック要求を識別し、サービスジョブスケジューラ306および/またはドライバジョブ/カーネルレベルバックグラウンドジョブスケジューラ308にヒントを送るように構成され得る。ヒントは、要求されたウェイクロックに関するヒントウェイクロック時間パラメータを含み得る。ウェイクロック時間パラメータは、ウェイクロック持続時間、ウェイクロック持続時間推定値、ウェイクロック開始時間および/またはウェイクロック終了時間のうちの1つまたは複数を含む、ウェイクロックの持続時間を識別し、かつ/またはその計算を有効化する情報を含み得る。要求されたウェイクロックは、次のまたは既存のウェイクロックであり得る。サービスジョブスケジューラ306および/またはドライバジョブ/カーネルレベルバックグラウンドジョブスケジューラ308は、要求されたウェイクロックのウェイクロック事象中に実行され得る準備完了ジョブを選択するために、ヒント情報を使用し得る。サービスジョブスケジューラ306および/またはドライバジョブ/カーネルレベルバックグラウンドジョブスケジューラ308は、選択された準備完了ジョブをスケジュールするために、ウェイクロックプロファイラ304に対して許可を要求し得る。許可を求める要求は、プロセッサ使用インジケータおよび/または準備完了ジョブ識別子を含み得る。プロセッサ使用インジケータは、要求された準備完了ジョブのすべて、要求された準備完了ジョブのグループ、または個々の要求された準備完了ジョブをスケジュールするためのプロセッサ使用のインジケータであり得る。
【００３９】
ウェイクロックプロファイラ304は、選択された準備完了ジョブをスケジュールすることの許可を求める要求を承認および/または拒絶するかどうかを決定し得る。ウェイクロックプロファイラ304は、全プロセッサ使用しきい値以下のままでありながら、要求された準備完了ジョブのすべて、要求された準備完了ジョブのグループ、または個々の要求された準備完了ジョブがプロセッサ14の全作業負荷に追加され得るかどうかに基づいて、選択された準備完了ジョブをスケジュールすることの許可を求める要求を承諾および/または拒否し得る。ウェイクロックプロファイラ304は、要求された準備完了ジョブのすべて、要求された準備完了ジョブのグループ、または個々の要求された準備完了ジョブの承認および/または拒絶を送り得る。
【００４０】
サービスジョブスケジューラ306および/またはドライバジョブ/カーネルレベルバックグラウンドジョブスケジューラ308は、選択された準備完了ジョブの一部または全部をスケジュールすることの許可の拒絶に応答して、準備完了ジョブの一部または全部の選択を再構成し、準備完了ジョブの再構成された選択を使用して、選択された準備完了ジョブをスケジュールすることの許可を要求するプロセスを繰り返すことができる。選択された準備完了ジョブをスケジュールすることの許可の要求は、交渉と呼ばれ得る。サービスジョブスケジューラ306および/またはドライバジョブ/カーネルレベルバックグラウンドジョブスケジューラ308は、選択された準備完了ジョブの一部または全部をスケジュールすることの許可の承認に応答し、当該承認に従って、選択された準備完了ジョブの一部または全部をスケジュールし得る。
【００４１】
図4は、一実施形態によるウェイクロック情報テーブル400の一例を示す。本明細書で説明するように、ウェイクロックプロファイラはウェイクロック情報を、それらのウェイクロックIDによって識別された指定ウェイクロックに関してウェイクロック情報を相関付けるように構成されたデータ構造に記憶し得る。そのようなデータ構造の非限定的な例には、ウェイクロック情報テーブル400が含まれ得る。ウェイクロック情報テーブル400は、ウェイクロックID列402、ユーザID列404、プロセスID列406、ウェイクロック実際持続時間列408、およびウェイクロック持続時間推定値列410を含む、指定されたタイプのウェイクロック情報を記憶する列402〜410として表されたいくつかのデータフィールドを含み得る。ウェイクロック情報テーブル400は、ウェイクロックID列402のウェイクロックIDによって指定された指定ウェイクロックに関して列402〜410のウェイクロック情報を相関付ける行412〜416として表されたいくつかのデータ記録を含み得る。
【００４２】
ウェイクロック情報テーブル400は、ウェイクロック要求およびウェイクロック事象中のプロセッサ活動の観測値から導出されたウェイクロック情報によりポピュレートされ得る。いくつかの実施形態では、行412〜416に対するウェイクロックID列402、ユーザID列404、プロセスID列406、ウェイクロック実際持続時間列408は、ウェイクロック要求および/またはウェイクロックIDに関連するウェイクロックに関するウェイクロック事象中のプロセッサ活動の観測値から導出されたウェイクロックID、ユーザID、プロセスID、およびウェイクロック時間パラメータを使用してポピュレートされ得る。いくつかの実施形態では、ウェイクロック実際持続時間列408は、ウェイクロック時間パラメータとしてウェイクロック情報に含まれる指定ウェイクロック持続時間によりポピュレートされ得る。いくつかの実施形態では、ウェイクロック実際持続時間列408は、ウェイクロック事象の開始時間および/または終了時間ならびにウェイクロック事象中のプロセッサ活動の観測値を含むウェイクロック時間パラメータから導出された計算済みウェイクロック持続時間によりポピュレートされ得る。
【００４３】
ウェイクロック持続時間推定値列410は、ウェイクロックIDに関連するウェイクロック事象持続時間の計算済みウェイクロック持続時間推定値によりポピュレートされ得る。様々な実施形態では、ウェイクロック持続時間推定値は、ウェイクロックIDに関してウェイクロック時間パラメータが利用不可能であるときに計算され得る。ウェイクロック持続時間推定値は、ウェイクロックIDに関連するウェイクロック事象中のプロセッサ活動の観測値に基づいて計算され得る。様々な実施形態では、ウェイクロック持続時間推定値列410は、ウェイクロックIDに関連する後続ウェイクロック事象に少なくとも部分的に基づいて更新され得る。ウェイクロック持続時間推定値は、ウェイクロックIDに関連する複数のウェイクロック事象に関して計算され得、ウェイクロック持続時間推定値列410は、現在のウェイクロック持続時間観測値/推定値および以前のウェイクロック持続時間観測値/推定値の一部または全部を使用するウェイクロック持続時間推定値の計算を使用して更新され得る。平均、中央値、指数加重移動平均などを含む、複数のウェイクロック持続時間観測値/推定値を使用してウェイクロック持続時間推定値を計算するために、様々な計算が使用され得る。様々な実施形態では、ウェイクロック持続時間推定値は、ランタイム分析に基づき得る。様々な実施形態では、ウェイクロック持続時間推定値は、オフライン分析に基づき得る。
【００４４】
図5は、一実施形態による例示的なウェイクロック持続時間推定を示す。同じウェイクロックIDに関連する様々なウェイクロック事象500a、500b、500cは、異なるタイミング特性を有し得る。様々なウェイクロック事象500a、500b、500cのタイミング特性は、ウェイクロックIDに関するウェイクロック持続時間推定値508を計算するために使用され得る。各ウェイクロック事象500a、500b、500cは、開始時間502a、502b、502c、持続時間504a、504b、504c、および終了時間506a、506b、506cを含み得る。開始時間502a、502b、502cはウェイクロックプロファイラによって、ウェイクロック要求を受信/検出/インターセプトすること、ウェイクロックについての承諾を示すウェイクロック入手信号を受信/検出/インターセプトすること、および/または「スリープ」から「アクティブ」へのプロセッサ状態の変化を観測することによって観測され得る。同様に、終了時間506a、506b、506cはウェイクロックプロファイラによって、ウェイクロックの失効を示すウェイクロック解放信号を受信/検出/インターセプトすること、および/または「アクティブ」から「スリープ」へのプロセッサ状態の変化を観測することによって観測され得る。持続時間504a、504b、504cはウェイクロックプロファイラによって、開始時間502a、502b、502cおよび終了時間506a、506b、506cの観測の間で経過した時間を測定または計算することによって測定または計算され得る。
【００４５】
図5に示す例は、ウェイクロック事象500aに関する持続時間504aが持続時間504a、504b、504cのうちで最も長いことがあり、ウェイクロック事象500bに関する持続時間504bが持続時間504a、504b、504cのうちで最も短いことがあり、ウェイクロック事象500cに関する持続時間504cが最も長いウェイクロック持続時間504aと最も短いウェイクロック持続時間504bとの間にあり得ることを比較的に示す。本例は、ウェイクロック持続時間推定値508が持続時間504a、504b、504cのいずれかに等しくなる可能性があるが、等しくなる必要はないことを示す。
【００４６】
図5の例は、ウェイクロック持続時間推定値508が持続時間504bよりも長く、持続時間504a、504cよりも短くなり得ることを示す。本明細書で説明するように、ウェイクロック持続時間推定値508は、様々な計算手段を使用して計算されてよく、持続時間504a、504b、504c、開始時間502a、502b、502c、および/または終了時間506a、506b、506cの一部または全部を使用してよい。様々な実施形態では、ウェイクロック持続時間推定値508は、以前のウェイクロック持続時間推定値ならびに持続時間504a、504b、504c、開始時間502a、502b、502c、および/または持続時間506a、506b、506cの一部または全部を使用して計算されてよい。ウェイクロック持続時間推定値508は、追加のウェイクロック事象とともに変化し得る。ウェイクロック持続時間推定値508は、サービスジョブスケジューラおよびドライバジョブ/カーネルレベルバックグラウンドジョブスケジューラによって準備完了ジョブのスケジューリングを制御するために使用され得る。
【００４７】
図6および図7は、一実施形態によるウェイクロックアンアウェアスケジューリングおよびウェイクロックアウェアスケジューリングの比較例を示す。図6および図7に示す例では、同じウェイクロック事象系列600が示されている。両方の例では、ウェイクロック事象系列600は、第1のウェイクロック事象670および第2のウェイクロック事象672を含む。第1のウェイクロック事象670は、ウェイクロック実際持続時間に関連するウェイクロックIDを有することができ、第2のウェイクロック事象672は、ウェイクロック持続時間推定値に関連するウェイクロックIDを有することができる。第1のウェイクロック事象670は、開始時間602、実際持続時間604、および実際終了時間606によって示され得る。第2のウェイクロック事象672は、開始時間608、推定持続時間610、および推定終了時間612によって示され得る。
【００４８】
図6に示す例は、ウェイクロックアンアウェアサービスジョブスケジュール620、ウェイクロックアンアウェアドライバジョブ/カーネルレベルバックグラウンドジョブスケジュール630、およびプロセッサ状態系列640をさらに含み得る。ウェイクロックアンアウェアサービスジョブスケジュール620およびウェイクロックアンアウェアドライバジョブ/カーネルレベルバックグラウンドジョブスケジュール630は、ウェイクロック事象670、672の持続時間を顧慮せずにスケジュールされ得るジョブ622、624、626、632、634を含み得る。この例では、ジョブ622、626、および632は、ウェイクロック事象670、672の外でスケジュールされ得る。
【００４９】
プロセッサ状態系列640は、様々なプロセッサ状態680〜688を含み得る。プロセッサ状態680〜688は、「アクティブ」状態680、684、688および「スリープ」状態682、686を含み得る。各プロセッサ状態680〜688は、遷移エッジ642、646、648、652、654、658および状態持続時間644、650、656、660、662によって示され得る。アクティブ状態680、684、688は、ウェイクロック事象670、672および/またはスケジュールされたジョブ622〜634によってトリガされ得る。図6の例は、ウェイクロック事象670に関する実際終了時間606およびアクティブ状態680からスリープ状態682への遷移エッジ646が一致しなくてよく、ウェイクロック事象672に関する推定終了時間612およびアクティブ状態684からスリープ状態686への遷移エッジ652が一致しなくてよく、アクティブ状態688と一致するウェイクロック事象がなくてよいことを示す。
【００５０】
図7に示す例は、ウェイクロックアウェアサービスジョブスケジュール700、ウェイクロックアウェアドライバジョブ/カーネルレベルバックグラウンドジョブスケジュール702、およびプロセッサ状態系列704をさらに含み得る。ウェイクロックアウェアサービスジョブスケジュール700およびウェイクロックアウェアドライバジョブ/カーネルレベルバックグラウンドジョブスケジュール702は、図6に示す例と同じジョブ622、624、626、632、634を含み得る。ただし、ウェイクロックアウェアスケジューリングのため、ジョブ622、624、626、632、634は、図7の例に示すウェイクロック事象670、672の持続時間と整合するようにスケジュールされ得る。この例では、ジョブ622、624、626、632、634は、ウェイクロック事象670、672内でスケジュールされ得る。
【００５１】
プロセッサ状態系列704は、様々なプロセッサ状態684、720〜724を含み得る。プロセッサ状態684、720〜724は、「アクティブ」状態684、720および「スリープ」状態722、724を含み得る。各プロセッサ状態684、720〜724は、遷移エッジ642、648、652、710および状態持続時間650、708、712、714によって示され得る。アクティブ状態684、720は、ウェイクロック事象670、672および/またはスケジュールされたジョブ622〜634によってトリガされ得る。図7の例は、ウェイクロック事象670に関する実際終了時間606およびアクティブ状態720からスリープ状態722への遷移エッジ710が一致してよく、ウェイクロック事象672に関する推定終了時間612およびアクティブ状態684からスリープ状態724への遷移エッジ652が一致しなくてよく、ウェイクロック事象と一致しないアクティブ状態がなくてよいことを示す。
【００５２】
図6および図7に示す例の比較は、ウェイクロックアウェアスケジューリング対ウェイクロックアンアウェアスケジューリングを使用するときに、アクティブ状態持続時間650、708がアクティブ状態持続時間644、650、656よりも累積的に少なくなり得ることを示す。結果として、スリープ状態持続時間712、714はスリープ状態持続時間660、662よりも累積的に多くなり得る。スリープ状態からアクティブ状態への遷移エッジ642、648の数は、スリープ状態からアクティブ状態への遷移エッジ642、648、654の数よりも累積的に少なくなり得る。したがって、ウェイクロックアウェアスケジューリングは、プロセッサがアクティブ状態で費やす時間を減らし、プロセッサがスリープ状態で費やす時間を増やし、プロセッサが行うスリープ状態からアクティブ状態への遷移の数を減らすことによって、同じジョブ622、624、626、632、634に関してウェイクロックアンアウェアスケジューリングと比べて電力上の利益をもたらし得る。ウェイクロック事象672に関する推定終了時間612およびアクティブ状態684からスリープ状態724への遷移エッジ652が一致しないときでも、ジョブ626がウェイクロック事象672中に実行され、アクティブ状態688の必要がなくなり得るので、電力上の利益が実現され得る。
【００５３】
図8は、一実施形態によるウェイクロック持続時間推定のための方法800を示す。方法800はコンピューティングデバイスにおいて、プロセッサ(たとえば、図1、図2、および図3Cのプロセッサ14)において実行されるソフトウェア(たとえば、図3A〜図3Cの電力マネージャ302およびウェイクロックプロファイラ304)において、汎用ハードウェアにおいて、専用ハードウェア(たとえば、図3A〜図3Cの電力マネージャ302およびウェイクロックプロファイラ304)において、またはプロセッサと専用ハードウェアとの組合せ、たとえば、他の個々の構成要素を含むウェイクロックアウェアスケジューリングシステム内のソフトウェアを実行するプロセッサにおいて実施され得る。様々な実施形態において可能な代替構成を包含するために、方法800を実施するハードウェアは、本明細書では「処理デバイス」と呼ばれる。
【００５４】
ブロック802において、処理デバイスは、アプリケーションからのウェイクロック要求を検出/受信/インターセプトし得る。処理デバイスは、ウェイクロック要求の通信経路を監視するように構成されてよく、またはウェイクロック要求の通信経路に位置してよい。
【００５５】
ブロック804において、処理デバイスは、ウェイクロック要求に関連するウェイクロックに関するウェイクロック情報を入手し得る。ウェイクロック情報は、ウェイクロックID、ユーザID、プロセスID、および/または実際持続時間を含み得る。処理デバイスはウェイクロック情報を、ウェイクロック要求とともに送られたウェイクロック情報から、プロセッサのためにウェイクロックを実施するために使用されるキャッシュレジスタおよびバッファなどのメモリデバイスからそれを取り出すことによって入手し得る。少なくともウェイクロックIDを取り出しているので、処理デバイスは、ウェイクロック情報データ構造(たとえば、図4のウェイクロック情報テーブル400)からウェイクロックIDに関連する他のウェイクロック情報を取り出し得る。
【００５６】
判断ブロック806において、処理デバイスは、ウェイクロック情報がウェイクロック時間パラメータを含むかどうかを判断し得る。したがって、806において処理デバイスは、ウェイクロック実際持続時間またはウェイクロック開始時間とウェイクロック終了時間の両方など、ウェイクロックの持続時間を識別し、かつ/またはその計算を有効化する情報をウェイクロック情報が含むかどうかを判断し得る。
【００５７】
ウェイクロック情報がウェイクロック時間パラメータを含まないとの判断(すなわち、判断ブロック806=「No」)に応答して、処理デバイスは、ブロック808においてウェイクロック持続時間を測定または計算し得る。処理デバイスは、ウェイクロックシグナリングの承諾および解放ならびに/もしくはウェイクロック要求に対応するプロセッサ活動を含む、ウェイクロック要求の観測値から、かつ/またはウェイクロック開始時間およびウェイクロック終了時間の一方もしくは他方を含む単一のウェイクロック時間パラメータから、ウェイクロック持続時間を測定または計算し得る。処理デバイスは、ウェイクロックシグナリングの承諾および解放、ウェイクロック要求に対応するアクティブ状態とスリープ状態との間のプロセッサの遷移、ならびに/またはウェイクロック開始時間もしくはウェイクロック終了時間に基づくウェイクロックの持続時間の測定を開始および終了し得る。処理デバイスは、ウェイクロックシグナリングの承諾および解放の時間、ウェイクロック要求に対応するアクティブ状態とスリープ状態との間のプロセッサの遷移、ならびに/またはウェイクロック開始時間もしくはウェイクロック終了時間に基づいて、ウェイクロックの持続時間を計算し得る。
【００５８】
ブロック810において、処理デバイスは、処理デバイスが測定または計算したウェイクロック持続時間を記憶し得る。処理デバイスはウェイクロック持続時間を、複数のウェイクロック持続時間に基づいてウェイクロック持続時間を推定するためなど、後の取出しのために、汎用または専用の揮発性または不揮発性メモリ(たとえば、図1のメモリ16、24)に記憶し得る。
【００５９】
ブロック812において、処理デバイスは、複数の記憶されたウェイクロック持続時間を使用してウェイクロック持続時間推定値を計算し得る。様々な実施形態では、複数の記憶されたウェイクロック持続時間は、以前のウェイクロック持続時間推定値によって具現化され得、ウェイクロック持続時間推定値の計算は、以前のウェイクロック持続時間推定値および1つまたは複数の最近の記憶されたウェイクロック持続時間を使用することを含み得る。様々な実施形態では、ウェイクロック持続時間推定値を計算することは、平均、中央値、指数加重移動平均などを計算することなど、計算するための様々な技法を使用することを含み得る。
【００６０】
ブロック814において、処理デバイスは、対応するウェイクロックID(すなわち、対応するウェイクロック事象のID)とともにウェイクロック情報データ構造にウェイクロック持続時間推定値を記憶し得る。ウェイクロック持続時間推定値は、ウェイクロック情報データ構造に記憶され得る。たとえば、処理デバイスはウェイクロック持続時間推定値を、関連ウェイクロックIDならびにユーザIDおよび/またはプロセスIDを含むウェイクロック情報に推定値を関連付ける方法でメモリに記憶し得る。いくつかの実施形態では、ブロック802〜814における動作は、関連ウェイクロックIDに関するウェイクロック持続時間推定値を作成するためのオフラインおよび/またはランタイム分析のために実行され得る。
【００６１】
ウェイクロック情報がウェイクロック時間パラメータを含むとの判断(すなわち、判断ブロック806=「Yes」)に応答して、処理デバイスは随意のブロック816において、ウェイクロック開始時間およびウェイクロック終了時間などのウェイクロック時間パラメータからウェイクロック持続時間を随意に計算し得る。処理デバイスにとって利用可能なウェイクロック実際持続時間がなければ、デバイスは、ウェイクロック実際持続時間を決定するためにウェイクロック開始時間およびウェイクロック終了時間を使用し得る。
【００６２】
ブロック818において、処理デバイスは、ウェイクロック実際持続時間を記憶し得る。様々な実施形態では、処理デバイスはウェイクロック実際持続時間を、ウェイクロック要求に関連するウェイクロック事象中に使用するためにメモリ(たとえば、図1のメモリ16、24)に記憶し得る。ウェイクロック実際持続時間は、対応するウェイクロックIDとともにウェイクロック情報データ構造に記憶され得る。たとえば、処理デバイスはウェイクロック実際持続時間を、関連ウェイクロックID、ユーザIDおよび/またはプロセスIDを含む対応するウェイクロック情報に持続時間を関連付ける方法で記憶し得る。
【００６３】
図9は、一実施形態によるウェイクロックアウェアスケジューリングのための方法900を示す。方法900はコンピューティングデバイスにおいて、プロセッサ(たとえば、図1、図2、および図3Cのプロセッサ14)において実行されるソフトウェア(たとえば、図3A〜図3Cの電力マネージャ302およびウェイクロックプロファイラ304)において、汎用ハードウェアにおいて、専用ハードウェア(たとえば、図3A〜図3Cの電力マネージャ302およびウェイクロックプロファイラ304)において、またはプロセッサと専用ハードウェアとの組合せ、たとえば、他の個々の構成要素を含むウェイクロックアウェアスケジューリングシステム内のソフトウェアを実行するプロセッサにおいて実施され得る。様々な実施形態において可能な代替構成を包含するために、方法900を実施するハードウェアは、本明細書では「処理デバイス」と呼ばれる。
【００６４】
ブロック902において、処理デバイスは、アプリケーションからのウェイクロック要求を検出/受信/インターセプトし得る。処理デバイスは、ウェイクロック要求の通信経路を監視するように構成されてよく、またはウェイクロック要求の通信経路に位置してよい。
【００６５】
ブロック904において、処理デバイスは、ウェイクロック要求に関連するウェイクロックに関するウェイクロック情報を入手し得る。ウェイクロック情報は、ウェイクロックID、ユーザID、プロセスID、ならびに/またはウェイクロック時間パラメータ(たとえば、ウェイクロック持続時間、ウェイクロック持続時間推定値、ウェイクロック開始時間および/もしくはウェイクロック終了時間のうちの1つもしくは複数)を含み得る。処理デバイスはウェイクロック情報を、ウェイクロック要求とともに送られたウェイクロック情報から、プロセッサのためにウェイクロックを実施するために使用されるキャッシュレジスタおよびバッファなどのメモリデバイスからそれを取り出すことによって入手し得る。少なくともウェイクロックIDを取り出しているので、処理デバイスは、ウェイクロック持続時間推定値を含め、ウェイクロック情報データ構造(たとえば、図4のウェイクロック情報テーブル400)からウェイクロックIDに関連する他のウェイクロック情報を取り出し得る。
【００６６】
ブロック906において、処理デバイスは、1つまたは複数のスケジューラ(たとえば、図3A〜図3Cのサービスジョブスケジューラ306、ドライバジョブ/カーネルレベルバックグラウンドジョブスケジューラ308)にヒントを送り得る。ヒントは、要求されたウェイクロックに関するウェイクロック時間パラメータおよび/またはウェイクロック持続時間推定値を含み得る、ヒントウェイクロック時間パラメータを含み得る。要求されたウェイクロックは、次のまたは既存のウェイクロックであり得る。
【００６７】
ブロック908において、処理デバイスはスケジューラから、準備完了ジョブをスケジュールすることの許可を求める要求を受信し得る。準備完了ジョブは、ウェイクロック事象中に実行されるのを待っているジョブを含み得る。ヒントを受信すると、スケジューラは、図10に示される方法1000を参照してさらに説明するように、実行する準備完了ジョブを選択し、選択された準備完了ジョブをスケジュールすることの許可を求める要求を送り得る。準備完了ジョブをスケジュールすることの許可を求める要求は、選択された準備完了ジョブの各々、グループ、および/もしくはすべてのプロセッサ使用に関する推定値、ならびに/または選択された準備完了ジョブの各々、グループ、および/もしくはすべてに関する識別子を含み得る。
【００６８】
判断ブロック910では、処理デバイスは、選択された準備完了ジョブを含む全作業負荷が全プロセッサ使用しきい値を上回るかどうかを判断し得る。
【００６９】
全作業負荷が全プロセッサ使用しきい値を上回らないとの判断(すなわち、判断ブロック910=「No」)に応答して、処理デバイスは、ブロック912においてスケジューラに、選択された準備完了ジョブをスケジュールすることの許可を求める要求の承認を送り得る。
【００７０】
全作業負荷が全プロセッサ使用しきい値を上回るとの判断(すなわち、判断ブロック910=「Yes」)に応答して、処理デバイスは、随意のブロック914において、全作業負荷を全プロセッサ使用しきい値未満に低減する準備完了ジョブの組合せを選択し得る。処理デバイスは、準備完了ジョブの組合せを選択するために、選択された準備完了ジョブをスケジュールすることの許可を求める要求の情報を使用し得る。
【００７１】
随意のブロック916において、処理デバイスはスケジューラに、処理デバイスによって選択された準備完了ジョブの組合せをスケジュールすることの許可の承認を送り得る。
【００７２】
ブロック918において、処理デバイスはスケジューラに、準備完了ジョブをスケジュールすることの許可を求める要求の拒絶を送り得る。様々な実施形態では、準備完了ジョブをスケジュールすることの許可を求める要求の拒絶は、スケジューラによって選択された準備完了ジョブのすべて、または準備完了ジョブの組合せのために処理デバイスによって選択されていない準備完了ジョブのみを含み得る。
【００７３】
図10は、一実施形態によるウェイクロックアウェアスケジューリングのための方法1000を示す。方法1000はコンピューティングデバイスにおいて、プロセッサ(たとえば、図1、図2、および図3Cのプロセッサ14)において実行されるソフトウェア(たとえば、図3A〜図3Cのサービスジョブスケジューラ306およびドライバジョブ/カーネルレベルバックグラウンドジョブスケジューラ308)において、汎用ハードウェアにおいて、専用ハードウェア(たとえば、図3A〜図3Cのサービスジョブスケジューラ306およびドライバジョブ/カーネルレベルバックグラウンドジョブスケジューラ308)において、またはプロセッサと専用ハードウェアとの組合せ、たとえば、他の個々の構成要素を含むウェイクロックアウェアスケジューリングシステム内のソフトウェアを実行するプロセッサにおいて実施され得る。様々な実施形態において可能な代替構成を包含するために、方法1000を実施するハードウェアは、本明細書では「処理デバイス」と呼ばれる。
【００７４】
ブロック1002において、処理デバイスは、ウェイクロックプロファイラからヒントを受信し得る。ヒントは、要求されたウェイクロックに関するウェイクロック時間パラメータおよび/またはウェイクロック持続時間推定値を含み得る、ヒントウェイクロック時間パラメータを含み得る。要求されたウェイクロックは、次のまたは既存のウェイクロックであり得る。
【００７５】
ブロック1004において、処理デバイスは、要求されたウェイクロックに関連するウェイクロック事象中に実行され得る準備完了ジョブを選択し得る。処理デバイスは、ウェイクロック要求に関連するウェイクロック事象の持続時間中に準備完了ジョブが実行を完了させ得るかどうかを判断するために、準備完了ジョブの実行の推定持続時間を、ヒントとともに受信されたヒントウェイクロック時間パラメータと比較し得る。処理デバイスは、ウェイクロック要求に関連するウェイクロック事象の持続時間中に実行を完了させ得る準備完了ジョブを選択し得る。
【００７６】
判断ブロック1006では、処理デバイスは、選択された準備完了ジョブが全体でプロセッサ使用しきい値を上回るかどうかを判断し得る。処理デバイスは、準備完了ジョブがプロセッサ使用しきい値を累積的に上回るかどうかを判断するために、準備完了ジョブの実行の推定プロセッサ使用をプロセッサ使用しきい値と比較し得る。
【００７７】
選択された準備完了ジョブが全体でプロセッサ使用しきい値を上回るとの判断(すなわち、判断ブロック1006=「Yes」)に応答して、処理デバイスはブロック1004において、要求されたウェイクロックに関連するウェイクロック事象中に実行され得る準備完了ジョブを選択し得る。ブロック1004における動作の繰り返される実行を介して、処理デバイスは、選択された準備完了ジョブに関する推定プロセッサ使用全体を追跡し、以前の選択された準備完了ジョブからの推定プロセッサ使用全体の低減にもなる、要求されたウェイクロックに関連するウェイクロック事象中に実行され得る準備完了ジョブを選択し得る。準備完了ジョブの後の方の選択は、要求されたウェイクロックに関連するウェイクロック事象中の実行のために以前選択された準備完了ジョブを含み得る。
【００７８】
選択された準備完了ジョブが全体でプロセッサ使用しきい値を上回らないとの判断(すなわち、判断ブロック1006=「No」)に応答して、処理デバイスは、ブロック1008においてウェイクロックプロファイラに、選択された準備完了ジョブをスケジュールすることの許可を求める要求を送り得る。図9に示す方法900を参照して上記で説明したように、ウェイクロックプロファイラは、選択された準備完了ジョブをスケジュールすることの許可を求める要求に、選択された準備完了ジョブをスケジュールすることの許可を求める要求の完全もしくは部分承認および/または拒絶で応答するかどうかを決定し得る。
【００７９】
ブロック1010において、処理デバイスはウェイクロックプロファイラから、選択された準備完了ジョブをスケジュールすることの許可を求める要求への応答を受信し得る。応答は、スケジュールすることの許可が承認および/または拒絶されている、選択された準備完了ジョブの個々の1つ、グループ、またはすべての識別情報を含み得る。
【００８０】
判断ブロック1012において、処理デバイスは、選択された準備完了ジョブをスケジュールすることの許可を求める要求への応答が、選択された準備完了ジョブをスケジュールすることの許可を求める要求の承認および/または拒絶を含むかどうかを判断し得る。様々な実施形態では、処理デバイスは、応答が、選択された準備完了ジョブをスケジュールすることの許可を求める要求の承認、拒絶または承認および拒絶を含むと判断し得る。
【００８１】
選択された準備完了ジョブをスケジュールすることの許可を求める要求への応答が、選択された準備完了ジョブをスケジュールすることの許可を求める要求の承認を含むとの判断(すなわち、判断ブロック1012=「Yes」)に応答して、処理デバイスはブロック1014において、ウェイクロック要求に関連するウェイクロック事象中に実行するように、承認された準備完了タスクをスケジュールし得る。
【００８２】
選択された準備完了ジョブをスケジュールすることの許可を求める要求への応答が、選択された準備完了ジョブをスケジュールすることの許可を求める要求の拒絶を含むとの判断(すなわち、判断ブロック1012=「No」)に応答して、処理デバイスはブロック1004において、要求されたウェイクロックに関連するウェイクロック事象中に実行され得る準備完了ジョブの異なるセットを選択し得る。
【００８３】
選択された準備完了ジョブをスケジュールすることの許可を求める要求への応答が、選択された準備完了ジョブをスケジュールすることの許可を求める要求の承認および拒絶を含むとの判断(すなわち、判断ブロック1012=「Yes」および「No」)に応答して、処理デバイスは、ブロック1014において、ウェイクロック要求に関連するウェイクロック事象中に実行するように、承認された準備完了タスクをスケジュールし、ブロック1004において、要求されたウェイクロックに関連するウェイクロック事象中に実行され得る準備完了ジョブの異なるセットを選択し得る。
【００８４】
様々な実施形態では、図8に示す方法800、図9に示す方法900、および図10に示す方法1000は、協調的に同時に実行され得る。
【００８５】
(限定はしないが、図1〜図10を参照して上記で説明した実施形態を含む)様々な実施形態は、モバイルコンピューティングデバイスを含む多種多様なコンピューティングシステムにおいて実装されてよく、様々な実施形態とともに使用するのに適したモバイルコンピューティングデバイスの一例が図11に示されている。モバイルコンピューティングデバイス1100は、タッチスクリーンコントローラ1104および内部メモリ1106に結合されたプロセッサ1102を含み得る。プロセッサ1102は、汎用または特定の処理タスクに指定された1つまたは複数のマルチコア集積回路であってもよい。内部メモリ1106は、揮発性メモリまたは不揮発性メモリであってもよく、またセキュアおよび/もしくは暗号化メモリ、または非セキュアおよび/もしくは非暗号化メモリ、あるいはそれらの任意の組合せであってもよい。活用されてもよいメモリタイプの例には、限定はしないが、DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM、および埋め込みDRAMが含まれる。タッチスクリーンコントローラ1104およびプロセッサ1102は、抵抗感知タッチスクリーン、容量感知タッチスクリーン、赤外線感知タッチスクリーンなどのタッチスクリーンパネル1112に結合されてもよい。追加として、コンピューティングデバイス1100のディスプレイは、タッチスクリーン機能を有する必要がない。
【００８６】
モバイルコンピューティングデバイス1100は、互いに結合され、かつ/またはプロセッサ1102に結合された、通信を送信および受信するための1つまたは複数の無線信号トランシーバ1108(たとえば、Peanut、Bluetooth(登録商標)、Zigbee、Wi-Fi、RF無線など)およびアンテナ1110を有する場合がある。トランシーバ1108およびアンテナ1110は、様々なワイヤレス送信プロトコルスタックおよびインターフェースを実装するために、上述の回路とともに使用され得る。モバイルコンピューティングデバイス1100は、セルラーネットワークを経由した通信を可能にするとともにプロセッサに結合されているセルラーネットワークワイヤレスモデムチップ1116を含み得る。
【００８７】
モバイルコンピューティングデバイス1100は、プロセッサ1102に結合された周辺デバイス接続インターフェース1118を含んでもよい。周辺デバイス接続インターフェース1118は、1つのタイプの接続を受け入れるように単独で構成されてよく、またはユニバーサルシリアルバス(USB)、FireWire、Thunderbolt、もしくはPCIeなどの、一般的もしくはプロプライエタリな様々なタイプの物理接続および通信接続を受け入れるように構成されてもよい。周辺デバイス接続インターフェース1118はまた、同様に構成された周辺デバイス接続ポート(図示せず)に結合されてよい。
【００８８】
モバイルコンピューティングデバイス1100はまた、オーディオ出力を提供するためのスピーカー1114を含み得る。モバイルコンピューティングデバイス1100はまた、本明細書で説明する構成要素の全部または一部を収容するための、プラスチック、金属、または材料の組合せから構成されたハウジング1120を含み得る。モバイルコンピューティングデバイス1100は、使い捨てまたは充電可能なバッテリーなどの、プロセッサ1102に結合された電源1122を含む場合もある。充電可能なバッテリーは、モバイルコンピューティングデバイス1100の外部にある電源から充電電流を受けるために、周辺デバイス接続ポートに結合される場合もある。モバイルコンピューティングデバイス1100はまた、ユーザ入力を受け取るための物理ボタン1124を含んでもよい。モバイルコンピューティングデバイス1100は、モバイルコンピューティングデバイス1100をオンオフするための電源ボタン1126を含んでもよい。
【００８９】
(限定はしないが、図1〜図10を参照して上記で説明した実施形態を含む)様々な実施形態は、ラップトップコンピュータ1200を含む様々な多種多様なコンピューティングシステムにおいて実装されよく、ラップトップコンピュータ1200の一例が図12に示されている。多くのラップトップコンピュータは、コンピュータのポインティングデバイスとして働くタッチパッドのタッチ面1217を含み、したがって、タッチスクリーンディスプレイを装備した上述のコンピューティングデバイス上で実装されるものと同様のドラッグジェスチャ、スクロールジェスチャ、およびフリックジェスチャを受け取ることができる。ラップトップコンピュータ1200は通常、揮発性メモリ1212およびフラッシュメモリのディスクドライブ1213などの大容量不揮発性メモリに結合されたプロセッサ1211を含む。加えて、コンピュータ1200は、プロセッサ1211に結合されたワイヤレスデータリンクおよび/またはセルラー電話トランシーバ1216に接続され得る、電磁放射を送信および受信するための1つまたは複数のアンテナ1208を有し得る。コンピュータ1200はまた、プロセッサ1211に結合された、フロッピーディスクドライブ1214およびコンパクトディスク(CD)ドライブ1215も含み得る。ノートブック構成では、コンピュータハウジングは、すべてがプロセッサ1211に結合された、タッチパッド1217、キーボード1218、およびディスプレイ1219を含む。コンピューティングデバイスの他の構成はよく知られているように、(たとえば、USB入力を介して)プロセッサに結合されたコンピュータマウスまたはトラックボールを含んでよく、それらはまた、様々な実施形態とともに使用されてもよい。
【００９０】
(限定はしないが、図1〜図10を参照して上記で説明した実施形態を含む)様々な実施形態は、様々な市販のサーバのうちのいずれかなど、固定コンピューティングシステムにおいて実装されてもよい。例示的なサーバ1300が、図13に示されている。そのようなサーバ1300は、通常、揮発性メモリ1302およびディスクドライブ1304などの大容量不揮発性メモリに結合された1つまたは複数のマルチコアプロセッサアセンブリ1301を含む。図13に示すように、マルチコアプロセッサアセンブリ1301は、それらをアセンブリのラックに挿入することによって、サーバ1300に追加され得る。サーバ1300はまた、プロセッサ1301に結合されたフロッピーディスクドライブ、コンパクトディスク(CD)、またはデジタル多用途ディスク(DVD)ディスクドライブ1306を含んでもよい。サーバ1300はまた、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワーク、インターネット、公衆交換電話網、ならびに/またはセルラーデータネットワーク(たとえば、CDMA、TDMA、GSM(登録商標)、PCS、3G、4G、LTE、もしくは任意の他のタイプのセルラーデータネットワーク)など、ネットワーク1305とのネットワークインターフェース接続を確立するための、マルチコアプロセッサアセンブリ1301に結合されたネットワークアクセスポート1303を含み得る。
【００９１】
様々な実施形態の動作を実行するためのプログラマブルプロセッサ上での実行のためのコンピュータプログラムコードまたは「プログラムコード」は、C、C++、C#、Smalltalk、Java(登録商標)、JavaScript(登録商標)、Visual Basic、Structured Query Language(たとえば、Transact-SQL)、Perlなどの高水準プログラミング言語または様々な他のプログラミング言語で記述され得る。本出願で使用するコンピュータ可読記憶媒体上に記憶されたプログラムコードまたはプログラムは、そのフォーマットがプロセッサによって理解可能である(オブジェクトコードなどの)機械語コードを指し得る。
【００９２】
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供されており、様々な実施形態の動作が提示された順序で実行されなければならないことを要求または暗示するものではない。当業者によって理解されるように、上述の実施形態における動作の順序は、任意の順序で実行され得る。「その後」、「次いで」、「次に」などの単語は、動作の順序を限定するものではなく、これらの単語は単に、方法の説明を通して読者を導くために使用される。さらに、たとえば、冠詞「a」、「an」または「the」を使用する、単数形での請求項要素へのいかなる言及も、その要素を単数形に限定するものとして解釈されるべきではない。様々な実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズム動作は、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装されてもよい。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、および動作について、上記では概してそれらの機能に関して説明した。そのような機能がハードウェアまたはソフトウェアのどちらとして実装されるのかは、特定の適用例と、システム全体に課せられる設計制約とに依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装してもよいが、そのような実装決定は、特許請求の範囲からの逸脱を引き起こすものとして解釈されるべきではない。
【００９３】
本明細書で開示する実施形態に関して説明した様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲート論理もしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。汎用プロセッサはマイクロプロセッサであってよいが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であってよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。代替的に、いくつかの動作または方法は、所与の機能に特有の回路によって実行され得る。
【００９４】
1つまたは複数の実施形態では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアにおいて実装される場合、機能は、1つまたは複数の命令またはコードとして、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体上に記憶されてもよい。本明細書で開示する方法またはアルゴリズムの動作は、非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体上に存在する場合があるプロセッサ実行可能ソフトウェアモジュールにおいて具現化されてもよい。非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされる場合がある任意の記憶媒体であってもよい。限定ではなく例として、そのような非一時的コンピュータ可読媒体またはプロセッサ可読媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用される場合があり、かつコンピュータによってアクセスされる場合がある任意の他の媒体を含んでもよい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびBlu-ray(登録商標)ディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読媒体およびプロセッサ可読媒体の範囲に含まれる。追加として、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る非一時的プロセッサ可読媒体および/または非一時的コンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せもしくはセットとして存在し得る。
【００９５】
開示した実施形態の前述の説明は、任意の当業者が特許請求の範囲を製作または使用することを可能にするために提供される。これらの実施形態への様々な修正が当業者には容易に明らかになり、本明細書において定義される一般原理は、特許請求の範囲から逸脱することなく他の実施形態および実装形態に適用され得る。したがって、本開示は、本明細書で説明した実施形態および実装形態に限定されることが意図されるものではなく、本明細書で開示した特許請求の範囲、および原理、ならびに新規の特徴と一致する最も広い範囲が与えられるべきである。
【符号の説明】
【００９６】
10  コンピューティングデバイス
12  システムオンチップ(SoC)
14  プロセッサ、マルチコアプロセッサ
16  メモリ、メモリデバイス
18  通信インターフェース
20  ストレージメモリインターフェース
22  通信構成要素
24  ストレージメモリ、メモリ
26  アンテナ
200  プロセッサコア
201  プロセッサコア
202  プロセッサコア
203  プロセッサコア
300a〜300c  ウェイクロックアウェアスケジューリングシステム
302  電力マネージャ
304  ウェイクロックプロファイラ
306  サービスジョブスケジューラ
308  ドライバジョブ/カーネルレベルバックグラウンドジョブスケジューラ
400  ウェイクロック情報テーブル
402  ウェイクロックID列
404  ユーザID列
406  プロセスID列
408  ウェイクロック実際持続時間列
410  ウェイクロック持続時間推定値列
402〜410  列
412〜416  行
500a  ウェイクロック事象
500b  ウェイクロック事象
500c  ウェイクロック事象
502a  開始時間
502b  開始時間
502c  開始時間
504a  持続時間、ウェイクロック持続時間
504b  持続時間
504c  持続時間、ウェイクロック持続時間
506a  終了時間
506b  終了時間
506c  終了時間
508  ウェイクロック持続時間推定値
600  ウェイクロック事象系列
602  開始時間
604  実際持続時間
606  実際終了時間
608  開始時間
610  推定持続時間
612  推定終了時間
620  ウェイクロックアンアウェアサービスジョブスケジュール
622  ジョブ
624  ジョブ
626  ジョブ
630  ウェイクロックアンアウェアドライバジョブ/カーネルレベルバックグラウンドジョブスケジュール
632  ジョブ
634  ジョブ
640  プロセッサ状態系列
642  遷移エッジ
644  状態持続時間、アクティブ状態持続時間
646  遷移エッジ
648  遷移エッジ
650  状態持続時間、アクティブ状態持続時間
652  遷移エッジ
654  遷移エッジ
656  状態持続時間、アクティブ状態持続時間
658  遷移エッジ
660  状態持続時間、スリープ状態持続時間
662  状態持続時間、スリープ状態持続時間
670  第1のウェイクロック事象、ウェイクロック事象
672  第2のウェイクロック事象、ウェイクロック事象
680〜688  プロセッサ状態
680  「アクティブ」状態
682  「スリープ」状態
684  「アクティブ」状態、プロセッサ状態
686  「スリープ」状態
688  「アクティブ」状態
700  ウェイクロックアウェアサービスジョブスケジュール
702  ウェイクロックアウェアドライバジョブ/カーネルレベルバックグラウンドジョブスケジュール
704  プロセッサ状態系列
708  状態持続時間、アクティブ状態持続時間
710  遷移エッジ
712  状態持続時間、スリープ状態持続時間
714  状態持続時間、スリープ状態持続時間
720〜724  プロセッサ状態
720  「アクティブ」状態
722  「スリープ」状態
724  「スリープ」状態
800  方法
900  方法
1000  方法
1100  モバイルコンピューティングデバイス
1102  プロセッサ
1104  タッチスクリーンコントローラ
1106  内部メモリ
1108  無線信号トランシーバ、トランシーバ
1110  アンテナ
1112  タッチスクリーンパネル
1114  スピーカー
1116  セルラーネットワークワイヤレスモデムチップ
1118  周辺デバイス接続インターフェース
1120  ハウジング
1122  電源
1124  物理ボタン
1126  電源ボタン
1200  ラップトップコンピュータ、コンピュータ
1208  アンテナ
1211  プロセッサ
1212  揮発性メモリ
1213  ディスクドライブ
1214  フロッピーディスクドライブ
1215  コンパクトディスク(CD)ドライブ
1216  ワイヤレスデータリンクおよび/またはセルラー電話トランシーバ
1217  タッチパッドのタッチ面、タッチパッド
1218  キーボード
1219  ディスプレイ
1300  サーバ
1301  マルチコアプロセッサアセンブリ、プロセッサ
1302  揮発性メモリ
1303  ネットワークアクセスポート
1304  ディスクドライブ
1305  ネットワーク
1306  フロッピーディスクドライブ、コンパクトディスク(CD)、またはデジタル多用途ディスク(DVD)ディスクドライブ
【図１】
2019527867.tif 000003
【図２】
2019527867.tif 000004
【図３Ａ】
2019527867.tif 000005
【図３Ｂ】
2019527867.tif 000006
【図３Ｃ】
2019527867.tif 000007
【図４】
2019527867.tif 000008
【図５】
2019527867.tif 000009
【図６】
2019527867.tif 000010
【図７】
2019527867.tif 000011
【図８】
2019527867.tif 000012
【図９】
2019527867.tif 000013
【図１０】
2019527867.tif 000014
【図１１】
2019527867.tif 000015
【図１２】
2019527867.tif 000016
【図１３】
2019527867.tif 000017
【手続補正書】
【提出日】平成30年12月19日(2018.12.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティングデバイス上でウェイクロックアウェアスケジューリングを実施する方法であって、
ウェイクロックプロファイラによってウェイクロック要求をアプリケーションから受信するステップと、
前記ウェイクロックプロファイラによって、前記ウェイクロック要求に関連するウェイクロック事象のウェイクロック情報を入手するステップであって、前記ウェイクロック情報は、前記ウェイクロック事象の期間に関連するウェイクロック時間パラメータを含む、ステップと、
前記ウェイクロックプロファイラによって、前記ウェイクロック時間パラメータを含むヒントを送るステップと、
スケジューラによって前記ヒントを受信するステップと、
前記スケジューラによって、第1の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと、
前記スケジューラによって、前記第1の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める要求を送るステップと
を含む方法。
【請求項２】
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求は、前記第1の準備完了ジョブに関するプロセッサ使用の推定値を含み、前記方法は、
前記ウェイクロックプロファイラによって、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を受信するステップと、
前記ウェイクロックプロファイラによって、前記第1の準備完了ジョブを含む作業負荷が全プロセッサ使用しきい値を上回るかどうかを判断するステップと、
前記ウェイクロックプロファイラによって、前記作業負荷が前記全プロセッサ使用しきい値を上回るとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の拒絶を送るステップと、
前記ウェイクロックプロファイラによって、前記作業負荷が前記全プロセッサ使用しきい値を上回らないとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の承認を送るステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記スケジューラによって、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の前記拒絶を受信するステップと、
前記スケジューラによって、第2の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと、
前記スケジューラによって、前記第2の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールすることの許可を求める要求を送るステップと、
前記スケジューラによって、前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールすることの許可を求める前記要求の前記承認を受信するステップと、
前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールするステップと
をさらに含む、請求項2に記載の方法。
【請求項４】
前記スケジューラによって、前記第1の準備完了ジョブがプロセッサ使用しきい値を上回るかどうかを判断し、前記第1の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、かつ前記第1の準備完了ジョブが前記プロセッサ使用しきい値を上回らないとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を送るステップと、
前記スケジューラによって、第2の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと
をさらに含む、請求項1に記載の方法。
【請求項５】
前記ウェイクロックプロファイラによって、前記ウェイクロック情報がウェイクロック時間パラメータを含むかどうかを判断するステップと、
前記ウェイクロックプロファイラによって、前記ウェイクロック情報が前記ウェイクロック時間パラメータを含まないとの判断に応答して、前記ウェイクロック事象に関するウェイクロック持続時間推定値を計算するステップと、
前記ウェイクロックプロファイラによって、前記ウェイクロック持続時間推定値を記憶するステップと
をさらに含む、請求項1に記載の方法。
【請求項６】
前記ウェイクロック持続時間推定値を記憶するステップは、
前記ウェイクロック持続時間推定値を、前記ウェイクロック要求に関連する前記ウェイクロック事象のウェイクロック識別子(ID)と相関付けるステップと、
前記ウェイクロック持続時間推定値を、対応するウェイクロックIDとともにウェイクロック情報データ構造に記憶するステップと
を含み、
前記ウェイクロック情報を入手するステップは、前記ウェイクロック情報データ構造から前記ウェイクロック持続時間推定値を取り出すステップを含む、請求項5に記載の方法。
【請求項７】
前記ウェイクロック事象に関する前記ウェイクロック持続時間推定値を計算するステップは、前記ウェイクロック事象に関する複数のウェイクロック持続時間を使用して、前記ウェイクロック事象に関する前記ウェイクロック持続時間推定値を計算するステップを含む、請求項5に記載の方法。
【請求項８】
前記複数のウェイクロック持続時間は、複数のウェイクロック持続時間推定値、複数のウェイクロック持続時間観測値、または複数のウェイクロック持続時間推定値およびウェイクロック持続時間観測値を含む、請求項7に記載の方法。
【請求項９】
コンピューティングデバイス上でウェイクロックアウェアスケジューリングを実施するように構成されたウェイクロックアウェアシステムであって、
ウェイクロック要求をアプリケーションから受信するステップと、
前記ウェイクロック要求に関連するウェイクロック事象のウェイクロック情報を入手するステップであって、前記ウェイクロック情報は、前記ウェイクロック事象の期間に関連するウェイクロック時間パラメータを含む、ステップと、
前記ウェイクロック時間パラメータを含むヒントを送るステップと
を含む動作を実行するように構成されたウェイクロックプロファイラと、
前記ウェイクロックプロファイラに通信可能に接続されるスケジューラであって、
前記ヒントを受信するステップと、
第1の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと、
前記第1の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める要求を送るステップと
を含む動作を実行するように構成されたスケジューラと
を含むウェイクロックアウェアシステム。
【請求項１０】
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求は、前記第1の準備完了ジョブに関するプロセッサ使用の推定値を含み、
前記ウェイクロックプロファイラは、
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を受信するステップと、
前記第1の準備完了ジョブを含む作業負荷が全プロセッサ使用しきい値を上回るかどうかを判断するステップと、
前記作業負荷が前記全プロセッサ使用しきい値を上回るとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の拒絶を送るステップと、
前記作業負荷が前記全プロセッサ使用しきい値を上回らないとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の承認を送るステップと
をさらに含む動作を実行するように構成される、請求項9に記載のウェイクロックアウェアシステム。
【請求項１１】
前記スケジューラは、
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の前記拒絶を受信するステップと、
第2の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと、
前記第2の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールすることの許可を求める要求を送るステップと、
前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールすることの許可を求める前記要求の前記承認を受信するステップと、
前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールするステップと
をさらに含む動作を実行するように構成される、請求項10に記載のウェイクロックアウェアシステム。
【請求項１２】
前記スケジューラは、
前記第1の準備完了ジョブがプロセッサ使用しきい値を上回るかどうかを判断し、前記第1の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、かつ前記第1の準備完了ジョブが前記プロセッサ使用しきい値を上回らないとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を送るステップと、
第2の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと
をさらに含む動作を実行するように構成される、請求項9に記載のウェイクロックアウェアシステム。
【請求項１３】
前記ウェイクロックプロファイラは、
前記ウェイクロック情報がウェイクロック時間パラメータを含むかどうかを判断するステップと、
前記ウェイクロック情報がウェイクロック時間パラメータを含まないとの判断に応答して、前記ウェイクロック事象に関するウェイクロック持続時間推定値を計算するステップと、
前記ウェイクロック持続時間推定値を記憶するステップと
をさらに含む動作を実行するように構成される、請求項9に記載のウェイクロックアウェアシステム。
【請求項１４】
前記ウェイクロックプロファイラは、
前記ウェイクロック持続時間推定値を記憶するステップが、
前記ウェイクロック持続時間推定値を、前記ウェイクロック要求に関連する前記ウェイクロック事象のウェイクロック識別子(ID)と相関付けるステップと、
前記ウェイクロック持続時間推定値を、対応するウェイクロックIDとともにウェイクロック情報データ構造に記憶するステップと
を含み、
前記ウェイクロック情報を入手するステップが、前記ウェイクロック情報データ構造から前記ウェイクロック持続時間推定値を取り出すステップを含む
ように動作を実行するように構成される、請求項13に記載のウェイクロックアウェアシステム。
【請求項１５】
前記ウェイクロックプロファイラは、前記ウェイクロック事象に関する前記ウェイクロック持続時間推定値を計算するステップが、前記ウェイクロック事象に関する複数のウェイクロック持続時間を使用して、前記ウェイクロック事象に関する前記ウェイクロック持続時間推定値を計算するステップを含むように動作を実行するように構成される、請求項13に記載のウェイクロックアウェアシステム。
【請求項１６】
前記複数のウェイクロック持続時間は、複数のウェイクロック持続時間推定値、複数のウェイクロック持続時間観測値、または複数のウェイクロック持続時間推定値およびウェイクロック持続時間観測値を含む、請求項15に記載のウェイクロックアウェアシステム。
【請求項１７】
コンピューティングデバイス上でウェイクロックアウェアスケジューリングを実施するように構成されたウェイクロックアウェアシステムであって、
ウェイクロック要求をアプリケーションから受信するための手段と、
前記ウェイクロック要求に関連するウェイクロック事象のウェイクロック情報を入手するための手段であって、前記ウェイクロック情報は、前記ウェイクロック事象の期間に関連するウェイクロック時間パラメータを含む、手段と、
前記ウェイクロック時間パラメータを含むヒントを送るための手段と、
前記ヒントを受信するための手段と、
第1の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するための手段と、
前記第1の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める要求を送るための手段と
を含むウェイクロックアウェアシステム。
【請求項１８】
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求は、前記第1の準備完了ジョブに関するプロセッサ使用の推定値を含み、前記ウェイクロックアウェアシステムは、
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を受信するための手段と、
前記第1の準備完了ジョブを含む作業負荷が全プロセッサ使用しきい値を上回るかどうかを判断するための手段と、
前記作業負荷が前記全プロセッサ使用しきい値を上回るとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の拒絶を送るための手段と、
前記作業負荷が前記全プロセッサ使用しきい値を上回らないとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の承認を送るための手段と
をさらに含む、請求項17に記載のウェイクロックアウェアシステム。
【請求項１９】
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の前記拒絶を受信するための手段と、
第2の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するための手段と、
前記第2の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールすることの許可を求める要求を送るための手段と、
前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールすることの許可を求める前記要求の前記承認を受信するための手段と、
前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールするための手段と
をさらに含む、請求項18に記載のウェイクロックアウェアシステム。
【請求項２０】
前記第1の準備完了ジョブがプロセッサ使用しきい値を上回るかどうかを判断するための手段であって、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を送るための手段は、前記第1の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、かつ前記第1の準備完了ジョブが前記プロセッサ使用しきい値を上回らないとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を送るための手段を含む、手段と、
第2の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するための手段と
をさらに含む、請求項17に記載のウェイクロックアウェアシステム。
【請求項２１】
前記ウェイクロック情報がウェイクロック時間パラメータを含むかどうかを判断するための手段と、
前記ウェイクロック情報がウェイクロック時間パラメータを含まないとの判断に応答して、前記ウェイクロック事象に関するウェイクロック持続時間推定値を計算するための手段と、
前記ウェイクロック持続時間推定値を記憶するための手段と
をさらに含む、請求項17に記載のウェイクロックアウェアシステム。
【請求項２２】
前記ウェイクロック持続時間推定値を記憶するための手段は、
前記ウェイクロック持続時間推定値を、前記ウェイクロック要求に関連する前記ウェイクロック事象のウェイクロック識別子(ID)と相関付けるための手段と、
前記ウェイクロック持続時間推定値を、対応するウェイクロックIDとともにウェイクロック情報データ構造に記憶するための手段と
を含み、
前記ウェイクロック情報を入手するための手段は、前記ウェイクロック情報データ構造から前記ウェイクロック持続時間推定値を取り出すための手段を含む、請求項21に記載のウェイクロックアウェアシステム。
【請求項２３】
前記ウェイクロック事象に関する前記ウェイクロック持続時間推定値を計算するための手段は、前記ウェイクロック事象に関する複数のウェイクロック持続時間を使用して、前記ウェイクロック事象に関する前記ウェイクロック持続時間推定値を計算するための手段を含み、前記複数のウェイクロック持続時間は、複数のウェイクロック持続時間推定値、複数のウェイクロック持続時間観測値、または複数のウェイクロック持続時間推定値およびウェイクロック持続時間観測値を含む、請求項21に記載のウェイクロックアウェアシステム。
【請求項２４】
コンピューティングデバイスのプロセッサに動作を実行させるように構成されたプロセッサ実行可能命令を記憶したプロセッサ可読記録媒体であって、前記動作は、
ウェイクロック要求をアプリケーションから受信するステップと、
前記ウェイクロック要求に関連するウェイクロック事象のウェイクロック情報を入手するステップであって、前記ウェイクロック情報は、前記ウェイクロック事象の期間に関連するウェイクロック時間パラメータを含む、ステップと、
前記ウェイクロック時間パラメータを含むヒントを送るステップと、
前記ヒントを受信するステップと、
第1の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと、
前記第1の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める要求を送るステップと
を含む、プロセッサ可読記録媒体。
【請求項２５】
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求は、前記第1の準備完了ジョブに関するプロセッサ使用の推定値を含み、前記記憶されたプロセッサ実行可能命令は、前記プロセッサに、
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を受信するステップと、
前記第1の準備完了ジョブを含む作業負荷が全プロセッサ使用しきい値を上回るかどうかを判断するステップと、
前記作業負荷が前記全プロセッサ使用しきい値を上回るとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の拒絶を送るステップと、
前記作業負荷が前記全プロセッサ使用しきい値を上回らないとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の承認を送るステップと
をさらに含む動作を実行させるように構成される、請求項24に記載のプロセッサ可読記録媒体。
【請求項２６】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサに、
前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求の前記拒絶を受信するステップと、
第2の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと、
前記第2の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールすることの許可を求める要求を送るステップと、
前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールすることの許可を求める前記要求の前記承認を受信するステップと、
前記ウェイクロック事象中に実行するように前記第2の準備完了ジョブをスケジュールするステップと
をさらに含む動作を実行させるように構成される、請求項25に記載のプロセッサ可読記録媒体。
【請求項２７】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサに、
前記第1の準備完了ジョブがプロセッサ使用しきい値を上回るかどうかを判断するステップであって、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を送るステップは、前記第1の準備完了ジョブが前記ウェイクロック事象中に実行できるとの判断に応答して、かつ前記第1の準備完了ジョブが前記プロセッサ使用しきい値を上回らないとの判断に応答して、前記ウェイクロック事象中に実行するように前記第1の準備完了ジョブをスケジュールすることの許可を求める前記要求を送るステップを含む、ステップと、
第2の準備完了ジョブが前記ウェイクロック事象中に実行できるかどうかを判断するステップと
をさらに含む動作を実行させるように構成される、請求項24に記載のプロセッサ可読記録媒体。
【請求項２８】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサに、
前記ウェイクロック情報がウェイクロック時間パラメータを含むかどうかを判断するステップと、
前記ウェイクロック情報がウェイクロック時間パラメータを含まないとの判断に応答して、前記ウェイクロック事象に関するウェイクロック持続時間推定値を計算するステップと、
前記ウェイクロック持続時間推定値を記憶するステップと
をさらに含む動作を実行させるように構成される、請求項24に記載のプロセッサ可読記録媒体。
【請求項２９】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサに、
前記ウェイクロック持続時間推定値を記憶するステップが、
前記ウェイクロック持続時間推定値を、前記ウェイクロック要求に関連する前記ウェイクロック事象のウェイクロック識別子(ID)と相関付けるステップと、
前記ウェイクロック持続時間推定値を、対応するウェイクロックIDとともにウェイクロック情報データ構造に記憶するステップと
を含み、
前記ウェイクロック情報を入手するステップが、前記ウェイクロック情報データ構造から前記ウェイクロック持続時間推定値を取り出すステップを含む
ように動作を実行させるように構成される、請求項28に記載のプロセッサ可読記録媒体。
【請求項３０】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサに、前記ウェイクロック事象に関する前記ウェイクロック持続時間推定値を計算するステップが、前記ウェイクロック事象に関する複数のウェイクロック持続時間を使用して、前記ウェイクロック事象に関する前記ウェイクロック持続時間推定値を計算するステップを含むように動作を実行させるように構成され、前記複数のウェイクロック持続時間は、複数のウェイクロック持続時間推定値、複数のウェイクロック持続時間観測値、または複数のウェイクロック持続時間推定値およびウェイクロック持続時間観測値を含む、請求項28に記載のプロセッサ可読記録媒体。
【国際調査報告】
2019527867.tif 000018
2019527867.tif 000019
2019527867.tif 000020