(57)【特許請求の範囲】
【請求項１】
中央処理装置に接続され、当該装置が出力する信号に応じて、前記中央処理装置に対するクロックの供給を制御するクロック制御回路であって、
前記中央処理装置が所定のアドレスへの書込を行う命令を実行した後に、前記中央処理装置のサイクルが、外部にバスアクセスが生じない期間である内部サイクルとなったことを検出する検出部と、
検出部が内部サイクルを検出した後、前記中央処理装置に対するクロックを停止するクロック出力部と、
を備え、
前記検出部は、前記中央処理装置から出力される、外部にバスアクセスが生じるか否かを示す転送タイプ信号に基づいて、前記内部サイクルとなったことを検出することを特徴とするクロック制御回路。
【請求項２】
前記所定のアドレスへの書込が実際になされるレジスタをさらに含むことを特徴とする請求項１に記載のクロック制御回路。
【請求項３】
クロック制御回路から中央処理装置へのクロックの供給を制御する方法であって、
前記中央処理装置が所定のアドレスへの書込を行う命令を実行した後に、前記中央処理装置のサイクルが外部にバスアクセスが生じない期間である内部サイクルとなったことを検出する第１の工程と、
内部サイクルが検出された後、前記中央処理装置に対するクロックを停止する第２の工程と、
を備え、前記命令を前記中央処理装置に対するソフトウェア割込に起因する割込処理ルーチン内に記述し、
前記第１の工程は、前記中央処理装置から出力される、外部にバスアクセスが生じるか否かを示す転送タイプ信号に基づいて、前記内部サイクルとなったことを検出することを特徴とするクロック制御方法。
【請求項４】
前記割込処理ルーチンにおいて、一時的に割込をマスクすることを特徴とする請求項３に記載のクロック制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ処理装置と方法に関するものであり、特に、中央処理装置に対するクロックの制御に関する回路と制御方法に関する。
【０００２】
【従来の技術】
一般にＣＰＵやＭＰＵと呼ばれる中央処理装置の性能向上には目を見張るものがあり、最速のデバイスの動作周波数はギガヘルツのオーダに達している。今後もこの周波数はさらに高まると考えられるが、一方、中央処理装置は一般にＭＯＳデバイスであり、その消費電力は動作周波数に比例する傾向が強い。したがって、動作性能の追求は消費電力の増大を招き、中央処理装置が搭載される機器の電池駆動時間を制約する。このため、最近は中央処理装置に対してこまめなクロック制御がなされることも多く、例えば処理内容によってクロックの周波数を大きく低減する省電力設計が知られている。
【０００３】
特開平８−３１４７１６号に記載のクロック制御方法は、クロック停止コントローラが所定のアドレスに対する書込要求に応答し、バス・コントローラと協力してバス要求信号の主張を継続して行うことにより、中央処理装置コアに対する中央処理装置クロック信号の供給を停止する技術を開示する。また、クロック停止モードからの復帰は、所定の非同期入力信号に応答してバス肯定応答信号を発行し、中央処理装置クロック信号の禁止を解除することにより行う。
【０００４】
【発明が解決しようとする課題】
しかしながら、この技術では、本来、中央処理装置のクロックの制御に関係しないバス・コントローラを作り変える必要が生じる。設計の効率や開発期間の短縮という観点からも、中央処理装置周辺の回路は既存のままとし、クロック制御に直接関係する回路のみを改造または追加することが望ましい。当然ながら、中央処理装置そのものも、クロック制御のために特殊に作り変えないことが望ましい。
【０００５】
本発明はこうした課題に鑑みてなされたものであり、その目的は、中央処理装置またはその周辺回路を作り変えずに中央処理装置のクロックを制御することにある。別の目的は、所定の仕様、例えばクロックを容易に停止できるＨＡＬＴ命令などを有さない命令体系を前提に設計されている中央処理装置に適合する方法でクロックを制御することにある。さらに別の目的は、クロックの停止制御に当たり、不用意なクロックの停止を回避することにある。さらに別の目的は、停止したクロックの再開を効率的に行うことにある。
【０００６】
【課題を解決するための手段】
本発明のある態様は、中央処理装置に接続され、当該装置に対してクロックを供給するクロック制御回路であって、中央処理装置が所定のアドレスへの書込を行う命令を実行した後に、中央処理装置のサイクルが内部サイクルとなったことを検出する検出部と、検出部が内部サイクルを検出した後、中央処理装置に対するクロックを停止するクロック出力部とを備える。
【０００７】
「内部サイクル」は、一般には中央処理装置内部で処理がなされるサイクルを指すが、本明細書ではそれに限定せず、中央処理装置のアイドルステイトなど、要するに外部にバスアクセスが生じない期間を指すとする。「命令」は例えばクロック停止を目的とするもので、所定のアドレスへの書込を指示する。この命令によってクロックを停止させる処理が起動されるため、ＨＡＬＴ命令など、中央処理装置の動作を止めるための特別な命令をもたない場合でもクロックの停止が容易になる。
【０００８】
「所定のアドレスへの書込」は、当該アドレスに所定のデータを書き込む必要がある場合と、任意のデータの書込でよい場合がある。後者は、そのアドレスへの書込動作自体が契機となってクロック停止の処理が起動される。いずれの場合も、本クロック制御回路はその書込の対象となるレジスタを備えてもよい。
【０００９】
このクロック制御回路を設ければ、中央処理装置やその周辺回路を作り替えることなく、クロックの停止制御が実現する。
【００１０】
本発明の別の態様は、クロック制御回路から中央処理装置へのクロックの供給を制御する方法であって、中央処理装置が所定のアドレスへの書込を行う命令を実行した後に、中央処理装置のサイクルが内部サイクルとなったことを検出する工程と、内部サイクルが検出された後、中央処理装置に対するクロックを停止する工程とを備え、前記命令を中央処理装置に対するソフトウェア割込に起因する割込処理ルーチン内に記述したものである。
【００１１】
この方法によれば、中央処理装置のクロックを停止させるための契機をソフトウェア割込で実現でき、その手続は簡単である。割込処理ルーチンにおいて、一時的に割込をマスクすることにより、当該割込処理中における不用意なクロックの停止を防止してもよい。
【００１２】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【００１３】
【発明の実施の形態】
図１は実施の形態に係るクロック制御回路（以下、本回路ともいう）のピン属性を示す。ＣＬＫは本回路へのクロック入力、ＣＬＫＥＮは本回路からのクロック出力に対するクロックイネーブル信号、ｎＲＥＳＥＴはローアクティブのリセット信号（以下、ローアクティブの場合、信号名の最初にｎを付す）、ＣＬＫＯＵＴは本回路から中央処理装置その他へのクロック出力信号、ｎＩＲＱとｎＦＩＱはそれぞれ通常および高速割込信号、ＡＤＤＲ［３１：０］は３２ビットのアドレス入力、ＷＲＩＴＥはハイでライトを示すコマンド信号、ＳＩＺＥ［１：０］はデータアクセスバイト幅を示す信号、ＴＲＡＮＳ［１：０］は２ビットで中央処理装置の転送タイプを示す信号、ＷＤＡＴＡ＿０はライトデータのビット０、ＴＲＡＮＳＯＵＴ［１：０］はＴＲＡＮＳ［１：０］に後述の処理を加えた出力信号である。ｎＦＩＱは緊急性の高い割込処理のために設けられ、中央処理装置２０ではｎＩＲＱよりも高い優先度をもって処理される。なお、ＣＬＫＥＮおよびそれを１クロック分遅延させた後述のＣＬＫＥＮ＿ＤＬＹは、簡単のために以下ともにハイで固定とする。また、［３１：０］［１：０］等は省略することもある。
【００１４】
図２はクロック制御回路が内蔵するシステムレジスタである「クロック停止指示レジスタ」の仕様を示す。このレジスタはＩ／Ｏ領域にマップされ、そのアドレスは１４００３０００ｈである。このレジスタに「１」をライトすると、これがクロック停止の指示として作用する。実施の形態では、クロックの停止のトリガとしてソフトウェア割込を利用する。ソフトウェア割込の命令を実行すると、クロック制御回路１０は割込処理ルーチンに入る。そのルーチンの最初のほうに「クロック停止指示レジスタへの「１」の書込命令」が置かれている。
【００１５】
なお、そのルーチンによる処理が正常に進み、クロックが正しく停止されるまでに別の割込が発生することもある。このような状況において、割込を正しく処理するためには、クロックが以前のソフトウェア割込によって不意に停止することを回避すべきであり、そのために、割込処理ルーチンの少なくとも最初の部分では割込をマスクすること、すなわち割込の発生を防止することが望ましい。
【００１６】
図３は、クロック制御回路１０と中央処理装置２０の接続図である。クロック制御回路１０と中央処理装置２０の間は、図１で述べた信号がやりとりされ、かつ必要な信号は外部回路へ接続されている。すなわち、ＣＬＫＥＮ、ｎＲＥＳＥＴ、ｎＩＲＱ、ｎＦＩＱは外部回路からクロック制御回路１０と中央処理装置２０へ入力され、ＣＬＫは同様に外部回路からクロック制御回路１０のみへ入力され、ＡＤＤＲ［３１：０］、ＷＲＩＴＥ、ＳＩＺＥ［１：０］、ＷＤＡＴＡ［０］は中央処理装置２０から外部回路へも供給される。
【００１７】
図４〜７はいずれもクロック制御回路１０の内部回路を示す。
図４および図５は、クロック停止の指示から実際にその指示が承認されるまでの「承認（アクノリッジ）回路」に相当する。図４のごとく、アドレス「１４００３０００ｈ」のデコード信号、ＣＬＫＥＮがハイのときにＷＲＩＴＥをＤタイプフリップフロップ（以下単にＤＦＦと表記する）でラッチしたＷＲＩＴＥ＿ＰＰ、ＣＬＫＥＮ、および後述のＴＲＡＮＳ＿ＰＰ１が４入力のアンド３２へ入力され、その出力がセレクタ３３のセレクト信号となる。このセレクト信号が「０」のときアンド３１の出力が選択され、「１」のときＷＤＡＴＡ＿０が選択される。選択された信号はＤＦＦ３４のデータ入力へ与えられている。このＤＦＦ３４が「クロック停止指示レジスタ」として機能する。以下、図示しないが、特に断らないかぎり、ＤＦＦのリセット端子にはｎＲＥＳＥＴ信号が接続され、クロック入力端子にはＣＬＫが接続されているとする。このＤＦＦ３４の出力は信号ＣＫＳＴＯＰとなる。ＣＫＳＴＯＰはセレクタ３３の前段のアンド３１の一方の入力へ与えられ、そのアンド３１の他方の入力にはＣＫＳＴＯＰＯＫの反転信号が与えられる。
【００１８】
ＴＲＡＮＳ＿ＰＰはＣＬＫＥＮがハイのときにＴＲＡＮＳをＤＦＦでラッチした信号であり、中央処理装置２０のバスサイクルをそのタイミングに合わせて表示する。ＴＲＡＮＳ＿ＰＰ０、１はノア３０へ入力され、その出力Ｉ−ＣＹＣが３入力のアンド３６へ入力される。Ｉ−ＣＹＣは、中央処理装置２０の内部サイクル中にアクティブになる。ここでは、ＴＲＡＮＳ＿ＰＰ０、１がともにゼロのとき、内部サイクルと定義する。
【００１９】
このアンド３６の他の入力はＣＫＳＴＯＰとＣＬＫＥＮをＤＦＦで遅延させたＣＬＫＥＮ＿ＤＬＹであり、出力はＣＫＳＴＯＰＯＫとなる。この信号はクロックの停止が有効になる最初の１クロック期間だけアクティブになり、クロック停止の開始を示す。ＣＫＳＴＯＰはインバータ３８へ入力され、その出力が前述のアンド３１へ入力されている。このため、クロック停止指示レジスタであるＤＦＦ３４は、中央処理装置２０からライトされたときにはＷＤＡＴＡ＿０がセットされ、そうではなくＣＫＳＴＯＰＯＫがハイのときは「０」となり、それらのいずれでもない場合は前値を保持する。なお、３入力アンド３６の入力のうち、Ｉ−ＣＹＣとＣＬＫＥＮ＿ＤＬＹの論理積に当たる部分は、「直前のサイクルでＣＬＫＥＮがハイ、かつＴＲＡＮＳで示されるサイクルが内部サイクルＩであった」ことを意味する。これは後述の図８において、サイクルＣ３でそうなる事実を次のサイクルＣ４において知るための論理である。
【００２０】
図５はＣＫＳＴＯＰＯＫを受けて、以降、クロックが停止している間アクティブになるＣＫＳＴＯＰＰＥＤを生成する。３入力のアンド４０にはｎＩＲＱ、ｎＦＩＱおよびＣＫＳＴＯＰＰＥＤが入力され、その出力はオア４２の一方の入力となる。このオア４２の他方の入力にはＣＫＳＴＯＰＯＫが与えられている。このオア４２の出力はＤＦＦ４４で１クロック期間ホールドされ、ＣＫＳＴＯＰＰＥＤとなる。なお、ｎＩＲＱとｎＦＩＱの一方がアサートされると３入力アンド４０の出力がローになり、またＣＫＳＴＯＰＯＫも最大１クロックしかハイにならないから、ＣＫＳＴＯＰＰＥＤは速やかにローに戻る。その結果、クロックの停止が解除され、通常動作へ回帰する。
【００２１】
図６は、中央処理装置２０の内部サイクルが検出された後、中央処理装置２０に対するクロックを停止するクロック出力部の構成を示す。ＣＫＳＴＯＰＯＫは遅延ゲート５０を経てＣＫＳＴＯＰＯＫ＿ＤＤＬＹとなる。ＣＫＳＴＯＰＰＥＤも同様に遅延ゲート５４を経てＣＫＳＴＯＰＰＥＤ＿ＤＤＬＹとなる。これらの遅延量は後述する。ふたつのディレイ信号およびＣＫＳＴＯＰＰＥＤは３入力のオア５２へ入力され、その出力であるＣＫＭＡＳＫが２入力のオア５６にてＣＬＫとオアされ、その出力が出力バッファ５８を経てＣＬＫＯＵＴとして中央処理装置２０へ出力される。ＣＫＭＡＳＫはクロックをマスクする、すなわち停止するための信号である。
【００２２】
図７は、外部で使用するＴＲＡＮＳＯＵＴを生成する回路を示す。ＴＲＡＮＳ＿ＰＰ０、１はそれぞれ２入力のアンド６０、６４の一方の入力へ与えられ、他方の入力にはＣＫＭＡＳＫをインバータ６８で反転させた信号が共通して与えられる。ふたつのアンド６０、６４の出力はそれぞれ出力バッファ６２、６６を経てＴＲＡＮＳＯＵＴ０、１として外部へ出力される。中央処理装置２０はそのバスサイクルをＴＲＡＮＳで示すが、この実施の形態では、中央処理装置２０とクロック制御回路１０を外部から見たバスサイクルをＴＲＡＮＳＯＵＴによって示す。
【００２３】
以上の構成によるクロック停止および再開は以下のとおりである。
クロック停止は、中央処理装置２０のプログラムによって行う。ソフトウェア割込が発生したら、ステータスレジスタ、ソフトウェア割込ハンドラ内で使用するレジスタ、および戻り番地を示すリンクレジスタの内容をスタックに積む。ソフトウェア割込処理中は、ｎＩＲＱは自動的にディスエーブルされるとする。一方、クロック停止直前にｎＦＩＱが発生してｎＦＩＱに対する割込処理中にクロックが停止することを避けるため、ｎＦＩＱはディスエーブルしておく。つづいて、クロック停止指示レジスタに「１」をライトする。クロック制御回路１０はこの指示にしたがってクロックを停止する。ＣＬＫＯＵＴはハイで固定される。クロック停止中は、ＴＲＡＮＳＯＵＴ０、１が固定され、中央処理装置２０とクロック制御回路１０を外部から見たバスサイクルが内部サイクルの状態で引き延ばされることになる。これにより、中央処理装置２０から外部へのアクセスが意図せず発生するなどの不具合が回避される。
【００２４】
クロック再開処理は、前記のごとくｎＦＩＱまたはｎＩＲＱの発生で開始する。まずステータスレジスタその他のレジスタの内容をスタックから戻し、ソフトウェア割込ハンドラから復帰する。このとき、中央処理装置２０の機構により、ｎＦＩＱおよびｎＩＲＱのイネーブル／ディセーブルは、自動的にソフトウェア割込処理に移る直前の状態に戻り、割込が禁止されていなければ、割込処理が行われる。最初から割込が禁止されていた場合であっても、クロックは再開する。
【００２５】
図８は以上の回路によるクロック制御回路１０のクロック停止および再起動に関するタイミングチャートである。ここではクロックサイクルを便宜的に期間Ｃ１〜Ｃ１３と表記している。図中、ＴＲＡＮＳに現れる「Ｎ」は中央処理装置２０があるアドレスに対してアクセスするサイクルで、いわゆるバスアクセスが生じるものである。一方、「Ｉ」は中央処理装置２０の内部サイクルを示し、例えば中央処理装置２０内部で乗算命令を処理している場合がこれに当たる。この信号をＣＬＫＥＮがハイのときにＤＦＦでラッチしてＴＲＡＮＳ＿ＰＰとすることで、「Ｎ」または「Ｉ」が実際のバスサイクルに合った長さになる。
【００２６】
期間Ｃ２において、ＣＫＳＴＯＰがハイに変化している。これは、このタイミングでクロック停止指示レジスタへの「１」の書込があったことに対応する。したがって、期間Ｃ１、Ｃ２は、割込処理ルーチンの処理中である。
【００２７】
つづいて、図４の回路により、ＣＫＳＴＯＰＯＫが期間Ｃ４でハイになる。これは、ＴＲＡＮＳ＿ＰＰが同期間において「Ｉ」になったことに対応する。ＣＫＳＴＯＰＯＫがハイになったため、ＣＫＳＴＯＰが期間Ｃ５の開始でローに戻る。
【００２８】
図５の回路により、ＣＫＳＴＯＰＯＫがハイになったあと、期間Ｃ５でＣＫＳＴＯＰＰＥＤがハイになる。このディレイ信号がＣＫＳＴＯＰＰＥＤ＿ＤＤＬＹに現れる。ｎＦＩＱまたはｎＩＲＱが期間Ｃ１０の最初にアサートされると、図５の回路によってＣＫＳＴＯＰＰＥＤが期間Ｃ１１の最初でローになる。以上の動作により、ＣＫＭＡＳＫが期間Ｃ４からＣ１０の間ハイになり、ＣＬＫＯＵＴがハイ固定される。
【００２９】
ここで、クロックのマスクのタイミングにハザードが生じないよう、前述の遅延量が設計されている。すなわち、ＣＫＳＴＯＰＯＫに至るタイミングパスの始点となるすべてのＤＦＦのクロックＣＬＫから、同ＤＦＦ、ＣＫＳＴＯＰＯＫ＿ＤＤＬＹを通過してＣＬＫＯＵＴに至るパスの最大遅延をＴ１とすると、
Ｔ１＜（ＣＬＫがハイの期間）−（スキュー）
の関係が成り立つようにする。また、ＤＦＦ４４のＣＬＫからＣＫＳＴＯＰＰＥＤを通過してＣＫＳＴＯＰＰＥＤ＿ＤＤＬＹのための遅延ゲート５４を通過せずにＣＫＭＡＳＫに至るパスの最大遅延をＴ２、ＣＫＳＴＯＰＯＫに至るすべてのタイミングパスの始点となるＤＦＦのクロックＣＬＫから、同ＤＦＦ、ＣＫＳＴＯＰＯＫを通過してＣＫＭＡＳＫに至るパスの最小遅延をＴ３とすると、
Ｔ２＜Ｔ３−（スキュー）
の関係が成り立つようにする。また、ＣＬＫから図６のオア５６と出力バッファ５８のみを通過してＣＬＫＯＵＴに至るパスの最大遅延をＴ４、ＤＦＦ４４のＣＬＫからＣＫＳＴＯＰＰＥＤ＿ＤＤＬＹのための遅延ゲート５４を通過してＣＬＫＯＵＴに至るパスの最小遅延をＴ５とすると、
Ｔ４＜Ｔ５−（スキュー）
の関係が成り立つようにする。以上のタイミング設計により、ハザードの発生を回避できる。なお、スキューとはクロック制御回路１０内で生じるＣＬＫのスキューをさす。
【００３０】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。例えば、実施の形態では、クロックの停止をクロック停止指示レジスタへの「１」の書込のみを要因と考えた。しかし、そのほかのソフトウェアまたはハードウエア上のイベントをトリガとしてクロックの停止を指示してもよい。
【００３１】
【発明の効果】
本発明によれば、中央処理装置またはその周辺回路を作り変えずに中央処理装置のクロックを効果的に制御できる。
【図面の簡単な説明】
【図１】  実施の形態に係るクロック制御回路のピン属性を示す図である。
【図２】  実施の形態に係るクロック制御回路が有するクロック停止指示レジスタの仕様を示す図である。
【図３】  実施の形態におけるクロック制御回路と中央処理装置の接続図である。
【図４】  内部サイクル検出回路とクロック停止のための回路図である。
【図５】  クロック停止と再開のための回路図である。
【図６】  クロック出力部分の回路図である。
【図７】  中央処理装置とクロック制御回路を外部から見た転送タイプを示す信号の生成回路図である。
【図８】  実施の形態に係るクロック制御回路の動作を示すタイミングチャートである。
【符号の説明】
１０  クロック制御回路、  ２０  中央処理装置、  ４２，５２，５６  オア、  ３１，３２，３６，４０，６０，６４  アンド、  ３４，４４  ＤＦＦ、  ３８，６８  インバータ、  ５０，５４  遅延ゲート、  ５８，６２，６６  出力バッファ、  ３０  ノア、  ３３  セレクタ。
【図１】
0004079653.tif 000002
【図２】
0004079653.tif 000003
【図３】
0004079653.tif 000004
【図４】
0004079653.tif 000005
【図５】
0004079653.tif 000006
【図６】
0004079653.tif 000007
【図７】
0004079653.tif 000008
【図８】
0004079653.tif 000009