(57)【特許請求の範囲】
【請求項１】
計算機システムであって、
プログラムを実行する実行状態と、外部からのスリープ要求信号に対してスリープ応答信号を応答することによりプログラムの実行を停止する停止状態とを有するプロセッサ装置と、
前記プロセッサ装置から発行されるコマンド要求に従って機能ブロックにアクセスし、コマンド要求に応答する信号を前記プロセッサ装置に出力するアクセス制御手段とを備え、
前記プロセッサ装置は、
前記スリープ要求信号を受け、かつコマンド受理信号の受信待ちでない場合は、前記スリープ応答信号を応答し、
前記スリープ要求信号を受け、かつコマンド受理信号の受信待ちである場合は、停止状態に遷移することを示す停止通知信号を前記アクセス制御手段に出力し、前記アクセス制御手段から出力された停止通知受理信号を受信した後に前記スリープ応答信号を応答し、
前記アクセス制御手段は、
前記停止通知信号を受けたとき、前記プロセッサ装置に対して前記コマンド要求に応答する信号を出力しないことを特徴とする計算機システム。
【請求項２】
前記アクセス制御手段は、コマンド要求をマスクする手段を有し、前記停止通知信号を受けたとき、前記プロセッサ装置からコマンド要求が出力されている場合、当該コマンド要求を受理した後に、コマンド要求の入力をマスクし、前記プロセッサ装置からコマンド要求が出力されていない場合、コマンド要求の入力をマスクし、
前記停止通知信号が解除されたときに、前記マスクを解除する
ことを特徴とする請求項１記載の計算機システム。
【請求項３】
前記停止状態において、前記プロセッサ装置へのクロック信号の供給が停止されることを特徴とする請求項１または２記載の計算機システム。
【請求項４】
前記計算機システムは、前記プロセッサ装置に前記スリープ要求信号を送信し、前記プロセッサ装置から前記スリープ応答信号を受信するホストＣＰＵと、前記クロック信号を前記プロセッサ装置に供給するクロック手段とを備え、
前記ホストＣＰＵは、前記スリープ応答信号を受信した時、前記クロック信号の供給を停止するよう前記クロック手段を制御する
ことを特徴とする請求項１から３の何れかに記載の計算機システム。
【請求項５】
前記ホストＣＰＵは、さらに、前記クロック信号の供給を再開するよう前記クロック手段を制御し、スリープ要求信号をネゲートする
ことを特徴とする請求項４記載の計算機システム。
【請求項６】
前記アクセス手段は、
前記プロセッサ装置と、少なくとも１つの他のプロセッサ装置とからコマンド要求を受信し、受信したコマンド要求に従ってアクセスを実行するコマンド実行部と、
コマンド要求に従ってアクセスされたリードデータを保持するための共有バッファと、
共有バッファの空き容量がしきい値以上であるか否かを判定し、前記停止通知信号を受けたとき、空き容量がしきい値以下であれば、前記プロセッサ装置に前記停止通知受理信号を送信することを保留する判定手段と、
を備えることを特徴とする請求項１から３の何れかに記載の計算機システム。
【請求項７】
前記プロセッサ装置は、前記スリープ要求信号がネゲートされ、かつ前記コマンド受理信号の受信待ちである場合に、前記アクセス制御手段からのコマンド受理信号を受信する
ことを特徴とする請求項１から６の何れかに記載の計算機システム。
【請求項８】
クロック信号の供給を受ける実行状態と、スリープ要求信号に対してスリープ応答信号を応答することにより前記クロック信号の供給が停止される第１停止状態との間を遷移するプロセッサ装置と、
前記プロセッサ装置に対してクロック信号を供給する第１クロック供給手段と、
前記スリープ要求信号を前記プロセッサ装置に出力し、その応答として前記スリープ応答信号を受けたとき、第１クロック供給手段から前記プロセッサ装置への第１クロック信号の供給を停止するホストＣＰＵと、
前記プロセッサ装置から発行されるコマンド要求に従って機能ブロックをアクセスし、アクセス完了後にコマンド受理信号を前記プロセッサ装置に送信するアクセス制御手段とを備え、
前記プロセッサ装置は、
前記スリープ要求信号を受け、かつ前記コマンド受理信号の受信待ちでない場合は、前記スリープ応答信号を出力し、
前記スリープ要求信号を受け、かつ前記コマンド受理信号の受信待ちである場合は、第１停止状態に遷移することを示す停止通知信号を前記アクセス制御手段に出力し、前記アクセス制御手段から出力された停止通知受理信号を受信した後に前記スリープ応答信号を応答し、
前記プロセッサ装置は、
複数のプログラムを時分割多重により実行し、第１クロック信号が供給される実行状態と、プログラムを割り当て時間毎に切り替えるためのクロック信号が供給され、かつ、第１クロック信号の供給が停止される第２停止状態とを有するプロセッサユニットと、
現在実行中のプログラムに割り当てられた時間をカウントするカウント手段と、
プロセッサ装置の実行状態と第２停止状態との遷移を制御する制御手段と、
第１クロック供給手段から前記第１クロック信号が入力され、前記第１クロック信号と、前記第１クロック信号のＫ倍の周期を有する第２クロック信号とを出力する第２クロック供給手段とを備え、
前記制御手段は、前記カウント手段の残り時間が０でなく、かつ現在実行中のプログラムが割り当てられた時間内に実行すべき処理を完了したとき、前記プロセッサユニットで実行するプログラムが存在しないことを検出すると、第２停止状態に遷移させるようクロック供給手段を制御し、
前記クロック供給手段は、第２停止状態において、前記プロセッサ装置への第１クロック信号を停止し、前記カウント手段および制御手段に前記第２クロック信号を供給し、
前記カウント手段は、前記実行状態において１ずつカウントし、前記第２停止状態においてＫずつカウントする
ことを特徴とする計算機システム。
【請求項９】
クロック信号の供給を受ける実行状態と、外部からのスリープ要求信号に対してスリープ応答信号を応答することにより前記クロック信号の供給が停止される停止状態との間を遷移するプロセッサ装置と、前記プロセッサ装置から発行されるコマンド要求に従って機能ブロックをアクセスし、アクセス完了後にコマンド受理信号を前記プロセッサ装置に送信するアクセス制御手段とを備える計算機システムの制御方法であって、
前記プロセッサ装置が、前記スリープ要求信号を受けるステップと、
前記プロセッサ装置が、前記スリープ要求信号を受けたとき、前記コマンド受理信号の受信待ちであるか否かを判定するステップと、
前記プロセッサ装置が、前記コマンド受理信号の受信待ちでないと判定された場合は、前記スリープ応答信号を出力するステップと、
前記プロセッサ装置が、前記コマンド受理信号の受信待ちであると判定された場合は、停止状態に遷移することを示す停止通知信号を前記アクセス制御手段に出力し、前記アクセス制御手段から出力された停止通知受理信号を受信した後に前記スリープ応答信号を応答するステップと
を有することを特徴とする計算機システムの制御方法。
【請求項１０】
請求項８記載の計算機システムを備え、前記ホストＣＰＵが音声通話の制御を行なうことを特徴とする携帯電話機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電力削減機能を有する計算機システムに関し、特に、クロック信号の供給を受ける実行状態と、外部からのスリープ要求信号に対してスリープ応答信号を応答することにより前記クロック信号の供給が停止される停止状態との間を遷移するプロセッサ装置を備える計算機システムおよび計算機システムの制御方法に関する。
【背景技術】
【０００２】
近年、携帯電話などの移動体通信機器の需要が急速に高まる中、移動体通信用のＬＳＩの需要もますます高まっている。そして、移動体通信機器の高機能化にともない、移動体通信用のＬＳＩにおいても一つのＬＳＩに複数のプロセッサを内蔵するマルチプロセッサ構成や、並列処理を行うことが可能なプロセッサを実装することも多くなっている。
【０００３】
特許文献１には、低消費電力モード移行時に周辺回路の処理を無効にしないマイクロコントローラの制御方法が開示されている。この制御方法は、まず、周辺回路が動作しているかどうかを判断する。周辺回路が動作していないと判断された場合には、ＣＰＵへのクロックおよび周辺回路へのクロックを低消費電力モードに切り替える。逆に、周辺回路が動作していると判断された場合には、周辺回路へのクロックは周辺回路の動作が終了した後に低消費電力モードに切り換える。これにより周辺回路の処理を無効にしないようにしている。
【０００４】
また、特許文献２には、スタンバイ状態から通常動作への移行を迅速に行なうデータ処理装置を開示している。このデータ処理装置は、携帯電話機等に実装され、分周回路に、ホルト・モード時の動作周波数を設定するための分周制御信号を与え、ホルト命令が実行されホルト・モードに移行すると、周辺処理部に与えるクロック信号の動作周波数を低分周に切り替えて供給する。これにより、周辺処理部における電力を低減している。また、このデータ処理装置は、ホルト・モードから通常動作に移行した場合、周辺処理部が通常の動作周波数に切り替わるので、携帯電話機の通話待ち受け状態から迅速に通話状態に移行させる。
【特許文献１】特開平１１−３０５８８７号公報
【特許文献２】特許第３０００９６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の従来の技術には下記の問題がある。
まず第１に、特許文献１では、低消費電力モードに移行する場合に、マイクロコントローラがメモリまたは周辺回路をアクセス中であれば、アクセスが完了するまで低消費電力モードに移行することができない。特許文献２でも、ＣＰＵがアクセス中であればアクセスが完了するまでホルト命令を実行できないためホルト・モードに移行することができない。それゆえ、アクセスが完了するまでの間は消費電力を低減することができないという問題がある。言い換えれば、低消費電力モードまたはホルト・モードになる期間が短くなり、消費電力を十分に低減することができない。
【０００６】
第２に、特許文献２では、ホルト・モード時に周辺処理部に与える低い周波数のクロック信号を供給するが、周辺処理部がタイマーまたはカウンタを含む場合に、時間計測を正確にできない。その結果、データ処理装置はリアルタイム処理を行なう場合に、処理の開始時刻が遅くなってしまい、処理性能を保証できずリアルタイム性を確保できないという問題がある。
【０００７】
本発明は上記課題に鑑み、外部から低消費電力モードへの移行を要求された場合の応答性の大幅に改善し、消費電力をさらに削減する計算機システムを提供することを第１の目的とする。
【０００８】
また、低消費電力モードへの移行および復帰に伴う性能劣化を生じさせない計算機システムを提供することを第２の目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するため本発明の計算機システムは計算機システムであって、プログラムを実行する実行状態と、外部からのスリープ要求信号に対してスリープ応答信号を応答することによりプログラムの実行を停止する停止状態とを有するプロセッサ装置と、前記プロセッサ装置から発行されるコマンド要求に従って機能ブロックにアクセスし、コマンド要求に応答する信号を前記プロセッサ装置に出力するアクセス制御手段とを備え、前記プロセッサ装置は、前記スリープ要求信号を受け、かつコマンド受理信号の受信待ちでない場合は、前記スリープ応答信号を応答し、前記スリープ要求信号を受け、かつコマンド受理信号の受信待ちである場合は、停止状態に遷移することを示す停止通知信号を前記アクセス制御手段に出力し、前記アクセス制御手段から出力された停止通知受理信号を受信した後に前記スリープ応答信号を応答し、前記アクセス制御手段は、前記停止通知信号を受けたとき、前記プロセッサ装置に対して前記コマンド要求に応答する信号を出力しないことを特徴とする。この構成によれば、第１の目的を達成することができる。すなわち、プロセッサ装置は、スリープ要求信号を受け、かつ前記コマンド受理信号の受信待ちである場合、つまり、アクセス中である場合であっても、スリープ応答信号を即座に応答するので、スリープ要求への応答性を大幅に改善し、消費電力をさらに削減することができる。
【００１０】
ここで、前記アクセス制御手段は、コマンド要求をマスクする手段を有し、前記停止通知信号を受けたとき、前記プロセッサ装置からコマンド要求が出力されている場合、当該コマンド要求を受理した後に、コマンド要求の入力をマスクし、前記プロセッサ装置からコマンド要求が出力されていない場合、コマンド要求の入力をマスクし、前記停止通知信号が解除されたときに、前記マスクを解除するようにしてもよい。この構成によれば、アクセス制御手段は停止通知を受けることによりプロセッサ装置が停止状態になったことを認識でき、さらにコマンド要求の入力をマスクすることにより、誤ってコマンド要求を重複して受理することを防止することができる。アクセス自体はプロセッサ装置ではなくアクセス制御手段が実行する。
【００１１】
ここで、前記停止状態において、前記プロセッサ装置へのクロック信号の供給が停止されるようにしてもよい。
【００１２】
ここで、前記アクセス制御手段は、前記プロセッサ装置から前記停止通知信号を受けた後、停止通知受理信号を前記プロセッサ装置に出力し、前記プロセッサ装置は、前記スリープ要求信号を受け、かつ前記コマンド受理信号の受信待ちである場合に、前記停止通知信号への応答として前記アクセス制御手段から停止通知受理信号を受信した後に、前記スリープ応答信号を応答するようにしてもよい。メモリアクセス手段がビジーであるなどの原因により上記プロセッサ装置からのメモリアクセスを受理できない場合に限り停止通知受理信号の出力を遅らせてもよい。
【００１３】
ここで、前記計算機システムは、前記プロセッサ装置に前記スリープ要求信号を送信し、前記プロセッサ装置から前記スリープ応答信号を受信するホストＣＰＵと、前記クロック信号を前記プロセッサ装置に供給するクロック手段とを備え、前記ホストＣＰＵは、前記スリープ応答信号を受信した時、前記クロック信号の供給を停止するよう前記クロック手段を制御するようにしてもよい。この構成によれば、ホストＣＰＵからのスリープ要求に対してプロセッサ装置は即座に応答することができ、消費電力をさらに削減することができる。
【００１４】
ここで、前記ホストＣＰＵは、さらに、前記クロック信号の供給を再開するよう前記クロック手段を制御し、スリープ要求信号をネゲートするようにしてもよい。この構成によれば、ホストＣＰＵは簡単な制御でプロセッサ装置を停止状態から動作状態に復帰させることができる。
【００１５】
ここで、前記アクセス手段は、前記プロセッサ装置と、少なくとも１つの他のプロセッサ装置とからコマンド要求を受信し、受信したコマンド要求に従ってアクセスを実行するコマンド実行部と、コマンド要求に従ってアクセスされたリードデータを保持するための共有バッファと、共有バッファの空き容量がしきい値以上であるか否かを判定し、前記停止通知信号を受けたとき、空き容量がしきい値以下であれば、前記プロセッサ装置に前記停止通知受理信号を送信することを保留する判定手段とを備えるようにしもよい。この構成によれば、計算機システムがプロセッサ装置以外にメモリアクセスする他の１つ以上のプロセッサを備えることができ、計算機システムの拡張性を向上させることができる。この場合、メモリアクセス手段は上記プロセッサ装置および他の１つ以上のプロセッサからのメモリアクセスを実行する。メモリアクセス手段は、複数のメモリアクセスの競合によって上記プロセッサ装置からのメモリアクセスを受理できない場合に限り停止通知受理信号の出力を遅らせればよい。また、上記プロセッサ装置用の専用バッファではなく共有バッファとすることにより、回路規模の増加を抑制することができる。
【００１６】
ここで、前記プロセッサ装置は、前記スリープ要求信号がネゲートされ、かつ前記コマンド受理信号の受信待ちである場合に、前記アクセス制御手段からのコマンド受理信号を受信するようにしてもよい。この構成によれば、プロセッサ装置は、スリープ解除時に、コマンド受理信号の受信により、停止状態になる前に発行したコマンド要求に対する処理を完遂することができる。
【００１７】
ここで、前記計算機システムは、クロック信号の供給を受ける実行状態と、スリープ要求信号に対してスリープ応答信号を応答することにより前記クロック信号の供給が停止される第１停止状態との間を遷移するプロセッサ装置と、前記プロセッサ装置に対してクロック信号を供給する第１クロック供給手段と、前記スリープ要求信号を前記プロセッサ装置に出力し、その応答として前記スリープ応答信号を受けたとき、第１クロック供給手段から前記プロセッサ装置への第１クロック信号の供給を停止するホストＣＰＵと、前記プロセッサ装置から発行されるコマンド要求に従って機能ブロックをアクセスし、アクセス完了後にコマンド受理信号を前記プロセッサ装置に送信するアクセス制御手段とを備え、前記プロセッサ装置は、前記スリープ要求信号を受け、かつ前記コマンド受理信号の受信待ちでない場合に、前記スリープ応答信号を出力し、前記スリープ要求信号を受け、かつ前記コマンド受理信号の受信待ちである場合に、前記スリープ応答信号を応答するとともに、第１停止状態に遷移することを示す停止通知信号を前記アクセス制御手段に出力し、前記プロセッサ装置は、複数のプログラムを時分割多重により実行し、第１クロック信号が供給される実行状態と、第１クロック信号の供給が停止される第２停止状態とを有するプロセッサユニットと、現在実行中のプログラムに割り当てられた時間をカウントするカウント手段と、プロセッサ装置の実行状態と第２停止状態との遷移を制御する制御手段と、第１クロック供給手段から前記第１クロック信号が入力され、前記第１クロック信号と、前記第１クロック信号のＫ倍の周期を有する第２クロック信号とを出力する第２クロック供給手段とを備え、前記制御手段は、前記カウント手段の残り時間が０でなく、かつ現在実行中のプログラムが割り当てられた時間内に実行すべき処理を完了したとき、第２停止状態に遷移させるようクロック供給手段を制御し、前記クロック供給手段は、第２停止状態において、前記プロセッサ装置への第１クロック信号を停止し、前記カウント手段および制御手段に前記第２クロック信号を供給し、前記カウント手段は、前記実行状態において１ずつカウントし、前記第２停止状態においてＫずつカウントするようにしてもよい。この構成によれば、第１の目的に加えて第２の目的を達成することができる。カウント手段は、動作状態では１ずつカウントし、第２停止状態ではＫ倍遅い第２クロック信号でＫずつカウントする。それゆえ、第２停止状態でカウントされる時間は、動作状態でカウントされる時間とほぼ同じ結果となる。その結果、カウントされる時間に従ってリアルタイム処理を実行させる場合に、低消費電力モードへの移行および復帰に伴って性能劣化を生じさせず、必要な性能を確保することができる。
【００１８】
また、本発明のプロセッサ装置は、複数のプログラムを時分割多重により実行し、第１クロック信号が供給される実行状態と、第１クロック信号の供給が停止される停止状態とを有するプロセッサユニットと、現在実行中のプログラムに割り当てられた時間をカウントするカウント手段と、プロセッサ装置の実行状態と停止状態との遷移を制御する制御手段と、第１クロック信号と、前記第１クロック信号のＫ倍の周期を有する第２クロック信号とを出力するクロック供給手段とを備え、前記制御手段は、前記カウント手段の残り時間が０でなく、かつ現在実行中のプログラムが割り当てられた時間内に実行すべき処理を完了したとき、停止状態に遷移させるようクロック供給手段を制御し、前記クロック供給手段は、停止状態において、前記プロセッサユニットへの第１クロック信号を停止し、前記カウント手段および制御手段に前記第２クロック信号を供給し、前記カウント手段は、前記実行状態において１ずつカウントし、前記停止状態においてＫずつカウントする構成としてもよい。この構成によれば、第２の目的を達成することができる。カウント手段は、動作状態では１ずつカウントし、第２停止状態ではＫ倍遅い第２クロック信号でＫずつカウントする。それゆえ、第２停止状態でカウントされる時間は、動作状態でカウントされる時間とほぼ同じ結果となる。その結果、カウントされる時間に従ってリアルタイム処理を実行させる場合に、低消費電力モードへの移行および復帰に伴って性能劣化を生じさせず、必要な性能を確保することができる。
【００１９】
ここで、前記制御手段は、さらに、前記停止状態において前記カウント手段のカウント値がＫ未満になったとき、前記クロック供給手段から前記カウント手段に供給されている第２のクロック信号を第１のクロック信号に切り換え、前記カウント手段は、さらに、前記カウント値がＫ未満になったとき１ずつ減算するようにしてもよい。この構成によれば、第２停止状態でカウントされる時間は、動作状態でカウントされる時間と完全に同じ結果とすることができる。その結果、より時間の制約が厳しいリアルタイム処理を実行させるのに適している。
【００２０】
ここで、前記Ｋは２のべき乗であってもよい。この構成によれば、カウント手段を簡単な構成にすることができる。
【００２１】
ここで、前記制御手段は、前記プロセッサユニットから設定可能な制御レジスタを備え、前記制御レジスタが所定のフラグ値を保持している場合は、前記停止状態において前記カウント手段のカウント値がＫ未満になったときの、第２のクロック信号から第１のクロック信号に切り換えおよび、カウント手段におけるＫから１への減算数の変更を禁止するようにしてもよい。この構成によれば、前記停止状態において前記カウント手段のカウント値がＫ未満になったときに、１ずつカウントするかＫずつカウントするかを、制御レジスタのフラグ値によって選択可能となる。その結果、実行すべきプログラムに要求される処理性能（リアルタイム性への時間制約が厳しいか否か）に応じて、柔軟にカウント手段のカウント精度を選択することができる。
【００２２】
ここで、前記制御手段は、さらに、前記停止状態において、前記クロック供給手段から前記カウント手段に供給されている第２のクロック信号を第１のクロック信号に一時的に切り換えると共に、前記クロック供給手段から前記プロセッサユニットに第１のクロック信号を一時的に供給させ、前記プロセッサユニットにコンテキスト転送の実行を指示し、コンテキスト転送が完了したとき、前記クロック供給手段から前記カウント手段に供給されている第１のクロック信号を第２のクロック信号に戻し、前記クロック供給手段から前記プロセッサユニットに第１のクロック信号を停止させるようにしてもよい。この構成によれば、停止状態の間にコンテキスト転送を第１のクロック信号により高速に実行するので、切り替え先のプログラム開始時刻を遅らせることなく、処理性能を確保することができる。
【００２３】
また、本発明の計算機システムの制御方法、システムＬＳＩおよび携帯電話機も上記と同様の構成を有する。
【発明の効果】
【００２４】
本発明によれば、第１に、外部から低消費電力モードへの移行を要求された場合の応答性の大幅に改善し、消費電力をさらに削減することができる。また、計算機システムの拡張性を向上させることができ、回路規模の増加を抑制することができる。
【００２５】
また、第２に、低消費電力モードへの移行および復帰に伴う性能劣化を防止することができる。
【００２６】
停止状態でカウントされる時間を、動作状態でカウントされる時間とほぼ同じにすることができる。
【００２７】
停止状態でカウントされる時間を、動作状態でカウントされる時間と完全に同じにすることもできる。
【００２８】
リアルタイム処理を実行させる場合に、低消費電力モードへの移行および復帰に伴って性能劣化を生じさせず、必要な性能を確保することができる。
【００２９】
より時間の制約が厳しいリアルタイム処理を実行させるのに適している。
実行すべきプログラムに要求される処理性能（リアルタイム性への時間制約が厳しいか否か）に応じて、柔軟にカウント手段のカウント精度を選択することができる。
【発明を実施するための最良の形態】
【００３０】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
【００３１】
（実施の形態１）
実施の形態１における計算機システムは、主として、プロセッサ装置と、アクセス制御部とを含む。アクセス制御部は、プロセッサ装置から発行されるコマンド要求を受理し、受理したコマンド要求に従ってメモリやＩ／Ｏ等の機能ブロックをアクセスする。また、アクセス制御部はコマンド要求とデータの送受信との間に一旦バスを開放するスプリット方式をとる。
【００３２】
プロセッサ装置は、クロック信号の供給を受ける実行状態と、外部からのスリープ要求信号に対してスリープ応答信号を応答することによりクロック信号の供給が停止される第１停止状態との間を遷移する。
【００３３】
実行状態から第１停止状態への遷移に際して、プロセッサ装置は、スリープ要求信号を受け、アクセス中である場合であっても、スリープ応答信号を応答するとともに、第１停止状態に遷移することを示す停止通知信号をアクセス制御部に出力する。
【００３４】
アクセス制御部は、停止通知信号を受けたとき、プロセッサ装置からコマンド要求が出力されている場合、当該コマンド要求を受理した後に、コマンド要求の入力をマスクし、プロセッサ装置からコマンド要求が出力されていない場合、コマンド要求の入力をマスクする。その後、停止通知信号が解除された場合、アクセス制御部はマスクを解除する。コマンド要求の入力をマスクするのは、１つのコマンド要求を誤って重複して受理することを防止するためである。
【００３５】
上記のように、プロセッサ装置は、アクセス中である場合であっても、スリープ応答信号を即座に応答するので、スリープ要求への応答性を大幅に改善し、消費電力をさらに削減することができる。アクセス制御部は停止通知を受けることによりプロセッサ装置が第１停止状態になったことを認識でき、アクセス自体はプロセッサ装置ではなくアクセス制御部が実行する。停止通知信号は、プロセッサ装置が停止状態のときに、ハンドシェイクを要する信号等をアクセス制御部がプロセッサ装置に出力することを避けるために通知される。
【００３６】
図１は、本発明の実施の形態１における計算機システムの全体構成を示す機能ブロック図である。同図に示すように、計算機システム１はプロセッサ装置１００と、ホストＣＰＵ２００と、アクセス制御部として機能するバス制御器３００と、割り込み制御器４００と、第１クロック供給手段として機能するクロック制御器５００とを備え、この他にもプロセッサ１００ａ、１００ｂ等を備える。
【００３７】
プロセッサ装置１００は、省電力モードとして第１停止状態と第２停止状態とを有する。第１停止状態は、単にスリープ状態ともいう。第１停止状態では、外部からのスリープ要求信号１１に対してスリープ応答信号１２を応答することによりクロック信号ｃｌｋ４２の供給を停止する。すなわち、プロセッサ装置１００全体への動作を停止させる。第２停止状態は、マイクロスリープ状態ともいう。第２停止状態では、プロセッサ装置１００がプロセッサユニット１１０およびメモリ制御器１２０の動作を停止させる。ただし、マイクロスリープ状態では、プログラムを割り当て時間毎に切り替えるためにＶＭＰコントローラ１４０へのクロック信号の供給は継続する。マイクロスリープ状態については実施の形態２で詳しく説明するので、実施の形態１では説明を省略する。
【００３８】
ホストＣＰＵ２００は、スリープ要求信号１１をプロセッサ装置１００に出力し、その応答としてスリープ応答信号１２を受けたとき、クロック制御器５００から前記プロセッサ装置への第１クロック信号の供給を停止する。
【００３９】
バス制御器３００は、プロセッサ装置１００、プロセッサ１００ａおよび１００ｂから発行されるコマンド要求を受理し、受理したコマンド要求に従ってメモリをアクセスし、ライトアクセスの場合はライトデータ受理信号を、リードアクセスの場合はリードデータとリードデータ有効信号をプロセッサ装置１００に送信する。なお、メモリアクセスは、メモリＩ／Ｆ１００１を介して行うメモリリードおよびメモリライトだけでなく、Ｉ／Ｏ制御部１００２を介して行うＩ／ＯリードおよびＩ／Ｏライトも含む。また、アクセスされる対象を機能ブロックと呼ぶ。メモリＩ／Ｆ１００１は機能ブロックとしてのＳＤＲＡＭなど大容量のメモリに接続されている。Ｉ／Ｏ制御部１００２は、機能ブロックのとしてのＳＤメモリカード、入力装置、出力装置等に接続されている。また、メモリアクセスはバスアクセスと同義とする。バス制御器３００は、プロセッサ装置１００から停止通知信号２１を受けた後、受理可能であれば停止通知受理信号２２をプロセッサ装置に出力する。受理可能であるかどうかは、共有バッファ３０５がしきい値以上の空き容量を有するかどうかによる。しきい値は、例えば、当該コマンド要求によるリードデータのサイズや、一定値でよい。
【００４０】
割り込み制御器４００は、ホストＣＰＵ２００または外部のＩ／Ｏからの割込みを割り込み信号３１としてプロセッサ装置１００に通知する。
【００４１】
クロック制御器５００は、ホストＣＰＵ２００の制御の下で、クロック信号ｃｌｋ４２をローカルクロック制御器１３０に供給または停止する。
【００４２】
プロセッサ装置１００は、プロセッサユニット１１０と、メモリ制御器１２０と、ローカルクロック制御器１３０と、ＶＭＰ(Virtual Multi Processor)コントローラ１４０とを備える。
【００４３】
プロセッサユニット１１０は、ＶＭＰコントローラ１４０の制御の下で時分割多重による並列処理を行う。
【００４４】
メモリ制御器１２０は、プロセッサユニット１１０からのメモリアクセス信号に従って、コマンド要求信号２３をバス制御器３００に発行し、アクセスが完了した後プロセッサユニット１１０にアクセス完了を通知する。
【００４５】
プロセッサ装置１００をスリープ状態に遷移させる概略手順を説明する。まずホストＣＰＵ２００がプロセッサ装置１００に対してスリープ要求信号１１をアサートする。プロセッサ装置１００はスリープ要求信号１１がアサートされたとき、プロセッサ装置１００内におけるプログラムの実行を停止する処理を開始する。さらに、プロセッサ装置１００の外部へのアクセス、つまりバス制御器３００に対するメモリアクセスの有無を確認する。メモリアクセス中であれば、停止通知信号２１をバス制御器３００に出力してから、ホストＣＰＵ２００に対してスリープ応答信号１２をアサートする。ホストＣＰＵ２００はスリープ応答信号１２がアサートされたのち、クロック制御器５００を経由してプロセッサ装置１００のクロック信号ｃｌｋ４２の供給を停止させる。
【００４６】
ＶＭＰコントローラ１４０は、カウンタ１４１と、割り込み検出器１４２とを備える。
ＶＭＰコントローラ１４０は、プロセッサユニット１１０で、時分割多重による並列処理を行うための、コンテキスト切り替え装置である。ここで、コンテキストは、プログラムの切り替えに必要な情報、すなわちプログラムカウンタ、フラグレジスタ、スタック領域などの制御情報や、汎用レジスタなどのデータ情報をいう。コンテキストの切り換えとは、現在実行しているプログラムのコンテキストをメモリに書き出し（退避という）、次に実行するプログラムのコンテキストをメモリから読み出す（復帰という）動作を意味する。ＶＭＰコントローラ１４０は、コンテキスト切り替え装置として、この退避処理と復帰処理、および実行するプログラムをスケジューリングする機能を備える。
【００４７】
カウンタ１４１は、時分割多重化のためにプログラム毎に割り当てられた時間を計数する。
【００４８】
割り込み検出器１４２は、割り込み制御器４００からの割り込み信号を３１が入力され、割込みを検出する。この割込みは、マイクロスリープ状態を解除するトリガーとなる。
【００４９】
図２は、プロセッサ装置１００の実行状態とスリープ状態の遷移を示すタイムチャートである。また、図１５は、プロセッサ装置１００の状態遷移を示す図である。
【００５０】
まず、プロセッサ装置１００がプログラム実行状態６００からスリープ状態６０１に遷移するときの動作を説明する。
【００５１】
図２において、ホストＣＰＵ２００は、プログラム実行状態６００であるプロセッサ装置１００に対して、プログラムの実行を停止させるときに、スリープ要求信号１１をアサートする（時刻Ｔ０)。プロセッサ装置１００はスリープ要求信号１１がアサートされたとき、プログラム実行を停止する状態(スリープ状態６０１)に遷移する処理を行い、スリープ応答信号１２をアサート（時刻Ｔ３)して、スリープ状態６０１に遷移する。
【００５２】
その際、プロセッサ装置１００はバス制御器３００に対して出力する停止通知信号２１をアサートする（時刻Ｔ１)。
【００５３】
バス制御器３００はメモリアクセス中に停止通知信号２１がアサートされたとき、プロセッサ装置１００およびメモリＩ／Ｆ１００１とＩ／Ｏ制御部１００２との信号の入出力を一時中断し、停止通知受理信号２２をアサートする（時刻Ｔ２)。このときメモリＩ／Ｆ１００１あるいはＩ／Ｏ制御部へのアクセスデータをバス制御器で保持する必要がある場合は、バス制御器３００に備えた共有バッファ３０５に格納する。プロセッサ装置１００は停止通知受理信号２２がアサートされたとき、ホストＣＰＵ２００に出力するスリープ応答信号１２をアサート（時刻Ｔ３)して、スリープ状態６０１に遷移する。
【００５４】
ホストＣＰＵ２００はスリープ応答信号１２がアサートされたとき、クロック制御器５００に対してクロック制御信号４１をアサートする（時刻Ｔ４）。クロック制御器５００はクロック制御信号４１がアサートされたとき、プロセッサ装置１００に供給するクロック信号ｃｌｋ４２のクロックを停止させる。
【００５５】
このように、メモリアクセスの完了を待たずに、プロセッサ装置１００に供給するクロック信号を停止させることが本発明の特徴である。
【００５６】
次に、プロセッサ装置１００がスリープ状態６０１からプログラム実行状態６００に復帰するときの動作を説明する。
【００５７】
ホストＣＰＵ２００はまずクロック制御信号４１をネゲートする（時刻Ｔ５）。このとき、クロック制御器５００はクロック信号ｃｌｋ４２をプロセッサに供給する。そののち、プロセッサ装置１００に出力するスリープ要求信号１１をネゲートする（時刻Ｔ６）。プロセッサ装置１００はスリープ要求信号１１がネゲートされたとき、スリープ状態６０１からプログラム実行状態６００に遷移する処理を行い、停止通知信号２１をアサートしていない場合はこの処理の完了後にスリープ応答信号１２をネゲート（時刻Ｔ７）してプログラム実行状態６００に遷移する。
【００５８】
一方、停止通知信号２１をアサートしている場合は、プロセッサ装置１００はバス制御器３００に対して出力する停止通知信号２１をネゲートする（時刻Ｔ８）。
【００５９】
バス制御器３００は停止通知信号２１がネゲートされたとき、一時中断していたプロセッサ装置１００およびメモリＩ／Ｆ１００１とＩ／Ｏ制御部１００２との信号の入出力を再開する。そして、プロセッサ装置１００に対するメモリアクセスを完了したのち、停止通知受理信号２２をネゲート（時刻Ｔ９) してプログラム実行状態６００に遷移する。
【００６０】
図３は、プロセッサ装置１００をプログラム実行状態６００からスリープ状態６０１に遷移させクロック信号ｃｌｋ４２を停止させるまでの処理を示す概略フローチャートである。
【００６１】
同図において、プロセッサ装置１００がホストＣＰＵ２００からスリープ要求信号１１を受理したとき（Ｓ１１）、プロセッサ装置１００はバスアクセス中か否かを判定する（Ｓ１２）。バスアクセス中であれば、プロセッサ装置１００はバス制御器３００に停止通知信号２１をアサートし（Ｓ１３）、バス制御器３００からの停止通知受理信号２２がアサートされるのを確認（Ｓ１４）した後、ホストＣＰＵ２００にスリープ応答信号１２をアサートすることにより応答する（Ｓ１５）。一方、バスアクセス中でなければ、プロセッサ装置１００は直ちにホストＣＰＵ２００にスリープ応答信号１２を応答する（Ｓ１５）。スリープ応答信号１２がアサートされた後ホストＣＰＵ２００は、クロック信号ｃｌｋ４２の供給を停止するようクロック制御器５００を制御する（Ｓ１６）。
【００６２】
図４は、プロセッサ装置１００をスリープ状態６０１からプログラム実行状態６００に復帰させるまでの処理を示す概略フローチャートである。
【００６３】
同図において、プロセッサ装置１００のスリープ状態を解除するには、ホストＣＰＵ２００は、まず、クロック信号ｃｌｋ４２の供給を再開するようクロック制御器５００を制御し（Ｓ２１）、スリープ要求信号１１をネゲートする。スリープ要求信号１１がネゲートされたとき、プロセッサ装置１００は、スリープ状態６０１からプログラム実行状態６００に遷移する処理を行い（Ｓ２３）、停止通知信号２１をアサートしている場合は、プロセッサ装置１００はバス制御器３００に対して出力する停止通知信号２１をネゲートする（Ｓ２５)。
【００６４】
図５は、バス制御器３００の詳細な構成を示すブロック図である。同図のようにバス制御器３００は、共有バッファ３０５、共有バッファ判定部３０６、コマンド実行部３１０を備える。コマンド実行部３１０は、コマンド制御部３０１、３０１ａ、コマンド調停部３０２、ライトデータ制御部３０３、リードデータ制御部３０４を備える。
【００６５】
共有バッファ３０５は、プロセッサ装置１００、プロセッサ１００ａ、プロセッサ１００ｂなどから発行されたコマンド要求に従ってアクセスされたリードデータを一時的に保持するバッファであり、プロセッサ装置１００、プロセッサ１００ａ、プロセッサ１００ｂなどのバス制御器３００に接続されている複数のプロセッサに共有される。この共有によりバス制御器３００の実装面積を低減することができる。
【００６６】
共有バッファ判定部３０６は、共有バッファの空き容量がしきい値以上であるか否かを判定する。しきい値は、最新のコマンド要求によるリードデータのサイズや、一定の値でよい。共有バッファ判定部３０６は、停止通知信号２１を受けたとき、空き容量がしきい値以上であれば、プロセッサ装置１００に停止通知受理信号２２を即座に送信し、空き容量がしきい値以上でなければ、プロセッサ装置１００に停止通知受理信号２２を送信することを保留する。なお、バス制御器３００が、共有バッファ３０５の代わりに、プロセッサ装置１００専用のバッファを備え、上記判定をすることなく停止通知受理信号２２を送信するようにしてもよい。
【００６７】
コマンド実行部３１０は、プロセッサ装置１００等からのコマンド要求に従ってメモリアクセスを実行する。
【００６８】
コマンド制御部３０１は、プロセッサ装置１００から発行されたコマンド要求を保持する。具体的には、コマンド制御部３０１は、停止通知信号２１を受けたとき、プロセッサ装置１００からコマンド要求信号２３がアサートされている場合、当該コマンド要求信号２３を受理（内部に保持）した後に、コマンド要求信号２３の入力をマスクし、プロセッサ装置１００からコマンド要求が出力されていない場合、コマンド要求信号２３の入力をマスクする。この後、前記停止通知信号が解除された場合に、コマンド制御部３０１は、マスクを解除する。コマンド制御部３０１ａは、プロセッサ１００ａから発行されたコマンド要求を保持する点以外、コマンド制御部３０１と同様である。これらのコマンド制御部は、バス制御器３００に接続されるプロセッサと同数備えられる。
【００６９】
コマンド調停部３０２は、複数のコマンド制御部からのコマンド要求が競合した場合に調停し、調停の結果何れか１つのコマンド要求を選択する。選択されたコマンド要求は、メモリＩ／Ｆ１００１またはＩ／Ｏ制御部１００２を介して、アクセス制御信号としてメモリまたはＩ／Ｏに出力される。
【００７０】
ライトデータ制御部３０３は、コマンド調停部３０２により選択されたコマンド要求がライトアクセスである場合に、プロセッサ装置１００、プロセッサ１００ａ等から出力され、選択されたコマンド要求に対応するライトデータを選択する。
【００７１】
リードデータ制御部３０４は、メモリＩ／Ｆ１００１またはＩ／Ｏ制御部１００２を介してメモリまたはＩ／Ｏから読み出されたデータを選択し、共有バッファ３０５に格納する。
【００７２】
図６は、プロセッサ装置１００をプログラム実行状態６００からスリープ状態６０１に遷移し、さらにプログラム実行状態６００に復帰するまでの詳細な処理を示すフローチャートである。同図左から１列目はホストＣＰＵ２００およびプロセッサ装置１００の処理の流れを示す。左から２列目はバス制御器３００におけるリードアクセスとライトアクセスに共通するコマンド要求の制御の流れを示す。左から３列目はバス制御器３００におけるリードアクセスの制御の流れを示す。左から４列目はバス制御器３００におけるライトアクセスの制御の流れを示す。図中の黒丸は処理の開始を意味する。周りに丸がついた黒丸は処理の終了を意味する。２入力１出力の太い横棒シンボル（例えばＳ１１３）は２つの信号または状態が揃うことを意味する。１入力２出力の太い横棒シンボル（例えばＳ１２７）は１つの信号または状態を２つに分配することを意味する。２入力１出力の菱型シンボル（例えばＳ１０５）は、択一的な通過点を意味する。１入力２出力の菱型シンボル（例えばＳ１２４）は判定を意味する。図中の機能ブロックは、メモリＩ／Ｆ１００１またはＩ／Ｏ制御部１００２である。
【００７３】
同図左から１列目に示したホストＣＰＵ２００およびプロセッサ装置１００の処理の流れについては図３および図４とほぼ同様なので省略する。ここでは同図左から２列目乃至４列目に示したバス制御器３００の制御の流れを中心に説明する。
【００７４】
プロセッサ装置１００は、バスアクセス中にホストＣＰＵ２００からスリープ要求信号１１を受けると、停止通知信号２１をアサートする（Ｓ１０３）。停止通知信号２１がアサートされると、バス制御器３００は、プロセッサ装置１００からのコマンド要求信号２３が受理されている否か（コマンド制御部３０１に保持されているか否か）を判定し（Ｓ１２１）、受理されている場合はコマンド要求信号２３の入力をマスクしてからＳ１２３に進み、受理されていない場合でコマンド要求信号２３がアサートされている場合には受理（Ｓ１２２）してから、コマンド要求信号２３の入力をマスクし、さらにＳ１２３に進む。Ｓ１２３の次に、コマンド制御部３０１は、受理されたコマンド要求がリードアクセスかライトアクセスかを判定する（Ｓ１２４）。
【００７５】
リードアクセスと判定された場合、共有バッファ判定部３０６は、共有バッファ３０５にしきい値より大きな空き領域があるか否かを判定し（Ｓ１２５）、しきい値より大きな空き領域がある場合は停止通知受理信号２２をアサートする（Ｓ１２６）。アサートされた停止通知受理信号２２は、プロセッサ装置１００に通知される（Ｓ１２７→Ｓ１２８→Ｓ１０５）と共にコマンド制御部３０１に通知される（Ｓ１２７）。停止通知受理信号２２をアサートしているとき、コマンド実行部３１０は、コマンド要求信号２３に応答する信号(すなわちコマンド受理信号２４、ライトデータ受理信号２６、リードデータ有効信号２７)をプロセッサ装置１００に出力することを禁止する。これは、スリープ状態のプロセッサ装置１００はこれらの信号を認識できないからである。
【００７６】
コマンド制御部３０１に保持されたリードコマンド要求は、さらにコマンド調停部３０２からメモリＩ／Ｆ１００１またはＩ／Ｏ制御部１００２を介して、アクセス制御信号としてメモリまたはＩ／Ｏに出力され（Ｓ１２９）、メモリまたはＩ／Ｏからのリードデータ出力待ちになる（Ｓ１３０）。
【００７７】
さらに、メモリまたはＩ／Ｏからのリードデータが出力されると、リードデータはメモリＩ／Ｆ１００１またはＩ／Ｏ制御部１００２と、リードデータ制御部３０４を介して共有バッファ３０５に格納され、メモリＩ／Ｆ１００１またはＩ／Ｏ制御部１００２が開放される（Ｓ１３１）。
【００７８】
一方Ｓ１２４においてライトアクセスと判定された場合、共有バッファ判定部３０６は、停止通知受理信号２２をアサートする（Ｓ１３３→Ｓ１２８→Ｓ１０５）。コマンド制御部３０１に保持されたライトコマンド要求は、さらにコマンド調停部３０２に出力される。コマンド調停部３０２は、プロセッサ装置１００からライトデータが既にメモリＩ／Ｆ１００１またはＩ／Ｏ制御部１００２に出力されているか否かを判定し（Ｓ１３５）、出力されている場合は、メモリＩ／Ｆ１００１またはＩ／Ｏ制御部１００２からメモリまたはＩ／Ｏにライトデータを書き込み（Ｓ１３６→Ｓ１３７）、出力されていない場合はライトアクセスをしない（Ｓ１３５→Ｓ１３７）。
【００７９】
さらに、プロセッサ装置１００がスリープ状態から実行状態に遷移し、停止通知信号２１をネゲートした場合について説明する。
【００８０】
プロセッサ装置１００が停止通知信号２１をネゲートすると、コマンド制御部３０１ａからコマンド受理信号２４が出力される（Ｓ１１３→Ｓ１４１→Ｓ１４２）。バス制御器３００は、リードアクセスである場合、共有バッファ３０５からリードデータを出力し、プロセッサ装置１００からのリードデータ受理信号２８を待つ（Ｓ１４３→Ｓ１４４→Ｓ１４５）。
【００８１】
これによりプロセッサ装置１００は、リードデータを取得する。また、バス制御器３００は、ライトアクセスである場合、プロセッサ装置１００からライトデータが既にメモリＩ／Ｆ１００１またはＩ／Ｏ制御部１００２に出力されていたか否かを判定し（Ｓ１４６）、出力されていた場合には、ライトアクセスが完了しているので何もしない。出力されていなかった場合には、プロセッサ装置１００からライトデータが出力されるのを待ち（Ｓ１４７）、ライトデータが出力されるとライトデータ受理信号２６をプロセッサ装置１００に出力し（Ｓ１４８）、メモリＩ／Ｆ１００１またはＩ／Ｏ制御部１００２からメモリまたはＩ／Ｏにライトデータを書き込む（Ｓ１４９）。
【００８２】
このように、プロセッサ装置１００は、バスアクセス中にスリープ状態に遷移し、さらにホストＣＰＵ２００からのスリープ要求信号１１がネゲートされたときに、バスアクセスを完遂する。
【００８３】
以上説明してきたように、本実施形態における計算機システム１においてプロセッサ装置１００は、スリープ要求信号１１を受けたとき、バス制御器３００に停止状態に遷移することを示す停止通知信号を出力し、その応答としてバス制御器３００から停止通知受理信号２２を受信した後に、前記スリープ応答信号を応答する。停止通知受理信号２２は共有バッファ３０５に十分な空き容量がないとき以外は即座にアサートされるので、プロセッサ装置１００は、スリープ応答信号を即座に応答することができる。これにより、スリープ要求への応答性の大幅に改善し、消費電力をさらに削減することができる。バス制御器３００は停止通知を受けることによりプロセッサ装置１００がスリープ状態になったことを認識でき、スリープ状態のプロセッサ装置１００に応答を要する信号を出力することを回避する。
【００８４】
なお、上記の停止通知受理信号２２は場合により省略してもよい。たとえば、バス制御器３００が共有バッファ３０５の代わりにプロセッサ装置１００専用のバッファを備える場合や、バス制御器３００にプロセッサ装置１００以外のアクセス主体となるプロセッサが接続されない場合には、停止通知受理信号２２は省略してもよい。
【００８５】
図７は、停止通知受理信号２２が省略される場合の、スリープ状態への遷移を示す概略フローチャートである。同図は図３と比べてステップＳ１４が削除されている点が異なる。同じ点は説明を省略して異なる点を中心に説明する。図７において、プロセッサ装置１００は、バス制御器３００に停止通知信号２１を出力後、直ちにホストＣＰＵ２００にスリープ応答信号１２を出力する。これにより、スリープ状態の期間はホストＣＰＵ２００が要求する期間に一致し、ホストＣＰＵ２００が要求する最大限の消費電力削減効果を得ることができる。
【００８６】
図８は、停止通知受理信号２２が省略される場合の、スリープ状態への遷移処理を示す詳細なフローチャートである。同図は図６と比べて、ステップＳ１０４、Ｓ１０５の代わりにＳ１１５を有し、ステップＳ１２５〜Ｓ１２８が削除されている点が異なる。同じ点は説明を省略して異なる点を中心に説明する。
【００８７】
ステップ１１５において、プロセッサ装置１００は、停止通知信号２１をアサートしたとき、停止通知受理信号２２を確認することなく、直ちにホストＣＰＵ２００へスリープ応答信号１２をアサートしている。これにより、スリープ状態への移行はホストＣＰＵ２００の要求したタイミングに一致させることができる。
【００８８】
また、バス制御器３００は、停止通知受理信号２２応答する必要がないのでステップＳ１２５〜Ｓ１２８が削除され、その分回路規模を小さくすることができる。
【００８９】
（実施の形態２）
本実施の形態における計算機システムでは、マイクロスリープ状態において、停止状態のプロセッサユニットの外部にあるカウンタが、低速のクロック信号に切り替えられ、なおかつ静止状態でも動作状態とほぼ同じまたは完全に同じ精度でサイクル数をカウントするプロセッサ装置１５０について説明する。
【００９０】
図９は、本発明の実施の形態２における計算機システムの全体構成を示す機能ブロック図である。図９の計算機システム２は、図１と比較して、プロセッサ装置１００およびクロック制御器５００の代わりにプロセッサ装置１５０およびクロック制御器５０１を備える点が異なる。同じ点は説明を省略して異なる点を中心に説明する。
【００９１】
クロック制御器５０１は、クロック信号ｃｌｋ４２に加えてクロック信号ｃｌｋＬ４３を１５０に供給する。クロック信号ｃｌｋＬ４３は、クロック信号ｃｌｋ４２のＫ倍の周期を有する。Ｋは２のべき乗が望ましい。ここではＫは８とする。
【００９２】
プロセッサ装置１５０は、プロセッサ装置１００と比べて、ローカルクロック制御器１３０およびＶＭＰコントローラ１４０の代わりにローカルクロック制御器１３１およびＶＭＰコントローラ１６０を備える点が異なっている。
【００９３】
ローカルクロック制御器１３１は、クロック制御器５０１からクロック信号ｃｌｋ４２が入力され、プロセッサユニット１１０にクロック信号ｃｌｋ＿ｐｅ１０１を供給し、ＶＭＰコントローラ１６０にクロック信号ｃｌｋ＿ｖｍｐ１０２を供給する。クロック信号ｃｌｋ＿ｐｅ１０１は、クロック信号ｃｌｋ４２と同じ周波数であり、停止状態では停止する。クロック信号ｃｌｋ＿ｖｍｐ１０２は、動作状態ではクロック信号ｃｌｋ４２と同じ周波数（以下通常クロックと呼ぶ）、マイクロスリープ状態でかつ通常クロックが必要ではないとき、クロック信号ｃｌｋＬ４３と同じ周波数（以下低速クロックと呼ぶ）である。
【００９４】
ＶＭＰコントローラ１６０は、ＶＭＰコントローラ１４０と比べて、ローカルクロック制御器１３１に対して出力する信号として、マイクロスリープ状態信号１０３および通常クロック要求信号１０４が追加されている点が異なっている。マイクロスリープ状態信号１０３は、プロセッサ装置１５０がマイクロスリープ状態にあることを示す信号である。通常クロック要求信号１０４は、クロック信号ｃｌｋ＿ｖｍｐ１０２として、クロック信号ｃｌｋ４２とクロック信号ｃｌｋＬ４３とのいずれを使用するかを示す信号である。通常クロック要求信号１０４がアサートされているとき、ローカルクロック制御器１３１は、通常のクロック信号ｃｌｋ４２をクロック信号ｃｌｋ＿ｖｍｐ１０２として出力する。
【００９５】
図１０は、ＶＭＰコントローラ１６０の詳細な構成を示すブロック図である。同図のようにＶＭＰコントローラ１６０は、カウンタ１６１、制御部１６２を備える。
【００９６】
カウンタ１６１は、現在実行中のプログラムに割り当てられた時間を０にまでダウンカウントするために、保持部１５１と、減算数選択部１５２と、減算器１５３とを備える。
【００９７】
保持部１５１は現在のカウント値を保持するレジスタである。
状態制御部１４５は減算数選択信号１５４を減算数選択部１５２に出力する。減算数選択信号１５４は、減算数として１またはＫのいずれを選択するかを表す信号である。減算数選択部１５２は、プロセッサ装置１５０が動作状態であるときは、減算数として１を選択し、マイクロスリープ状態であるときはＫを選択する。
【００９８】
減算器１５３は、現在のカウント値から、減算数選択部１５２からの減算数を減算する。減算結果は、保持部１５１に保持される。
【００９９】
このように、カウンタ１６１は、プロセッサ装置１５０が動作状態のときクロック信号ｃｌｋ４２を用いて１ずつカウントダウンし、マイクロスリープ状態でかつ通常クロック要求信号１０４がクロック信号ｃｌｋＬ４３を選択しているとき、クロック信号ｃｌｋＬ４３を用いてＫずつカウントダウンする。マイクロスリープ状態でカウントされるサイクル数または時間は、動作状態でカウントされるサイクル数または時間とほぼ同じ結果となる（最大で（Ｋ−１）サイクルの遅くなる）。
【０１００】
さらに、カウンタ１６１は、マイクロスリープ状態において保持部１５１のカウント値がＫ未満になったとき、通常のクロック信号ｃｌｋ４２により１ずつダウンカウントすることができる。
【０１０１】
制御部１６２は、時分割多重による仮想プロセッサのスケジューリングと、プロセッサ装置１５０の実行状態とマイクロスリープ状態との遷移と、カウンタ１６１の減算数およびクロック信号を制御する。そのため制御部１６２は、割り込み検出器１４２、ＰＵＩ／Ｆ１４３、制御レジスタ１４４、状態制御部１４５、カウント値判定部１４６を備える。
【０１０２】
割り込み検出器１４２は、割り込み制御器４００からの割り込み信号３１が入力され、割込みを検出する。この割込みは、マイクロスリープ状態を解除するトリガーとなる。
【０１０３】
ＰＵＩ／Ｆ１４３は、プロセッサユニット１１０との通信をするためのＩ／Ｆである。プロセッサユニット１１０は、ＰＵＩ／Ｆ１４３を介して制御部１６２にアクセスする。
【０１０４】
制御レジスタ１４４は、プロセッサユニット１１０のプログラムによりリード／ライト可能なレジスタである。制御レジスタ１４４は、マイクロスリープ状態におけるカウンタ１６１の動作モードを指示するモードフラグを保持する。モードフラグはプロセッサユニット１１０により設定され、そのフラグ値０は、マイクロスリープ状態において保持部１５１のカウント値がＫ未満になったとき、通常のクロック信号ｃｌｋ４２により１ずつダウンカウントする動作モードを示す。そのフラグ値１は、マイクロスリープ状態においてカウンタ１６１のカウント値がＫ未満になったときの、Ｋから１への減算数の変更を禁止する。
【０１０５】
カウント値判定部１４６は、保持部１５１に保持されたカウント値がＫより大きいか否かを判定する。具体的には、カウント値判定部１４６は、カウント値がＫより大きいとき、カウント値判定信号をネゲートし、カウント値がＫ以下のとき、カウント値判定信号をアサートする。
【０１０６】
状態制御部１４５は、プロセッサ装置１５０の状態遷移を制御する。プロセッサ装置１５０の状態遷移は図１５に示した通りである。状態制御部１４５は、マイクロスリープ状態６０２のとき、マイクロスリープ状態信号１０３をアサートする。マイクロスリープ状態６０２で、かつ、カウント値判定信号がネゲート（カウント値＞Ｋ）されているとき、通常クロック要求信号１０４をネゲート（低速クロックを選択）し、減算数選択信号１５４をアサートする（減算数選択部１５２に減算数Ｋを選択させる）。マイクロスリープ状態６０２で、かつ、カウント値判定信号がアサート（カウント値＝＜Ｋ）されているとき、通常クロック要求信号１０４をアサート（通常クロックを選択）し、減算数選択信号１５４をネゲート（減算数を１に）する。
【０１０７】
次に本発明の実施の形態における計算機システム２について、その動作を説明する。
図１１および図１２は、プロセッサ装置１００がマイクロスリープ状態６０２に遷移する前後でコンテキストの切り替えが発生しない場合のタイムチャートを示す。同図では、上から、プロセッサ装置１５０の状態、マイクロスリープ状態信号１０３、クロック信号ｃｌｋ＿ｐｅ１０１、クロック信号ｃｌｋ＿ｖｍｐ１０２、カウンタ１６１のカウント値を示している。
【０１０８】
ＶＭＰコントローラ１６０は、プロセッサユニット１１０で実行するプログラムが存在しないことを検出すると、プロセッサ装置１００をマイクロスリープ状態６０２に遷移させる動作を開始する。このとき、ローカルクロック制御器１３１に対して出力するマイクロスリープ状態信号１０３をアサートする（図１１の時刻Ｔ２０）。図１１では、この時点でプログラムの実行時間を計数するカウンタ１６１の残りサイクル数が１０２４サイクルである場合を示している。ローカルクロック制御器１３１はマイクロスリープ状態信号１０３がアサートされたとき、クロック信号ｃｌｋ＿ｐｅ１０１を停止させ、ＶＭＰコントローラ１６０に供給するクロック信号ｃｌｋ＿ｖｍｐ１０２をクロック信号ｃｌｋＬ４３に切り替える。ここではクロック信号ｃｌｋＬ４３の周波数はｃｌｋの周波数の８分の１であるとする。ＶＭＰコントローラ１６０はクロック信号ｃｌｋ＿ｖｍｐ１０２を用いてプログラムの実行時間の残りを計数する。カウンタ１６１で計数するときに減じるサイクル数はこのとき８に変更する。減じるサイクル数を８に変更する理由は、プログラム実行の残りサイクル数をカウントするときに、クロックの周波数を低周波数に切り替えたことの影響を相殺するためである。
【０１０９】
カウンタ１６１の残りサイクル数が０になると、ＶＭＰコントローラ１６０はマイクロスリープ状態信号１０３をネゲートする（時刻Ｔ２１）。ローカルクロック制御器１３１はマイクロスリープ状態信号１０３がネゲートされたとき、クロック信号ｃｌｋ＿ｐｅ１０１およびクロック信号ｃｌｋ＿ｖｍｐ１０２をクロック信号ｃｌｋ４２に切り替える。
【０１１０】
上記のように図１１の動作では、マイクロスリープ状態でカウントされる時間を、動作状態でカウントされる時間とほぼ一致させることができる。時間の制約が厳しいリアルタイム処理を実行させるのに適している。
【０１１１】
なお、Ｔ２１の時点で実行可能なプログラムが存在しない場合は、引き続きマイクロスリープ状態を継続する。この場合、のちに別のプログラムが実行可能な状態になったときに、プログラム実行状態に遷移する。
【０１１２】
図１１では残りサイクル数が８の倍数である１０２４である場合を説明したが、８の倍数ではない場合について、図１２を用いて動作を説明する。
【０１１３】
図１２では、カウンタ１６１の残りサイクル数が７００である場合について説明する。この場合、時刻Ｔ２２において残りサイクル数が４となった時点（すなわち残りサイクル数が８より小さくなった時点）で、ＶＭＰコントローラ１６０がローカルクロック制御器１３１に出力する通常クロック要求信号１０４をアサートする（時刻Ｔ２３）。ローカルクロック制御器１３１は通常クロック要求信号１０４がアサートされると、クロック信号ｃｌｋ＿ｖｍｐ１０２をクロック信号ｃｌｋ４２に切り替える。そののち、カウンタ１６１の残りサイクル数が０になったとき、マイクロスリープ状態信号１０３および通常クロック要求信号１０４をネゲートする（時刻Ｔ２４）。ローカルクロック制御器１３１はマイクロスリープ状態信号１０３がネゲートされたとき、図１１の動作と同様にクロック信号ｃｌｋ＿ｐｅ１０１およびクロック信号ｃｌｋ＿ｖｍｐ１０２をクロック信号ｃｌｋ４２に切り替える。
【０１１４】
上記のように図１２の動作では、マイクロスリープ状態でカウントされる時間を、動作状態でカウントされる時間と完全に一致させることができる。その結果、より時間の制約が厳しいリアルタイム処理を実行させるのみ適している。
【０１１５】
次に、プロセッサ装置１００がマイクロスリープ状態６０２においてコンテキスト転送が発生する場合について説明する。
【０１１６】
図１３は、プロセッサ装置１００がマイクロスリープ状態６０２の間にコンテキスト転送を行なうタイムチャートを示す。
【０１１７】
図１３の時刻Ｔ２５においてプロセッサ装置１００がプログラム実行状態６００からマイクロスリープ状態６０２に遷移し、そののち時刻Ｔ２８でふたたびプログラム実行状態６００に遷移するときにコンテキスト切り替えが必要である場合、図１３に示すように時刻Ｔ２５から時刻Ｔ２８までの間にコンテキストの転送を行う。コンテキストの転送を行っている状態をコンテキスト転送状態６０３という。図１３では時刻Ｔ２６からコンテキストの転送を行い、時刻Ｔ２７において完了する。コンテキストの転送の開始は、ＶＭＰコントローラ１６０によって決められる。ＶＭＰコントローラ１６０は、例えば、マイクロスリープ状態の開始時点から一定時間経過時点、マイクロスリープ状態におけるカウント値が所定値になった時点に、必要に応じてコンテキスト転送の開始を決定する。コンテキストの転送を行うために、ＶＭＰコントローラ１６０がマイクロスリープ状態信号１０３をネゲートし、クロック信号ｃｌｋ＿ｐｅ１０１およびクロック信号ｃｌｋ＿ｖｍｐ１０２をクロック信号ｃｌｋ４２に切り替える。このようにしてコンテキストの転送をプロセッサ装置１００がプログラムを実行するときと同じ周波数で高速に転送する。コンテキストの転送が完了する時刻Ｔ２７において、再びＶＭＰコントローラ１６０がマイクロスリープ状態信号１０３をアサートし、クロック信号ｃｌｋ＿ｐｅ１０１の供給を停止させ、クロック信号ｃｌｋ＿ｖｍｐ１０２をクロック信号ｃｌｋＬ４３に切り替える。
【０１１８】
上記のようにマイクロスリープ状態の間にコンテキスト転送を通常クロックにより高速に実行するので、切り替え先のプログラム開始時刻を遅らせることなく、処理性能を確保することができる。
【０１１９】
このように、マイクロスリープ状態６０２におけるカウンタ１６１およびコンテキストの転送を行うクロックをＶＭＰコントローラ１６０が最適に制御することができる。
【０１２０】
また、プロセッサ装置１００はマイクロスリープ状態６０２にあるときに、割り込み信号３１がアサートされることによってもプログラム実行状態６００に遷移する。このときの動作を図１４のタイムチャートに示した。同図の時刻Ｔ２９において割り込み信号がアサートされたとき、コンテキストの切り替えが必要な場合、プロセッサ装置１００はコンテキスト転送状態６０３に遷移する。割り込み信号３１によりプログラム実行状態６００に遷移する場合で、プログラム実行の緊急度が高い場合は、本図のように時刻Ｔ３０で直ちにプログラム実行状態６００に遷移する。
【０１２１】
なお、実行状態からマイクロスリープ状態に次のように遷移してもよい。プロセッサユニット１１０は、現在実行中のプログラムが割り当てられた時間内に実行すべき処理を完了したとき、まず、プロセッサユニット１１０がクロックの供給された状態でhaltし、その直後にマイクロスリープ状態に遷移する。こうすれば、haltするだけでも消費電力の削減効果があり、さらにクロック停止することにより、さらなる消費電力の削減効果がある。
【０１２２】
なお、本実施例ではクロック信号ｃｌｋＬ４３をプロセッサ装置１００の外部から供給する構成をとっているが、他の構成として、例えばクロック信号ｃｌｋ４２をプロセッサ装置１００の内部で分周することによりプロセッサ装置１００の内部で生成してもよい。
【０１２３】
なお、ここでコンテキスト転送状態６０３にあるときにプロセッサユニット１１０やメモリ制御器１２０に対してクロック供給を再開したが、マイクロスリープ状態６０２の途中でコンテキスト転送状態６０３に遷移する本例では、コンテキスト転送状態６０３においてプログラムの実行を行わないので、プロセッサユニット１１０全体およびメモリ制御器１２０全体に対してクロックの供給を行う必要はない。従って、コンテキストの転送に関わる回路のみに対してクロック供給を行う構成も考えられる。
【０１２４】
なお、処理の緊急度が低く、リアルタイム性の保証がよりも消費電力の削減の方が優先されるプログラムを実行する場合には、ここで説明したクロック信号ｃｌｋ＿ｖｍｐ１０２のクロック信号ｃｌｋ４２への切り替えを行わずにクロック信号ｃｌｋＬ４３に設定したままでコンテキストの転送やマイクロスリープ状態６０２のサイクル数の計数を行うことも可能である。この選択のために、ＶＭＰコントローラ１６０に選択レジスタを備え、ソフトウェアでユーザが設定することができる構成も考えられる。
【０１２５】
（実施の形態３）
図１６は、本発明の実施の形態３に係る計算機システムを用いた音楽再生機能付き携帯電話装置２０００の全体構成を示す機能ブロック図である。
【０１２６】
図１６に示すように、音楽再生機能付き携帯電話装置２０００はシステムＬＳＩ１０００と、アンテナ２００１と、高周波信号送受信部２００２と、外部メモリ２００３と、入出力部２００４と、ＳＤＲＡＭ２００５とを備える。
【０１２７】
システムＬＳＩ１０００は、実施の形態１または２で説明した計算機システム１または２と、メモリＩ／Ｆ１００１と、Ｉ／Ｏ制御部１００２とを備える。
【０１２８】
まず外部メモリ２００３上に蓄積された音楽データをＩ／Ｏ制御部１００２が読み出し、ＳＤＲＡＭ２００５に格納する。プロセッサ装置１００は音楽データの再生処理を行うためにＳＤＲＡＭ２００５から音楽データを読み出し、再生処理を行う。再生処理後のデータ再びＳＤＲＡＭ２００５に格納する。
【０１２９】
ＳＤＲＡＭ２００５に蓄積された再生処理後のデータは、メモリＩ／Ｆ１００１を介してＩ／Ｏ制御部１００２が再び読み出し、入出力部２００４に送る。入出力部２００４はスピーカを内蔵した受話器である。ユーザは再生した音楽を入出力部２００４が備えるスピーカから聴くことができる。
【０１３０】
この音楽データの再生処理を行っている間、プロセッサ装置１００は常に稼動しているわけではなく、プログラムを実行する必要がない期間がある。この期間、携帯電話の消費電力を削減する目的で、プロセッサ装置１００をマイクロスリープ状態６０２に遷移させる。
【０１３１】
マイクロスリープ状態６０２への遷移方法は実施の形態２で説明した通りである。
ここでプロセッサ装置１００がマイクロスリープ状態６０２である間に、アンテナ２００１から通話のための電波を受信した場合について、その動作を説明する。
【０１３２】
アンテナ２００１から通話のための電波を受信したとき、高周波信号送受信部２００２はこれを検出してＩ／Ｏ制御部１００２に通知する。Ｉ／Ｏ制御部１００２はこのとき、割り込み制御器４００に対して割り込み信号を出力する。割り込み制御器４００はこのとき、プロセッサ装置１００に対して割り込み信号を出力する。プロセッサ装置１００は割り込み信号を受信したとき、プログラム実行状態６００に遷移して通話処理を行うために、まずマイクロスリープ状態６０２からコンテキスト転送状態６０３に遷移する。そして通話処理のためのコンテキストを転送したのち、プログラム実行状態６００に遷移する。コンテキスト転送状態６０３に遷移したときのクロックの制御方法は実施の形態２で説明した通りである。
【産業上の利用可能性】
【０１３３】
本発明は、クロック信号の供給を受ける実行状態と外部からのスリープ要求信号に対してスリープ応答信号を応答することにより前記クロック信号の供給が停止される停止状態とを有するプロセッサ装置を備える計算機システムに適しており、特に携帯電話など高度な低消費電力化が求められる機器において非常に有用である。
【図面の簡単な説明】
【０１３４】
【図１】実施の形態１における計算機システムの構成を示すブロック図である。
【図２】プロセッサ装置１００の実行状態とスリープ状態との遷移を示すタイムチャートである。
【図３】スリープ状態６０１に遷移する処理を示す概略フローチャートである。
【図４】プログラム実行状態６００に復帰する処理を示す概略フローチャートである。
【図５】バス制御器３００の詳細な構成を示すブロック図である。
【図６】スリープ状態に遷移し、さらに実行状態に復帰するまでの詳細な処理を示すフローチャートである。
【図７】停止通知受理信号２２が省略される場合の、スリープ状態への遷移を示す概略フローチャートである。
【図８】停止通知受理信号２２が省略される場合の、スリープ状態への遷移処理を示す詳細なフローチャートである。
【図９】実施の形態２における計算機システムの構成を示す機能ブロック図である。
【図１０】ＶＭＰコントローラ１６０の詳細な構成を示すブロック図である。
【図１１】マイクロスリープ状態６０２の前後でコンテキスト転送が発生しない場合のタイムチャートである。
【図１２】マイクロスリープ状態６０２の期間のサイクル数が８サイクルの逓倍でない場合を示すタイムチャートである。
【図１３】プロセッサ装置１００がマイクロスリープ状態６０２の間にコンテキスト転送を行なうタイムチャートを示す。
【図１４】割り込み信号によってプログラム実行状態６００に遷移する動作を示すタイムチャートである。
【図１５】プロセッサ装置の状態遷移を示す図である。
【図１６】実施の形態３における計算機システムを用いた音楽再生機能付き携帯電話装置２０００の構成を示す機能ブロック図である。
【符号の説明】
【０１３５】
１、２  計算機システム
１１  スリープ要求信号
１２  スリープ応答信号
２１  停止通知信号
２２  停止通知受理信号
２３  コマンド要求信号
２４  コマンド受理信号
２５  ライトデータ有効信号
２６  ライトデータ受理信号
２７  リードデータ有効信号
２８  リードデータ受理信号
３１  割り込み信号
４１  クロック制御信号
４２  クロック信号ｃｌｋ
４３  クロック信号ｃｌｋＬ
１００、１５０  プロセッサ装置
１００ａ、１００ｂ  プロセッサ
１０１  クロック信号ｃｌｋ＿ｐｅ
１０２  クロック信号ｃｌｋ＿ｖｍｐ
１０３  マイクロスリープ状態信号
１０４  通常クロック要求信号
１１０  プロセッサユニット
１２０  メモリ制御器
１３０、１３１  ローカルクロック制御器
１４０、１６０  ＶＭＰコントローラ
１４１、１６１  カウンタ
１４２  割り込み検出器
１４３  ＰＵＩ／Ｆ
１４４  制御レジスタ
１４５  状態制御部
１４６  カウント値判定部
１５１  保持部
１５２  減算数選択部
１５３  減算器
１５４  減算数選択信号
１６２  制御部
２００  ホストＣＰＵ
３００  バス制御器
３０１、３０１ａ  コマンド制御部
３０２  コマンド調停部
３０３  ライトデータ制御部
３０４  リードデータ制御部
３０５  共有バッファ
３０６  共有バッファ判定部
３１０  コマンド実行部
４００  割り込み制御器
５００，５０１  クロック制御器
６００  プログラム実行状態
６０１  スリープ状態
６０２  マイクロスリープ状態
６０３  コンテキスト転送状態
１０００  システムＬＳI
１００１  メモリＩ／Ｆ
１００２  Ｉ／Ｏ制御部
２０００  音楽再生機能付き携帯電話装置
２００１  アンテナ
２００２  高周波信号送受信部
２００３  外部メモリ
２００４  入出力部
２００５  ＳＤＲＡＭ
【図１】
0004940033.tif 000002
【図２】
0004940033.tif 000003
【図３】
0004940033.tif 000004
【図４】
0004940033.tif 000005
【図５】
0004940033.tif 000006
【図６】
0004940033.tif 000007
【図７】
0004940033.tif 000008
【図８】
0004940033.tif 000009
【図９】
0004940033.tif 000010
【図１０】
0004940033.tif 000011
【図１１】
0004940033.tif 000012
【図１２】
0004940033.tif 000013
【図１３】
0004940033.tif 000014
【図１４】
0004940033.tif 000015
【図１５】
0004940033.tif 000016
【図１６】
0004940033.tif 000017