説明

計算機システム、プロセッサ装置および計算機システムの制御方法

【課題】低消費電力モードへの移行の応答性の大幅に改善し、消費電力を削減する計算機システムを提供する。
【解決手段】本発明の計算機システムは、実行状態と停止状態とを有するプロセッサ装置と、プロセッサ装置からのコマンド要求に従って機能ブロックをアクセスするアクセス制御手段とを備え、プロセッサ装置は、スリープ要求信号を受けると、スリープ応答信号を応答するとともに、停止状態に遷移することを示す停止通知信号をアクセス制御手段に出力し、アクセス制御手段は、停止通知信号を受けたとき、プロセッサ装置からコマンド要求が出力されている場合、コマンド要求を受理した後に、コマンド要求の入力をマスクし、プロセッサ装置からコマンド要求が出力されていない場合、コマンド要求の入力をマスクし、停止通知信号が解除された場合に、マスクを解除する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電力削減機能を有する計算機システムに関し、特に、クロック信号の供給を受ける実行状態と、外部からのスリープ要求信号に対してスリープ応答信号を応答することにより前記クロック信号の供給が停止される停止状態との間を遷移するプロセッサ装置を備える計算機システムおよび計算機システムの制御方法に関する。
【背景技術】
【0002】
近年、携帯電話などの移動体通信機器の需要が急速に高まる中、移動体通信用のLSIの需要もますます高まっている。そして、移動体通信機器の高機能化にともない、移動体通信用のLSIにおいても一つのLSIに複数のプロセッサを内蔵するマルチプロセッサ構成や、並列処理を行うことが可能なプロセッサを実装することも多くなっている。
【0003】
特許文献1には、低消費電力モード移行時に周辺回路の処理を無効にしないマイクロコントローラの制御方法が開示されている。この制御方法は、まず、周辺回路が動作しているかどうかを判断する。周辺回路が動作していないと判断された場合には、CPUへのクロックおよび周辺回路へのクロックを低消費電力モードに切り替える。逆に、周辺回路が動作していると判断された場合には、周辺回路へのクロックは周辺回路の動作が終了した後に低消費電力モードに切り換える。これにより周辺回路の処理を無効にしないようにしている。
【0004】
また、特許文献2には、スタンバイ状態から通常動作への移行を迅速に行なうデータ処理装置を開示している。このデータ処理装置は、携帯電話機等に実装され、分周回路に、ホルト・モード時の動作周波数を設定するための分周制御信号を与え、ホルト命令が実行されホルト・モードに移行すると、周辺処理部に与えるクロック信号の動作周波数を低分周に切り替えて供給する。これにより、周辺処理部における電力を低減している。また、このデータ処理装置は、ホルト・モードから通常動作に移行した場合、周辺処理部が通常の動作周波数に切り替わるので、携帯電話機の通話待ち受け状態から迅速に通話状態に移行させる。
【特許文献1】特開平11−305887号公報
【特許文献2】特許第3000965号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、上記の従来の技術には下記の問題がある。
まず第1に、特許文献1では、低消費電力モードに移行する場合に、マイクロコントローラがメモリまたは周辺回路をアクセス中であれば、アクセスが完了するまで低消費電力モードに移行することができない。特許文献2でも、CPUがアクセス中であればアクセスが完了するまでホルト命令を実行できないためホルト・モードに移行することができない。それゆえ、アクセスが完了するまでの間は消費電力を低減することができないという問題がある。言い換えれば、低消費電力モードまたはホルト・モードになる期間が短くなり、消費電力を十分に低減することができない。
【0006】
第2に、特許文献2では、ホルト・モード時に周辺処理部に与える低い周波数のクロック信号を供給するが、周辺処理部がタイマーまたはカウンタを含む場合に、時間計測を正確にできない。その結果、データ処理装置はリアルタイム処理を行なう場合に、処理の開始時刻が遅くなってしまい、処理性能を保証できずリアルタイム性を確保できないという問題がある。
【0007】
本発明は上記課題に鑑み、外部から低消費電力モードへの移行を要求された場合の応答性の大幅に改善し、消費電力をさらに削減する計算機システムを提供することを第1の目的とする。
【0008】
また、低消費電力モードへの移行および復帰に伴う性能劣化を生じさせない計算機システムを提供することを第2の目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決するため本発明の計算機システムは計算機システムであって、プログラムを実行する実行状態と、外部からのスリープ要求信号に対してスリープ応答信号を応答することによりプログラムの実行を停止する停止状態とを有するプロセッサ装置と、前記プロセッサ装置から発行されるコマンド要求に従って機能ブロックにアクセスし、コマンド要求に応答する信号を前記プロセッサ装置に出力するアクセス制御手段とを備え、前記プロセッサ装置は、前記スリープ要求信号を受けると、前記スリープ応答信号を応答するとともに、停止状態に遷移することを示す停止通知信号を前記アクセス制御手段に出力し、前記アクセス制御手段は、前記停止通知信号を受けたとき、前記プロセッサ装置に対して前記コマンド要求に応答する信号を出力しないことを特徴とする。この構成によれば、第1の目的を達成することができる。すなわち、プロセッサ装置は、スリープ要求信号を受け、かつ前記コマンド受理信号の受信待ちである場合、つまり、アクセス中である場合であっても、スリープ応答信号を即座に応答するので、スリープ要求への応答性を大幅に改善し、消費電力をさらに削減することができる。
【0010】
ここで、前記アクセス制御手段は、コマンド要求をマスクする手段を有し、前記停止通知信号を受けたとき、前記プロセッサ装置からコマンド要求が出力されている場合、当該コマンド要求を受理した後に、コマンド要求の入力をマスクし、前記プロセッサ装置からコマンド要求が出力されていない場合、コマンド要求の入力をマスクし、前記停止通知信号が解除されたときに、前記マスクを解除するようにしてもよい。この構成によれば、アクセス制御手段は停止通知を受けることによりプロセッサ装置が停止状態になったことを認識でき、さらにコマンド要求の入力をマスクすることにより、誤ってコマンド要求を重複して受理することを防止することができる。アクセス自体はプロセッサ装置ではなくアクセス制御手段が実行する。
【0011】
ここで、前記停止状態において、前記プロセッサ装置へのクロック信号の供給が停止されるようにしてもよい。
【0012】
ここで、前記アクセス制御手段は、前記プロセッサ装置から前記停止通知信号を受けた後、停止通知受理信号を前記プロセッサ装置に出力し、前記プロセッサ装置は、前記スリープ要求信号を受け、かつ前記コマンド受理信号の受信待ちである場合に、前記停止通知信号への応答として前記アクセス制御手段から停止通知受理信号を受信した後に、前記スリープ応答信号を応答するようにしてもよい。メモリアクセス手段がビジーであるなどの原因により上記プロセッサ装置からのメモリアクセスを受理できない場合に限り停止通知受理信号の出力を遅らせてもよい。
【0013】
ここで、前記計算機システムは、前記プロセッサ装置に前記スリープ要求信号を送信し、前記プロセッサ装置から前記スリープ応答信号を受信するホストCPUと、前記クロック信号を前記プロセッサ装置に供給するクロック手段とを備え、前記ホストCPUは、前記スリープ応答信号を受信した時、前記クロック信号の供給を停止するよう前記クロック手段を制御するようにしてもよい。この構成によれば、ホストCPUからのスリープ要求に対してプロセッサ装置は即座に応答することができ、消費電力をさらに削減することができる。
【0014】
ここで、前記ホストCPUは、さらに、前記クロック信号の供給を再開するよう前記クロック手段を制御し、スリープ要求信号をネゲートするようにしてもよい。この構成によれば、ホストCPUは簡単な制御でプロセッサ装置を停止状態から動作状態に復帰させることができる。
【0015】
ここで、前記アクセス手段は、前記プロセッサ装置と、少なくとも1つの他のプロセッサ装置とからコマンド要求を受信し、受信したコマンド要求に従ってアクセスを実行するコマンド実行部と、コマンド要求に従ってアクセスされたリードデータを保持するための共有バッファと、共有バッファの空き容量がしきい値以上であるか否かを判定し、前記停止通知信号を受けたとき、空き容量がしきい値以下であれば、前記プロセッサ装置に前記停止通知受理信号を送信することを保留する判定手段とを備えるようにしもよい。この構成によれば、計算機システムがプロセッサ装置以外にメモリアクセスする他の1つ以上のプロセッサを備えることができ、計算機システムの拡張性を向上させることができる。この場合、メモリアクセス手段は上記プロセッサ装置および他の1つ以上のプロセッサからのメモリアクセスを実行する。メモリアクセス手段は、複数のメモリアクセスの競合によって上記プロセッサ装置からのメモリアクセスを受理できない場合に限り停止通知受理信号の出力を遅らせればよい。また、上記プロセッサ装置用の専用バッファではなく共有バッファとすることにより、回路規模の増加を抑制することができる。
【0016】
ここで、前記プロセッサ装置は、前記スリープ要求信号がネゲートされ、かつ前記コマンド受理信号の受信待ちである場合に、前記アクセス制御手段からのコマンド受理信号を受信するようにしてもよい。この構成によれば、プロセッサ装置は、スリープ解除時に、コマンド受理信号の受信により、停止状態になる前に発行したコマンド要求に対する処理を完遂することができる。
【0017】
ここで、前記計算機システムは、クロック信号の供給を受ける実行状態と、スリープ要求信号に対してスリープ応答信号を応答することにより前記クロック信号の供給が停止される第1停止状態との間を遷移するプロセッサ装置と、前記プロセッサ装置に対してクロック信号を供給する第1クロック供給手段と、前記スリープ要求信号を前記プロセッサ装置に出力し、その応答として前記スリープ応答信号を受けたとき、第1クロック供給手段から前記プロセッサ装置への第1クロック信号の供給を停止するホストCPUと、前記プロセッサ装置から発行されるコマンド要求に従って機能ブロックをアクセスし、アクセス完了後にコマンド受理信号を前記プロセッサ装置に送信するアクセス制御手段とを備え、前記プロセッサ装置は、前記スリープ要求信号を受け、かつ前記コマンド受理信号の受信待ちでない場合に、前記スリープ応答信号を出力し、前記スリープ要求信号を受け、かつ前記コマンド受理信号の受信待ちである場合に、前記スリープ応答信号を応答するとともに、第1停止状態に遷移することを示す停止通知信号を前記アクセス制御手段に出力し、前記プロセッサ装置は、複数のプログラムを時分割多重により実行し、第1クロック信号が供給される実行状態と、第1クロック信号の供給が停止される第2停止状態とを有するプロセッサユニットと、現在実行中のプログラムに割り当てられた時間をカウントするカウント手段と、プロセッサ装置の実行状態と第2停止状態との遷移を制御する制御手段と、第1クロック供給手段から前記第1クロック信号が入力され、前記第1クロック信号と、前記第1クロック信号のK倍の周期を有する第2クロック信号とを出力する第2クロック供給手段とを備え、前記制御手段は、前記カウント手段の残り時間が0でなく、かつ現在実行中のプログラムが割り当てられた時間内に実行すべき処理を完了したとき、第2停止状態に遷移させるようクロック供給手段を制御し、前記クロック供給手段は、第2停止状態において、前記プロセッサ装置への第1クロック信号を停止し、前記カウント手段および制御手段に前記第2クロック信号を供給し、前記カウント手段は、前記実行状態において1ずつカウントし、前記第2停止状態においてKずつカウントするようにしてもよい。この構成によれば、第1の目的に加えて第2の目的を達成することができる。カウント手段は、動作状態では1ずつカウントし、第2停止状態ではK倍遅い第2クロック信号でKずつカウントする。それゆえ、第2停止状態でカウントされる時間は、動作状態でカウントされる時間とほぼ同じ結果となる。その結果、カウントされる時間に従ってリアルタイム処理を実行させる場合に、低消費電力モードへの移行および復帰に伴って性能劣化を生じさせず、必要な性能を確保することができる。
【0018】
また、本発明のプロセッサ装置は、複数のプログラムを時分割多重により実行し、第1クロック信号が供給される実行状態と、第1クロック信号の供給が停止される停止状態とを有するプロセッサユニットと、現在実行中のプログラムに割り当てられた時間をカウントするカウント手段と、プロセッサ装置の実行状態と停止状態との遷移を制御する制御手段と、第1クロック信号と、前記第1クロック信号のK倍の周期を有する第2クロック信号とを出力するクロック供給手段とを備え、前記制御手段は、前記カウント手段の残り時間が0でなく、かつ現在実行中のプログラムが割り当てられた時間内に実行すべき処理を完了したとき、停止状態に遷移させるようクロック供給手段を制御し、前記クロック供給手段は、停止状態において、前記プロセッサユニットへの第1クロック信号を停止し、前記カウント手段および制御手段に前記第2クロック信号を供給し、前記カウント手段は、前記実行状態において1ずつカウントし、前記停止状態においてKずつカウントする構成としてもよい。この構成によれば、第2の目的を達成することができる。カウント手段は、動作状態では1ずつカウントし、第2停止状態ではK倍遅い第2クロック信号でKずつカウントする。それゆえ、第2停止状態でカウントされる時間は、動作状態でカウントされる時間とほぼ同じ結果となる。その結果、カウントされる時間に従ってリアルタイム処理を実行させる場合に、低消費電力モードへの移行および復帰に伴って性能劣化を生じさせず、必要な性能を確保することができる。
【0019】
ここで、前記制御手段は、さらに、前記停止状態において前記カウント手段のカウント値がK未満になったとき、前記クロック供給手段から前記カウント手段に供給されている第2のクロック信号を第1のクロック信号に切り換え、前記カウント手段は、さらに、前記カウント値がK未満になったとき1ずつ減算するようにしてもよい。この構成によれば、第2停止状態でカウントされる時間は、動作状態でカウントされる時間と完全に同じ結果とすることができる。その結果、より時間の制約が厳しいリアルタイム処理を実行させるのに適している。
【0020】
ここで、前記Kは2のべき乗であってもよい。この構成によれば、カウント手段を簡単な構成にすることができる。
【0021】
ここで、前記制御手段は、前記プロセッサユニットから設定可能な制御レジスタを備え、前記制御レジスタが所定のフラグ値を保持している場合は、前記停止状態において前記カウント手段のカウント値がK未満になったときの、第2のクロック信号から第1のクロック信号に切り換えおよび、カウント手段におけるKから1への減算数の変更を禁止するようにしてもよい。この構成によれば、前記停止状態において前記カウント手段のカウント値がK未満になったときに、1ずつカウントするかKずつカウントするかを、制御レジスタのフラグ値によって選択可能となる。その結果、実行すべきプログラムに要求される処理性能(リアルタイム性への時間制約が厳しいか否か)に応じて、柔軟にカウント手段のカウント精度を選択することができる。
【0022】
ここで、前記制御手段は、さらに、前記停止状態において、前記クロック供給手段から前記カウント手段に供給されている第2のクロック信号を第1のクロック信号に一時的に切り換えると共に、前記クロック供給手段から前記プロセッサユニットに第1のクロック信号を一時的に供給させ、前記プロセッサユニットにコンテキスト転送の実行を指示し、コンテキスト転送が完了したとき、前記クロック供給手段から前記カウント手段に供給されている第1のクロック信号を第2のクロック信号に戻し、前記クロック供給手段から前記プロセッサユニットに第1のクロック信号を停止させるようにしてもよい。この構成によれば、停止状態の間にコンテキスト転送を第1のクロック信号により高速に実行するので、切り替え先のプログラム開始時刻を遅らせることなく、処理性能を確保することができる。
【0023】
また、本発明の計算機システムの制御方法、システムLSIおよび携帯電話機も上記と同様の構成を有する。
【発明の効果】
【0024】
本発明によれば、第1に、外部から低消費電力モードへの移行を要求された場合の応答性の大幅に改善し、消費電力をさらに削減することができる。また、計算機システムの拡張性を向上させることができ、回路規模の増加を抑制することができる。
【0025】
また、第2に、低消費電力モードへの移行および復帰に伴う性能劣化を防止することができる。
【0026】
停止状態でカウントされる時間を、動作状態でカウントされる時間とほぼ同じにすることができる。
【0027】
停止状態でカウントされる時間を、動作状態でカウントされる時間と完全に同じにすることもできる。
【0028】
リアルタイム処理を実行させる場合に、低消費電力モードへの移行および復帰に伴って性能劣化を生じさせず、必要な性能を確保することができる。
【0029】
より時間の制約が厳しいリアルタイム処理を実行させるのに適している。
実行すべきプログラムに要求される処理性能(リアルタイム性への時間制約が厳しいか否か)に応じて、柔軟にカウント手段のカウント精度を選択することができる。
【発明を実施するための最良の形態】
【0030】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
【0031】
(実施の形態1)
実施の形態1における計算機システムは、主として、プロセッサ装置と、アクセス制御部とを含む。アクセス制御部は、プロセッサ装置から発行されるコマンド要求を受理し、受理したコマンド要求に従ってメモリやI/O等の機能ブロックをアクセスする。また、アクセス制御部はコマンド要求とデータの送受信との間に一旦バスを開放するスプリット方式をとる。
【0032】
プロセッサ装置は、クロック信号の供給を受ける実行状態と、外部からのスリープ要求信号に対してスリープ応答信号を応答することによりクロック信号の供給が停止される第1停止状態との間を遷移する。
【0033】
実行状態から第1停止状態への遷移に際して、プロセッサ装置は、スリープ要求信号を受け、アクセス中である場合であっても、スリープ応答信号を応答するとともに、第1停止状態に遷移することを示す停止通知信号をアクセス制御部に出力する。
【0034】
アクセス制御部は、停止通知信号を受けたとき、プロセッサ装置からコマンド要求が出力されている場合、当該コマンド要求を受理した後に、コマンド要求の入力をマスクし、プロセッサ装置からコマンド要求が出力されていない場合、コマンド要求の入力をマスクする。その後、停止通知信号が解除された場合、アクセス制御部はマスクを解除する。コマンド要求の入力をマスクするのは、1つのコマンド要求を誤って重複して受理することを防止するためである。
【0035】
上記のように、プロセッサ装置は、アクセス中である場合であっても、スリープ応答信号を即座に応答するので、スリープ要求への応答性を大幅に改善し、消費電力をさらに削減することができる。アクセス制御部は停止通知を受けることによりプロセッサ装置が第1停止状態になったことを認識でき、アクセス自体はプロセッサ装置ではなくアクセス制御部が実行する。停止通知信号は、プロセッサ装置が停止状態のときに、ハンドシェイクを要する信号等をアクセス制御部がプロセッサ装置に出力することを避けるために通知される。
【0036】
図1は、本発明の実施の形態1における計算機システムの全体構成を示す機能ブロック図である。同図に示すように、計算機システム1はプロセッサ装置100と、ホストCPU200と、アクセス制御部として機能するバス制御器300と、割り込み制御器400と、第1クロック供給手段として機能するクロック制御器500とを備え、この他にもプロセッサ100a、100b等を備える。
【0037】
プロセッサ装置100は、省電力モードとして第1停止状態と第2停止状態とを有する。第1停止状態は、単にスリープ状態ともいう。第1停止状態では、外部からのスリープ要求信号11に対してスリープ応答信号12を応答することによりクロック信号clk42の供給を停止する。すなわち、プロセッサ装置100全体への動作を停止させる。第2停止状態は、マイクロスリープ状態ともいう。第2停止状態では、プロセッサ装置100がプロセッサユニット110およびメモリ制御器120の動作を停止させる。ただし、マイクロスリープ状態では、プログラムを割り当て時間毎に切り替えるためにVMPコントローラ140へのクロック信号の供給は継続する。マイクロスリープ状態については実施の形態2で詳しく説明するので、実施の形態1では説明を省略する。
【0038】
ホストCPU200は、スリープ要求信号11をプロセッサ装置100に出力し、その応答としてスリープ応答信号12を受けたとき、クロック制御器500から前記プロセッサ装置への第1クロック信号の供給を停止する。
【0039】
バス制御器300は、プロセッサ装置100、プロセッサ100aおよび100bから発行されるコマンド要求を受理し、受理したコマンド要求に従ってメモリをアクセスし、ライトアクセスの場合はライトデータ受理信号を、リードアクセスの場合はリードデータとリードデータ有効信号をプロセッサ装置100に送信する。なお、メモリアクセスは、メモリI/F1001を介して行うメモリリードおよびメモリライトだけでなく、I/O制御部1002を介して行うI/OリードおよびI/Oライトも含む。また、アクセスされる対象を機能ブロックと呼ぶ。メモリI/F1001は機能ブロックとしてのSDRAMなど大容量のメモリに接続されている。I/O制御部1002は、機能ブロックのとしてのSDメモリカード、入力装置、出力装置等に接続されている。また、メモリアクセスはバスアクセスと同義とする。バス制御器300は、プロセッサ装置100から停止通知信号21を受けた後、受理可能であれば停止通知受理信号22をプロセッサ装置に出力する。受理可能であるかどうかは、共有バッファ305がしきい値以上の空き容量を有するかどうかによる。しきい値は、例えば、当該コマンド要求によるリードデータのサイズや、一定値でよい。
【0040】
割り込み制御器400は、ホストCPU200または外部のI/Oからの割込みを割り込み信号31としてプロセッサ装置100に通知する。
【0041】
クロック制御器500は、ホストCPU200の制御の下で、クロック信号clk42をローカルクロック制御器130に供給または停止する。
【0042】
プロセッサ装置100は、プロセッサユニット110と、メモリ制御器120と、ローカルクロック制御器130と、VMP(Virtual Multi Processor)コントローラ140とを備える。
【0043】
プロセッサユニット110は、VMPコントローラ140の制御の下で時分割多重による並列処理を行う。
【0044】
メモリ制御器120は、プロセッサユニット110からのメモリアクセス信号に従って、コマンド要求信号23をバス制御器300に発行し、アクセスが完了した後プロセッサユニット110にアクセス完了を通知する。
【0045】
プロセッサ装置100をスリープ状態に遷移させる概略手順を説明する。まずホストCPU200がプロセッサ装置100に対してスリープ要求信号11をアサートする。プロセッサ装置100はスリープ要求信号11がアサートされたとき、プロセッサ装置100内におけるプログラムの実行を停止する処理を開始する。さらに、プロセッサ装置100の外部へのアクセス、つまりバス制御器300に対するメモリアクセスの有無を確認する。メモリアクセス中であれば、停止通知信号21をバス制御器300に出力してから、ホストCPU200に対してスリープ応答信号12をアサートする。ホストCPU200はスリープ応答信号12がアサートされたのち、クロック制御器500を経由してプロセッサ装置100のクロック信号clk42の供給を停止させる。
【0046】
VMPコントローラ140は、カウンタ141と、割り込み検出器142とを備える。
VMPコントローラ140は、プロセッサユニット110で、時分割多重による並列処理を行うための、コンテキスト切り替え装置である。ここで、コンテキストは、プログラムの切り替えに必要な情報、すなわちプログラムカウンタ、フラグレジスタ、スタック領域などの制御情報や、汎用レジスタなどのデータ情報をいう。コンテキストの切り換えとは、現在実行しているプログラムのコンテキストをメモリに書き出し(退避という)、次に実行するプログラムのコンテキストをメモリから読み出す(復帰という)動作を意味する。VMPコントローラ140は、コンテキスト切り替え装置として、この退避処理と復帰処理、および実行するプログラムをスケジューリングする機能を備える。
【0047】
カウンタ141は、時分割多重化のためにプログラム毎に割り当てられた時間を計数する。
【0048】
割り込み検出器142は、割り込み制御器400からの割り込み信号を31が入力され、割込みを検出する。この割込みは、マイクロスリープ状態を解除するトリガーとなる。
【0049】
図2は、プロセッサ装置100の実行状態とスリープ状態の遷移を示すタイムチャートである。また、図15は、プロセッサ装置100の状態遷移を示す図である。
【0050】
まず、プロセッサ装置100がプログラム実行状態600からスリープ状態601に遷移するときの動作を説明する。
【0051】
図2において、ホストCPU200は、プログラム実行状態600であるプロセッサ装置100に対して、プログラムの実行を停止させるときに、スリープ要求信号11をアサートする(時刻T0)。プロセッサ装置100はスリープ要求信号11がアサートされたとき、プログラム実行を停止する状態(スリープ状態601)に遷移する処理を行い、スリープ応答信号12をアサート(時刻T3)して、スリープ状態601に遷移する。
【0052】
その際、プロセッサ装置100はバス制御器300に対して出力する停止通知信号21をアサートする(時刻T1)。
【0053】
バス制御器300はメモリアクセス中に停止通知信号21がアサートされたとき、プロセッサ装置100およびメモリI/F1001とI/O制御部1002との信号の入出力を一時中断し、停止通知受理信号22をアサートする(時刻T2)。このときメモリI/F1001あるいはI/O制御部へのアクセスデータをバス制御器で保持する必要がある場合は、バス制御器300に備えた共有バッファ305に格納する。プロセッサ装置100は停止通知受理信号22がアサートされたとき、ホストCPU200に出力するスリープ応答信号12をアサート(時刻T3)して、スリープ状態601に遷移する。
【0054】
ホストCPU200はスリープ応答信号12がアサートされたとき、クロック制御器500に対してクロック制御信号41をアサートする(時刻T4)。クロック制御器500はクロック制御信号41がアサートされたとき、プロセッサ装置100に供給するクロック信号clk42のクロックを停止させる。
【0055】
このように、メモリアクセスの完了を待たずに、プロセッサ装置100に供給するクロック信号を停止させることが本発明の特徴である。
【0056】
次に、プロセッサ装置100がスリープ状態601からプログラム実行状態600に復帰するときの動作を説明する。
【0057】
ホストCPU200はまずクロック制御信号41をネゲートする(時刻T5)。このとき、クロック制御器500はクロック信号clk42をプロセッサに供給する。そののち、プロセッサ装置100に出力するスリープ要求信号11をネゲートする(時刻T6)。プロセッサ装置100はスリープ要求信号11がネゲートされたとき、スリープ状態601からプログラム実行状態600に遷移する処理を行い、停止通知信号21をアサートしていない場合はこの処理の完了後にスリープ応答信号12をネゲート(時刻T7)してプログラム実行状態600に遷移する。
【0058】
一方、停止通知信号21をアサートしている場合は、プロセッサ装置100はバス制御器300に対して出力する停止通知信号21をネゲートする(時刻T8)。
【0059】
バス制御器300は停止通知信号21がネゲートされたとき、一時中断していたプロセッサ装置100およびメモリI/F1001とI/O制御部1002との信号の入出力を再開する。そして、プロセッサ装置100に対するメモリアクセスを完了したのち、停止通知受理信号22をネゲート(時刻T9) してプログラム実行状態600に遷移する。
【0060】
図3は、プロセッサ装置100をプログラム実行状態600からスリープ状態601に遷移させクロック信号clk42を停止させるまでの処理を示す概略フローチャートである。
【0061】
同図において、プロセッサ装置100がホストCPU200からスリープ要求信号11を受理したとき(S11)、プロセッサ装置100はバスアクセス中か否かを判定する(S12)。バスアクセス中であれば、プロセッサ装置100はバス制御器300に停止通知信号21をアサートし(S13)、バス制御器300からの停止通知受理信号22がアサートされるのを確認(S14)した後、ホストCPU200にスリープ応答信号12をアサートすることにより応答する(S15)。一方、バスアクセス中でなければ、プロセッサ装置100は直ちにホストCPU200にスリープ応答信号12を応答する(S15)。スリープ応答信号12がアサートされた後ホストCPU200は、クロック信号clk42の供給を停止するようクロック制御器500を制御する(S16)。
【0062】
図4は、プロセッサ装置100をスリープ状態601からプログラム実行状態600に復帰させるまでの処理を示す概略フローチャートである。
【0063】
同図において、プロセッサ装置100のスリープ状態を解除するには、ホストCPU200は、まず、クロック信号clk42の供給を再開するようクロック制御器500を制御し(S21)、スリープ要求信号11をネゲートする。スリープ要求信号11がネゲートされたとき、プロセッサ装置100は、スリープ状態601からプログラム実行状態600に遷移する処理を行い(S23)、停止通知信号21をアサートしている場合は、プロセッサ装置100はバス制御器300に対して出力する停止通知信号21をネゲートする(S25)。
【0064】
図5は、バス制御器300の詳細な構成を示すブロック図である。同図のようにバス制御器300は、共有バッファ305、共有バッファ判定部306、コマンド実行部310を備える。コマンド実行部310は、コマンド制御部301、301a、コマンド調停部302、ライトデータ制御部303、リードデータ制御部304を備える。
【0065】
共有バッファ305は、プロセッサ装置100、プロセッサ100a、プロセッサ100bなどから発行されたコマンド要求に従ってアクセスされたリードデータを一時的に保持するバッファであり、プロセッサ装置100、プロセッサ100a、プロセッサ100bなどのバス制御器300に接続されている複数のプロセッサに共有される。この共有によりバス制御器300の実装面積を低減することができる。
【0066】
共有バッファ判定部306は、共有バッファの空き容量がしきい値以上であるか否かを判定する。しきい値は、最新のコマンド要求によるリードデータのサイズや、一定の値でよい。共有バッファ判定部306は、停止通知信号21を受けたとき、空き容量がしきい値以上であれば、プロセッサ装置100に停止通知受理信号22を即座に送信し、空き容量がしきい値以上でなければ、プロセッサ装置100に停止通知受理信号22を送信することを保留する。なお、バス制御器300が、共有バッファ305の代わりに、プロセッサ装置100専用のバッファを備え、上記判定をすることなく停止通知受理信号22を送信するようにしてもよい。
【0067】
コマンド実行部310は、プロセッサ装置100等からのコマンド要求に従ってメモリアクセスを実行する。
【0068】
コマンド制御部301は、プロセッサ装置100から発行されたコマンド要求を保持する。具体的には、コマンド制御部301は、停止通知信号21を受けたとき、プロセッサ装置100からコマンド要求信号23がアサートされている場合、当該コマンド要求信号23を受理(内部に保持)した後に、コマンド要求信号23の入力をマスクし、プロセッサ装置100からコマンド要求が出力されていない場合、コマンド要求信号23の入力をマスクする。この後、前記停止通知信号が解除された場合に、コマンド制御部301は、マスクを解除する。コマンド制御部301aは、プロセッサ100aから発行されたコマンド要求を保持する点以外、コマンド制御部301と同様である。これらのコマンド制御部は、バス制御器300に接続されるプロセッサと同数備えられる。
【0069】
コマンド調停部302は、複数のコマンド制御部からのコマンド要求が競合した場合に調停し、調停の結果何れか1つのコマンド要求を選択する。選択されたコマンド要求は、メモリI/F1001またはI/O制御部1002を介して、アクセス制御信号としてメモリまたはI/Oに出力される。
【0070】
ライトデータ制御部303は、コマンド調停部302により選択されたコマンド要求がライトアクセスである場合に、プロセッサ装置100、プロセッサ100a等から出力され、選択されたコマンド要求に対応するライトデータを選択する。
【0071】
リードデータ制御部304は、メモリI/F1001またはI/O制御部1002を介してメモリまたはI/Oから読み出されたデータを選択し、共有バッファ305に格納する。
【0072】
図6は、プロセッサ装置100をプログラム実行状態600からスリープ状態601に遷移し、さらにプログラム実行状態600に復帰するまでの詳細な処理を示すフローチャートである。同図左から1列目はホストCPU200およびプロセッサ装置100の処理の流れを示す。左から2列目はバス制御器300におけるリードアクセスとライトアクセスに共通するコマンド要求の制御の流れを示す。左から3列目はバス制御器300におけるリードアクセスの制御の流れを示す。左から4列目はバス制御器300におけるライトアクセスの制御の流れを示す。図中の黒丸は処理の開始を意味する。周りに丸がついた黒丸は処理の終了を意味する。2入力1出力の太い横棒シンボル(例えばS113)は2つの信号または状態が揃うことを意味する。1入力2出力の太い横棒シンボル(例えばS127)は1つの信号または状態を2つに分配することを意味する。2入力1出力の菱型シンボル(例えばS105)は、択一的な通過点を意味する。1入力2出力の菱型シンボル(例えばS124)は判定を意味する。図中の機能ブロックは、メモリI/F1001またはI/O制御部1002である。
【0073】
同図左から1列目に示したホストCPU200およびプロセッサ装置100の処理の流れについては図3および図4とほぼ同様なので省略する。ここでは同図左から2列目乃至4列目に示したバス制御器300の制御の流れを中心に説明する。
【0074】
プロセッサ装置100は、バスアクセス中にホストCPU200からスリープ要求信号11を受けると、停止通知信号21をアサートする(S103)。停止通知信号21がアサートされると、バス制御器300は、プロセッサ装置100からのコマンド要求信号23が受理されている否か(コマンド制御部301に保持されているか否か)を判定し(S121)、受理されている場合はコマンド要求信号23の入力をマスクしてからS123に進み、受理されていない場合でコマンド要求信号23がアサートされている場合には受理(S122)してから、コマンド要求信号23の入力をマスクし、さらにS123に進む。S123の次に、コマンド制御部301は、受理されたコマンド要求がリードアクセスかライトアクセスかを判定する(S124)。
【0075】
リードアクセスと判定された場合、共有バッファ判定部306は、共有バッファ305にしきい値より大きな空き領域があるか否かを判定し(S125)、しきい値より大きな空き領域がある場合は停止通知受理信号22をアサートする(S126)。アサートされた停止通知受理信号22は、プロセッサ装置100に通知される(S127→S128→S105)と共にコマンド制御部301に通知される(S127)。停止通知受理信号22をアサートしているとき、コマンド実行部310は、コマンド要求信号23に応答する信号(すなわちコマンド受理信号24、ライトデータ受理信号26、リードデータ有効信号27)をプロセッサ装置100に出力することを禁止する。これは、スリープ状態のプロセッサ装置100はこれらの信号を認識できないからである。
【0076】
コマンド制御部301に保持されたリードコマンド要求は、さらにコマンド調停部302からメモリI/F1001またはI/O制御部1002を介して、アクセス制御信号としてメモリまたはI/Oに出力され(S129)、メモリまたはI/Oからのリードデータ出力待ちになる(S130)。
【0077】
さらに、メモリまたはI/Oからのリードデータが出力されると、リードデータはメモリI/F1001またはI/O制御部1002と、リードデータ制御部304を介して共有バッファ305に格納され、メモリI/F1001またはI/O制御部1002が開放される(S131)。
【0078】
一方S124においてライトアクセスと判定された場合、共有バッファ判定部306は、停止通知受理信号22をアサートする(S133→S128→S105)。コマンド制御部301に保持されたライトコマンド要求は、さらにコマンド調停部302に出力される。コマンド調停部302は、プロセッサ装置100からライトデータが既にメモリI/F1001またはI/O制御部1002に出力されているか否かを判定し(S135)、出力されている場合は、メモリI/F1001またはI/O制御部1002からメモリまたはI/Oにライトデータを書き込み(S136→S137)、出力されていない場合はライトアクセスをしない(S135→S137)。
【0079】
さらに、プロセッサ装置100がスリープ状態から実行状態に遷移し、停止通知信号21をネゲートした場合について説明する。
【0080】
プロセッサ装置100が停止通知信号21をネゲートすると、コマンド制御部301aからコマンド受理信号24が出力される(S113→S141→S142)。バス制御器300は、リードアクセスである場合、共有バッファ305からリードデータを出力し、プロセッサ装置100からのリードデータ受理信号28を待つ(S143→S144→S145)。
【0081】
これによりプロセッサ装置100は、リードデータを取得する。また、バス制御器300は、ライトアクセスである場合、プロセッサ装置100からライトデータが既にメモリI/F1001またはI/O制御部1002に出力されていたか否かを判定し(S146)、出力されていた場合には、ライトアクセスが完了しているので何もしない。出力されていなかった場合には、プロセッサ装置100からライトデータが出力されるのを待ち(S147)、ライトデータが出力されるとライトデータ受理信号26をプロセッサ装置100に出力し(S148)、メモリI/F1001またはI/O制御部1002からメモリまたはI/Oにライトデータを書き込む(S149)。
【0082】
このように、プロセッサ装置100は、バスアクセス中にスリープ状態に遷移し、さらにホストCPU200からのスリープ要求信号11がネゲートされたときに、バスアクセスを完遂する。
【0083】
以上説明してきたように、本実施形態における計算機システム1においてプロセッサ装置100は、スリープ要求信号11を受けたとき、バス制御器300に停止状態に遷移することを示す停止通知信号を出力し、その応答としてバス制御器300から停止通知受理信号22を受信した後に、前記スリープ応答信号を応答する。停止通知受理信号22は共有バッファ305に十分な空き容量がないとき以外は即座にアサートされるので、プロセッサ装置100は、スリープ応答信号を即座に応答することができる。これにより、スリープ要求への応答性の大幅に改善し、消費電力をさらに削減することができる。バス制御器300は停止通知を受けることによりプロセッサ装置100がスリープ状態になったことを認識でき、スリープ状態のプロセッサ装置100に応答を要する信号を出力することを回避する。
【0084】
なお、上記の停止通知受理信号22は場合により省略してもよい。たとえば、バス制御器300が共有バッファ305の代わりにプロセッサ装置100専用のバッファを備える場合や、バス制御器300にプロセッサ装置100以外のアクセス主体となるプロセッサが接続されない場合には、停止通知受理信号22は省略してもよい。
【0085】
図7は、停止通知受理信号22が省略される場合の、スリープ状態への遷移を示す概略フローチャートである。同図は図3と比べてステップS14が削除されている点が異なる。同じ点は説明を省略して異なる点を中心に説明する。図7において、プロセッサ装置100は、バス制御器300に停止通知信号21を出力後、直ちにホストCPU200にスリープ応答信号12を出力する。これにより、スリープ状態の期間はホストCPU200が要求する期間に一致し、ホストCPU200が要求する最大限の消費電力削減効果を得ることができる。
【0086】
図8は、停止通知受理信号22が省略される場合の、スリープ状態への遷移処理を示す詳細なフローチャートである。同図は図6と比べて、ステップS104、S105の代わりにS115を有し、ステップS125〜S128が削除されている点が異なる。同じ点は説明を省略して異なる点を中心に説明する。
【0087】
ステップ115において、プロセッサ装置100は、停止通知信号21をアサートしたとき、停止通知受理信号22を確認することなく、直ちにホストCPU200へスリープ応答信号12をアサートしている。これにより、スリープ状態への移行はホストCPU200の要求したタイミングに一致させることができる。
【0088】
また、バス制御器300は、停止通知受理信号22応答する必要がないのでステップS125〜S128が削除され、その分回路規模を小さくすることができる。
【0089】
(実施の形態2)
本実施の形態における計算機システムでは、マイクロスリープ状態において、停止状態のプロセッサユニットの外部にあるカウンタが、低速のクロック信号に切り替えられ、なおかつ静止状態でも動作状態とほぼ同じまたは完全に同じ精度でサイクル数をカウントするプロセッサ装置150について説明する。
【0090】
図9は、本発明の実施の形態2における計算機システムの全体構成を示す機能ブロック図である。図9の計算機システム2は、図1と比較して、プロセッサ装置100およびクロック制御器500の代わりにプロセッサ装置150およびクロック制御器501を備える点が異なる。同じ点は説明を省略して異なる点を中心に説明する。
【0091】
クロック制御器501は、クロック信号clk42に加えてクロック信号clkL43を150に供給する。クロック信号clkL43は、クロック信号clk42のK倍の周期を有する。Kは2のべき乗が望ましい。ここではKは8とする。
【0092】
プロセッサ装置150は、プロセッサ装置100と比べて、ローカルクロック制御器130およびVMPコントローラ140の代わりにローカルクロック制御器131およびVMPコントローラ160を備える点が異なっている。
【0093】
ローカルクロック制御器131は、クロック制御器501からクロック信号clk42が入力され、プロセッサユニット110にクロック信号clk_pe101を供給し、VMPコントローラ160にクロック信号clk_vmp102を供給する。クロック信号clk_pe101は、クロック信号clk42と同じ周波数であり、停止状態では停止する。クロック信号clk_vmp102は、動作状態ではクロック信号clk42と同じ周波数(以下通常クロックと呼ぶ)、マイクロスリープ状態でかつ通常クロックが必要ではないとき、クロック信号clkL43と同じ周波数(以下低速クロックと呼ぶ)である。
【0094】
VMPコントローラ160は、VMPコントローラ140と比べて、ローカルクロック制御器131に対して出力する信号として、マイクロスリープ状態信号103および通常クロック要求信号104が追加されている点が異なっている。マイクロスリープ状態信号103は、プロセッサ装置150がマイクロスリープ状態にあることを示す信号である。通常クロック要求信号104は、クロック信号clk_vmp102として、クロック信号clk42とクロック信号clkL43とのいずれを使用するかを示す信号である。通常クロック要求信号104がアサートされているとき、ローカルクロック制御器131は、通常のクロック信号clk42をクロック信号clk_vmp102として出力する。
【0095】
図10は、VMPコントローラ160の詳細な構成を示すブロック図である。同図のようにVMPコントローラ160は、カウンタ161、制御部162を備える。
【0096】
カウンタ161は、現在実行中のプログラムに割り当てられた時間を0にまでダウンカウントするために、保持部151と、減算数選択部152と、減算器153とを備える。
【0097】
保持部151は現在のカウント値を保持するレジスタである。
状態制御部145は減算数選択信号154を減算数選択部152に出力する。減算数選択信号154は、減算数として1またはKのいずれを選択するかを表す信号である。減算数選択部152は、プロセッサ装置150が動作状態であるときは、減算数として1を選択し、マイクロスリープ状態であるときはKを選択する。
【0098】
減算器153は、現在のカウント値から、減算数選択部152からの減算数を減算する。減算結果は、保持部151に保持される。
【0099】
このように、カウンタ161は、プロセッサ装置150が動作状態のときクロック信号clk42を用いて1ずつカウントダウンし、マイクロスリープ状態でかつ通常クロック要求信号104がクロック信号clkL43を選択しているとき、クロック信号clkL43を用いてKずつカウントダウンする。マイクロスリープ状態でカウントされるサイクル数または時間は、動作状態でカウントされるサイクル数または時間とほぼ同じ結果となる(最大で(K−1)サイクルの遅くなる)。
【0100】
さらに、カウンタ161は、マイクロスリープ状態において保持部151のカウント値がK未満になったとき、通常のクロック信号clk42により1ずつダウンカウントすることができる。
【0101】
制御部162は、時分割多重による仮想プロセッサのスケジューリングと、プロセッサ装置150の実行状態とマイクロスリープ状態との遷移と、カウンタ161の減算数およびクロック信号を制御する。そのため制御部162は、割り込み検出器142、PUI/F143、制御レジスタ144、状態制御部145、カウント値判定部146を備える。
【0102】
割り込み検出器142は、割り込み制御器400からの割り込み信号31が入力され、割込みを検出する。この割込みは、マイクロスリープ状態を解除するトリガーとなる。
【0103】
PUI/F143は、プロセッサユニット110との通信をするためのI/Fである。プロセッサユニット110は、PUI/F143を介して制御部162にアクセスする。
【0104】
制御レジスタ144は、プロセッサユニット110のプログラムによりリード/ライト可能なレジスタである。制御レジスタ144は、マイクロスリープ状態におけるカウンタ161の動作モードを指示するモードフラグを保持する。モードフラグはプロセッサユニット110により設定され、そのフラグ値0は、マイクロスリープ状態において保持部151のカウント値がK未満になったとき、通常のクロック信号clk42により1ずつダウンカウントする動作モードを示す。そのフラグ値1は、マイクロスリープ状態においてカウンタ161のカウント値がK未満になったときの、Kから1への減算数の変更を禁止する。
【0105】
カウント値判定部146は、保持部151に保持されたカウント値がKより大きいか否かを判定する。具体的には、カウント値判定部146は、カウント値がKより大きいとき、カウント値判定信号をネゲートし、カウント値がK以下のとき、カウント値判定信号をアサートする。
【0106】
状態制御部145は、プロセッサ装置150の状態遷移を制御する。プロセッサ装置150の状態遷移は図15に示した通りである。状態制御部145は、マイクロスリープ状態602のとき、マイクロスリープ状態信号103をアサートする。マイクロスリープ状態602で、かつ、カウント値判定信号がネゲート(カウント値>K)されているとき、通常クロック要求信号104をネゲート(低速クロックを選択)し、減算数選択信号154をアサートする(減算数選択部152に減算数Kを選択させる)。マイクロスリープ状態602で、かつ、カウント値判定信号がアサート(カウント値=<K)されているとき、通常クロック要求信号104をアサート(通常クロックを選択)し、減算数選択信号154をネゲート(減算数を1に)する。
【0107】
次に本発明の実施の形態における計算機システム2について、その動作を説明する。
図11および図12は、プロセッサ装置100がマイクロスリープ状態602に遷移する前後でコンテキストの切り替えが発生しない場合のタイムチャートを示す。同図では、上から、プロセッサ装置150の状態、マイクロスリープ状態信号103、クロック信号clk_pe101、クロック信号clk_vmp102、カウンタ161のカウント値を示している。
【0108】
VMPコントローラ160は、プロセッサユニット110で実行するプログラムが存在しないことを検出すると、プロセッサ装置100をマイクロスリープ状態602に遷移させる動作を開始する。このとき、ローカルクロック制御器131に対して出力するマイクロスリープ状態信号103をアサートする(図11の時刻T20)。図11では、この時点でプログラムの実行時間を計数するカウンタ161の残りサイクル数が1024サイクルである場合を示している。ローカルクロック制御器131はマイクロスリープ状態信号103がアサートされたとき、クロック信号clk_pe101を停止させ、VMPコントローラ160に供給するクロック信号clk_vmp102をクロック信号clkL43に切り替える。ここではクロック信号clkL43の周波数はclkの周波数の8分の1であるとする。VMPコントローラ160はクロック信号clk_vmp102を用いてプログラムの実行時間の残りを計数する。カウンタ161で計数するときに減じるサイクル数はこのとき8に変更する。減じるサイクル数を8に変更する理由は、プログラム実行の残りサイクル数をカウントするときに、クロックの周波数を低周波数に切り替えたことの影響を相殺するためである。
【0109】
カウンタ161の残りサイクル数が0になると、VMPコントローラ160はマイクロスリープ状態信号103をネゲートする(時刻T21)。ローカルクロック制御器131はマイクロスリープ状態信号103がネゲートされたとき、クロック信号clk_pe101およびクロック信号clk_vmp102をクロック信号clk42に切り替える。
【0110】
上記のように図11の動作では、マイクロスリープ状態でカウントされる時間を、動作状態でカウントされる時間とほぼ一致させることができる。時間の制約が厳しいリアルタイム処理を実行させるのに適している。
【0111】
なお、T21の時点で実行可能なプログラムが存在しない場合は、引き続きマイクロスリープ状態を継続する。この場合、のちに別のプログラムが実行可能な状態になったときに、プログラム実行状態に遷移する。
【0112】
図11では残りサイクル数が8の倍数である1024である場合を説明したが、8の倍数ではない場合について、図12を用いて動作を説明する。
【0113】
図12では、カウンタ161の残りサイクル数が700である場合について説明する。この場合、時刻T22において残りサイクル数が4となった時点(すなわち残りサイクル数が8より小さくなった時点)で、VMPコントローラ160がローカルクロック制御器131に出力する通常クロック要求信号104をアサートする(時刻T23)。ローカルクロック制御器131は通常クロック要求信号104がアサートされると、クロック信号clk_vmp102をクロック信号clk42に切り替える。そののち、カウンタ161の残りサイクル数が0になったとき、マイクロスリープ状態信号103および通常クロック要求信号104をネゲートする(時刻T24)。ローカルクロック制御器131はマイクロスリープ状態信号103がネゲートされたとき、図11の動作と同様にクロック信号clk_pe101およびクロック信号clk_vmp102をクロック信号clk42に切り替える。
【0114】
上記のように図12の動作では、マイクロスリープ状態でカウントされる時間を、動作状態でカウントされる時間と完全に一致させることができる。その結果、より時間の制約が厳しいリアルタイム処理を実行させるのみ適している。
【0115】
次に、プロセッサ装置100がマイクロスリープ状態602においてコンテキスト転送が発生する場合について説明する。
【0116】
図13は、プロセッサ装置100がマイクロスリープ状態602の間にコンテキスト転送を行なうタイムチャートを示す。
【0117】
図13の時刻T25においてプロセッサ装置100がプログラム実行状態600からマイクロスリープ状態602に遷移し、そののち時刻T28でふたたびプログラム実行状態600に遷移するときにコンテキスト切り替えが必要である場合、図13に示すように時刻T25から時刻T28までの間にコンテキストの転送を行う。コンテキストの転送を行っている状態をコンテキスト転送状態603という。図13では時刻T26からコンテキストの転送を行い、時刻T27において完了する。コンテキストの転送の開始は、VMPコントローラ160によって決められる。VMPコントローラ160は、例えば、マイクロスリープ状態の開始時点から一定時間経過時点、マイクロスリープ状態におけるカウント値が所定値になった時点に、必要に応じてコンテキスト転送の開始を決定する。コンテキストの転送を行うために、VMPコントローラ160がマイクロスリープ状態信号103をネゲートし、クロック信号clk_pe101およびクロック信号clk_vmp102をクロック信号clk42に切り替える。このようにしてコンテキストの転送をプロセッサ装置100がプログラムを実行するときと同じ周波数で高速に転送する。コンテキストの転送が完了する時刻T27において、再びVMPコントローラ160がマイクロスリープ状態信号103をアサートし、クロック信号clk_pe101の供給を停止させ、クロック信号clk_vmp102をクロック信号clkL43に切り替える。
【0118】
上記のようにマイクロスリープ状態の間にコンテキスト転送を通常クロックにより高速に実行するので、切り替え先のプログラム開始時刻を遅らせることなく、処理性能を確保することができる。
【0119】
このように、マイクロスリープ状態602におけるカウンタ161およびコンテキストの転送を行うクロックをVMPコントローラ160が最適に制御することができる。
【0120】
また、プロセッサ装置100はマイクロスリープ状態602にあるときに、割り込み信号31がアサートされることによってもプログラム実行状態600に遷移する。このときの動作を図14のタイムチャートに示した。同図の時刻T29において割り込み信号がアサートされたとき、コンテキストの切り替えが必要な場合、プロセッサ装置100はコンテキスト転送状態603に遷移する。割り込み信号31によりプログラム実行状態600に遷移する場合で、プログラム実行の緊急度が高い場合は、本図のように時刻T30で直ちにプログラム実行状態600に遷移する。
【0121】
なお、実行状態からマイクロスリープ状態に次のように遷移してもよい。プロセッサユニット110は、現在実行中のプログラムが割り当てられた時間内に実行すべき処理を完了したとき、まず、プロセッサユニット110がクロックの供給された状態でhaltし、その直後にマイクロスリープ状態に遷移する。こうすれば、haltするだけでも消費電力の削減効果があり、さらにクロック停止することにより、さらなる消費電力の削減効果がある。
【0122】
なお、本実施例ではクロック信号clkL43をプロセッサ装置100の外部から供給する構成をとっているが、他の構成として、例えばクロック信号clk42をプロセッサ装置100の内部で分周することによりプロセッサ装置100の内部で生成してもよい。
【0123】
なお、ここでコンテキスト転送状態603にあるときにプロセッサユニット110やメモリ制御器120に対してクロック供給を再開したが、マイクロスリープ状態602の途中でコンテキスト転送状態603に遷移する本例では、コンテキスト転送状態603においてプログラムの実行を行わないので、プロセッサユニット110全体およびメモリ制御器120全体に対してクロックの供給を行う必要はない。従って、コンテキストの転送に関わる回路のみに対してクロック供給を行う構成も考えられる。
【0124】
なお、処理の緊急度が低く、リアルタイム性の保証がよりも消費電力の削減の方が優先されるプログラムを実行する場合には、ここで説明したクロック信号clk_vmp102のクロック信号clk42への切り替えを行わずにクロック信号clkL43に設定したままでコンテキストの転送やマイクロスリープ状態602のサイクル数の計数を行うことも可能である。この選択のために、VMPコントローラ160に選択レジスタを備え、ソフトウェアでユーザが設定することができる構成も考えられる。
【0125】
(実施の形態3)
図16は、本発明の実施の形態3に係る計算機システムを用いた音楽再生機能付き携帯電話装置2000の全体構成を示す機能ブロック図である。
【0126】
図16に示すように、音楽再生機能付き携帯電話装置2000はシステムLSI1000と、アンテナ2001と、高周波信号送受信部2002と、外部メモリ2003と、入出力部2004と、SDRAM2005とを備える。
【0127】
システムLSI1000は、実施の形態1または2で説明した計算機システム1または2と、メモリI/F1001と、I/O制御部1002とを備える。
【0128】
まず外部メモリ2003上に蓄積された音楽データをI/O制御部1002が読み出し、SDRAM2005に格納する。プロセッサ装置100は音楽データの再生処理を行うためにSDRAM2005から音楽データを読み出し、再生処理を行う。再生処理後のデータ再びSDRAM2005に格納する。
【0129】
SDRAM2005に蓄積された再生処理後のデータは、メモリI/F1001を介してI/O制御部1002が再び読み出し、入出力部2004に送る。入出力部2004はスピーカを内蔵した受話器である。ユーザは再生した音楽を入出力部2004が備えるスピーカから聴くことができる。
【0130】
この音楽データの再生処理を行っている間、プロセッサ装置100は常に稼動しているわけではなく、プログラムを実行する必要がない期間がある。この期間、携帯電話の消費電力を削減する目的で、プロセッサ装置100をマイクロスリープ状態602に遷移させる。
【0131】
マイクロスリープ状態602への遷移方法は実施の形態2で説明した通りである。
ここでプロセッサ装置100がマイクロスリープ状態602である間に、アンテナ2001から通話のための電波を受信した場合について、その動作を説明する。
【0132】
アンテナ2001から通話のための電波を受信したとき、高周波信号送受信部2002はこれを検出してI/O制御部1002に通知する。I/O制御部1002はこのとき、割り込み制御器400に対して割り込み信号を出力する。割り込み制御器400はこのとき、プロセッサ装置100に対して割り込み信号を出力する。プロセッサ装置100は割り込み信号を受信したとき、プログラム実行状態600に遷移して通話処理を行うために、まずマイクロスリープ状態602からコンテキスト転送状態603に遷移する。そして通話処理のためのコンテキストを転送したのち、プログラム実行状態600に遷移する。コンテキスト転送状態603に遷移したときのクロックの制御方法は実施の形態2で説明した通りである。
【産業上の利用可能性】
【0133】
本発明は、クロック信号の供給を受ける実行状態と外部からのスリープ要求信号に対してスリープ応答信号を応答することにより前記クロック信号の供給が停止される停止状態とを有するプロセッサ装置を備える計算機システムに適しており、特に携帯電話など高度な低消費電力化が求められる機器において非常に有用である。
【図面の簡単な説明】
【0134】
【図1】実施の形態1における計算機システムの構成を示すブロック図である。
【図2】プロセッサ装置100の実行状態とスリープ状態との遷移を示すタイムチャートである。
【図3】スリープ状態601に遷移する処理を示す概略フローチャートである。
【図4】プログラム実行状態600に復帰する処理を示す概略フローチャートである。
【図5】バス制御器300の詳細な構成を示すブロック図である。
【図6】スリープ状態に遷移し、さらに実行状態に復帰するまでの詳細な処理を示すフローチャートである。
【図7】停止通知受理信号22が省略される場合の、スリープ状態への遷移を示す概略フローチャートである。
【図8】停止通知受理信号22が省略される場合の、スリープ状態への遷移処理を示す詳細なフローチャートである。
【図9】実施の形態2における計算機システムの構成を示す機能ブロック図である。
【図10】VMPコントローラ160の詳細な構成を示すブロック図である。
【図11】マイクロスリープ状態602の前後でコンテキスト転送が発生しない場合のタイムチャートである。
【図12】マイクロスリープ状態602の期間のサイクル数が8サイクルの逓倍でない場合を示すタイムチャートである。
【図13】プロセッサ装置100がマイクロスリープ状態602の間にコンテキスト転送を行なうタイムチャートを示す。
【図14】割り込み信号によってプログラム実行状態600に遷移する動作を示すタイムチャートである。
【図15】プロセッサ装置の状態遷移を示す図である。
【図16】実施の形態3における計算機システムを用いた音楽再生機能付き携帯電話装置2000の構成を示す機能ブロック図である。
【符号の説明】
【0135】
1、2 計算機システム
11 スリープ要求信号
12 スリープ応答信号
21 停止通知信号
22 停止通知受理信号
23 コマンド要求信号
24 コマンド受理信号
25 ライトデータ有効信号
26 ライトデータ受理信号
27 リードデータ有効信号
28 リードデータ受理信号
31 割り込み信号
41 クロック制御信号
42 クロック信号clk
43 クロック信号clkL
100、150 プロセッサ装置
100a、100b プロセッサ
101 クロック信号clk_pe
102 クロック信号clk_vmp
103 マイクロスリープ状態信号
104 通常クロック要求信号
110 プロセッサユニット
120 メモリ制御器
130、131 ローカルクロック制御器
140、160 VMPコントローラ
141、161 カウンタ
142 割り込み検出器
143 PUI/F
144 制御レジスタ
145 状態制御部
146 カウント値判定部
151 保持部
152 減算数選択部
153 減算器
154 減算数選択信号
162 制御部
200 ホストCPU
300 バス制御器
301、301a コマンド制御部
302 コマンド調停部
303 ライトデータ制御部
304 リードデータ制御部
305 共有バッファ
306 共有バッファ判定部
310 コマンド実行部
400 割り込み制御器
500,501 クロック制御器
600 プログラム実行状態
601 スリープ状態
602 マイクロスリープ状態
603 コンテキスト転送状態
1000 システムLSI
1001 メモリI/F
1002 I/O制御部
2000 音楽再生機能付き携帯電話装置
2001 アンテナ
2002 高周波信号送受信部
2003 外部メモリ
2004 入出力部
2005 SDRAM

【特許請求の範囲】
【請求項1】
計算機システムであって、
プログラムを実行する実行状態と、外部からのスリープ要求信号に対してスリープ応答信号を応答することによりプログラムの実行を停止する停止状態とを有するプロセッサ装置と、
前記プロセッサ装置から発行されるコマンド要求に従って機能ブロックにアクセスし、コマンド要求に応答する信号を前記プロセッサ装置に出力するアクセス制御手段とを備え、
前記プロセッサ装置は、
前記スリープ要求信号を受けると、前記スリープ応答信号を応答するとともに、停止状態に遷移することを示す停止通知信号を前記アクセス制御手段に出力し、
前記アクセス制御手段は、
前記停止通知信号を受けたとき、前記プロセッサ装置に対して前記コマンド要求に応答する信号を出力しないことを特徴とする計算機システム。
【請求項2】
前記アクセス制御手段は、コマンド要求をマスクする手段を有し、前記停止通知信号を受けたとき、前記プロセッサ装置からコマンド要求が出力されている場合、当該コマンド要求を受理した後に、コマンド要求の入力をマスクし、前記プロセッサ装置からコマンド要求が出力されていない場合、コマンド要求の入力をマスクし、
前記停止通知信号が解除されたときに、前記マスクを解除する
ことを特徴とする請求項1記載の計算機システム。
【請求項3】
前記停止状態において、前記プロセッサ装置へのクロック信号の供給が停止されることを特徴とする請求項1または2記載の計算機システム。
【請求項4】
前記アクセス制御手段は、前記プロセッサ装置から前記停止通知信号を受けた後、停止通知受理信号を前記プロセッサ装置に出力し、
前記プロセッサ装置は、前記スリープ要求信号を受け、かつ前記コマンド受理信号の受信待ちである場合に、前記停止通知信号への応答として前記アクセス制御手段から停止通知受理信号を受信した後に、前記スリープ応答信号を応答する
ことを特徴とする請求項1、2または3記載の計算機システム。
【請求項5】
前記計算機システムは、前記プロセッサ装置に前記スリープ要求信号を送信し、前記プロセッサ装置から前記スリープ応答信号を受信するホストCPUと、前記クロック信号を前記プロセッサ装置に供給するクロック手段とを備え、
前記ホストCPUは、前記スリープ応答信号を受信した時、前記クロック信号の供給を停止するよう前記クロック手段を制御する
ことを特徴とする請求項1から4の何れかに記載の計算機システム。
【請求項6】
前記ホストCPUは、さらに、前記クロック信号の供給を再開するよう前記クロック手段を制御し、スリープ要求信号をネゲートする
ことを特徴とする請求項5記載の計算機システム。
【請求項7】
前記アクセス手段は、
前記プロセッサ装置と、少なくとも1つの他のプロセッサ装置とからコマンド要求を受信し、受信したコマンド要求に従ってアクセスを実行するコマンド実行部と、
コマンド要求に従ってアクセスされたリードデータを保持するための共有バッファと、
共有バッファの空き容量がしきい値以上であるか否かを判定し、前記停止通知信号を受けたとき、空き容量がしきい値以下であれば、前記プロセッサ装置に前記停止通知受理信号を送信することを保留する判定手段と、
を備えることを特徴とする請求項4記載の計算機システム。
【請求項8】
前記プロセッサ装置は、前記スリープ要求信号がネゲートされ、かつ前記コマンド受理信号の受信待ちである場合に、前記アクセス制御手段からのコマンド受理信号を受信する
ことを特徴とする請求項1から7の何れかに記載の計算機システム。
【請求項9】
クロック信号の供給を受ける実行状態と、スリープ要求信号に対してスリープ応答信号を応答することにより前記クロック信号の供給が停止される第1停止状態との間を遷移するプロセッサ装置と、
前記プロセッサ装置に対してクロック信号を供給する第1クロック供給手段と、
前記スリープ要求信号を前記プロセッサ装置に出力し、その応答として前記スリープ応答信号を受けたとき、第1クロック供給手段から前記プロセッサ装置への第1クロック信号の供給を停止するホストCPUと、
前記プロセッサ装置から発行されるコマンド要求に従って機能ブロックをアクセスし、アクセス完了後にコマンド受理信号を前記プロセッサ装置に送信するアクセス制御手段とを備え、
前記プロセッサ装置は、
前記スリープ要求信号を受け、かつ前記コマンド受理信号の受信待ちでない場合に、前記スリープ応答信号を出力し、
前記スリープ要求信号を受け、かつ前記コマンド受理信号の受信待ちである場合に、前記スリープ応答信号を応答するとともに、第1停止状態に遷移することを示す停止通知信号を前記アクセス制御手段に出力し、
前記プロセッサ装置は、
複数のプログラムを時分割多重により実行し、第1クロック信号が供給される実行状態と、第1クロック信号の供給が停止される第2停止状態とを有するプロセッサユニットと、
現在実行中のプログラムに割り当てられた時間をカウントするカウント手段と、
プロセッサ装置の実行状態と第2停止状態との遷移を制御する制御手段と、
第1クロック供給手段から前記第1クロック信号が入力され、前記第1クロック信号と、前記第1クロック信号のK倍の周期を有する第2クロック信号とを出力する第2クロック供給手段とを備え、
前記制御手段は、前記カウント手段の残り時間が0でなく、かつ現在実行中のプログラムが割り当てられた時間内に実行すべき処理を完了したとき、第2停止状態に遷移させるようクロック供給手段を制御し、
前記クロック供給手段は、第2停止状態において、前記プロセッサ装置への第1クロック信号を停止し、前記カウント手段および制御手段に前記第2クロック信号を供給し、
前記カウント手段は、前記実行状態において1ずつカウントし、前記第2停止状態においてKずつカウントする
ことを特徴とする計算機システム。
【請求項10】
複数のプログラムを時分割多重により実行し、第1クロック信号が供給される実行状態と、第1クロック信号の供給が停止される停止状態とを有するプロセッサユニットと、
現在実行中のプログラムに割り当てられた時間をカウントするカウント手段と、
プロセッサ装置の実行状態と停止状態との遷移を制御する制御手段と、
第1クロック信号と、前記第1クロック信号のK倍の周期を有する第2クロック信号とを出力するクロック供給手段とを備え、
前記制御手段は、前記カウント手段の残り時間が0でなく、かつ現在実行中のプログラムが割り当てられた時間内に実行すべき処理を完了したとき、停止状態に遷移させるようクロック供給手段を制御し、
前記クロック供給手段は、停止状態において、前記プロセッサユニットへの第1クロック信号を停止し、前記カウント手段および制御手段に前記第2クロック信号を供給し、
前記カウント手段は、前記実行状態において1ずつカウントし、前記停止状態においてKずつカウントする
ことを特徴とするプロセッサ装置。
【請求項11】
前記制御手段は、さらに、前記停止状態において前記カウント手段のカウント値がK未満になったとき、前記クロック供給手段から前記カウント手段に供給されている第2のクロック信号を第1のクロック信号に切り換え、
前記カウント手段は、さらに、前記カウント値がK未満になったとき1ずつ減算する
ことを特徴とする請求項10記載のプロセッサ装置。
【請求項12】
前記Kは2のべき乗であることを特徴とする請求項11記載のプロセッサ装置。
【請求項13】
前記制御手段は、前記プロセッサユニットから設定可能な制御レジスタを備え、
前記制御レジスタが所定のフラグ値を保持している場合は、前記停止状態において前記カウント手段のカウント値がK未満になったときの、第2のクロック信号から第1のクロック信号に切り換えおよび、カウント手段におけるKから1への減算数の変更を禁止する
ことを特徴とする請求項11記載のプロセッサ装置。
【請求項14】
前記制御手段は、さらに、
前記停止状態において、前記クロック供給手段から前記カウント手段に供給されている第2のクロック信号を第1のクロック信号に一時的に切り換えると共に、前記クロック供給手段から前記プロセッサユニットに第1のクロック信号を一時的に供給させ、
前記プロセッサユニットにコンテキスト転送の実行を指示し、
コンテキスト転送が完了したとき、前記クロック供給手段から前記カウント手段に供給されている第1のクロック信号を第2のクロック信号に戻し、前記クロック供給手段から前記プロセッサユニットに第1のクロック信号を停止させる
ことを特徴とする請求項10記載のプロセッサ装置。
【請求項15】
クロック信号の供給を受ける実行状態と、外部からのスリープ要求信号に対してスリープ応答信号を応答することにより前記クロック信号の供給が停止される停止状態との間を遷移するプロセッサ装置と、前記プロセッサ装置から発行されるコマンド要求に従って機能ブロックをアクセスし、アクセス完了後にコマンド受理信号を前記プロセッサ装置に送信するアクセス制御手段とを備える計算機システムの制御方法であって、
前記スリープ要求信号を受けるステップと、
前記スリープ要求信号を受けたとき、前記コマンド受理信号の受信待ちであるか否かを判定するステップと、
前記コマンド受理信号の受信待ちでないと判定された場合に、前記スリープ応答信号を出力するステップと、
前記コマンド受理信号の受信待ちであると判定された場合に、前記スリープ応答信号を応答するとともに、停止状態に遷移することを示す停止通知信号を前記アクセス制御手段に出力するステップと
を有することを特徴とする計算機システムの制御方法。
【請求項16】
請求項10記載のプロセッサ装置を備えることを特徴とするシステムLSI。
【請求項17】
請求項9記載の計算機システムを備え、前記ホストCPUが音声通話の制御を行なうことを特徴とする携帯電話機。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2009−15359(P2009−15359A)
【公開日】平成21年1月22日(2009.1.22)
【国際特許分類】
【出願番号】特願2007−172886(P2007−172886)
【出願日】平成19年6月29日(2007.6.29)
【出願人】(000005821)パナソニック株式会社 (73,050)
【Fターム(参考)】