(57)【特許請求の範囲】
【請求項１】
キャッシュ・コヒーレンシ動作を実行する必要のある第１組の機能ユニットとキャッシュ・コヒーレンシ動作を実行する必要のない第２組の機能ユニットとを含む集積回路を、全電力状態ならびに第１および第２の低電力状態で動作する装置であって、
集積回路が全電力状態から第１の低電力状態に遷移するか、それとも第２の低電力状態に遷移するかを示す構成信号を受け取る第１の入力と、
構成信号に応じて集積回路を全電力状態から第１または第２の低電力状態に遷移させる電力供給停止信号を受け取る第２の信号入力と、
集積回路の外部の装置による、集積回路からアクセスできるメモリ資源への、メモリ・アクセスを示すアクセス信号を受け取る第３の入力と、
構成信号および電力供給停止信号に応じて集積回路を全電力状態から第１または第２の低電力状態に遷移させ、
（１）第１の低電力状態のときには、キャッシュ・コヒーレンシ動作を実行するのに必要な、集積回路内の第１組の機能ユニットにクロック信号を連続的に伝搬し、
（２）第２の低電力状態のときには、集積回路内の第１組の機能ユニットと第２組の機能ユニットとの両方にクロック信号を伝播せず、アクセス信号に応答して、クロック信号を第１組の機能ユニットには伝播するが、第２組の機能ユニットには伝搬しないことによって、集積回路が第１の低電力状態と第２の低電力状態との両方でキャッシュ・コヒーレンシ動作を実行することを可能にする電力低減論理と
を備えることを特徴とする装置。
【請求項２】
全電力消費量モードならびに第１の低電力消費量モードおよび第２の低電力消費量モードで動作することのできる集積回路であって、
集積回路が全電力消費量モードから第１の低電力消費量モードに遷移するか、それとも第２の低電力消費量モードに遷移するかを示す構成信号を受け取る構成入力と、
集積回路からアクセスできるメイン・メモリとキャッシュ・メモリとの間のコヒーレンシを維持するキャッシュ・コヒーレンシ回路と、
集積回路内で命令を処理する命令処理回路と、
（１）電力供給停止信号に応答し、かつ構成信号に従って、集積回路が第１の低電力消費量モードに遷移するときには、命令処理回路へのクロック信号をディスエーブルするが、キャッシュ・コヒーレンシ回路へのクロック信号はディスエーブルせず、
（２）電力供給停止信号に応答し、かつ構成信号に従って、集積回路が第２の低電力消費量モードに遷移するときには、キャッシュ・コヒーレンシ回路と命令処理回路の両方へのクロック信号をディスエーブルし、かつ集積回路が第２の低電力消費量モードであるときに、メモリ・アクセスを示す入力信号に応答してキャッシュ・コヒーレンシ回路へのクロック信号を一時的にイネーブルする電力低減回路と
を備えることを特徴とする集積回路。
【請求項３】
プロセッサ・バスと、
プロセッサ・バスに結合されたプロセッサと、
システム・バスと、
システム・バスに結合された周辺装置と、
プロセッサおよび周辺装置からアクセスできるメイン・メモリと、
プロセッサからアクセスできるキャッシュ・メモリとを備え、
プロセッサが、全電力消費量モードならびに第１の低電力消費量モードおよび第２の低電力消費量モードで動作することができ、
プロセッサが全電力消費量モードから第１の低電力消費量モードに遷移するか、それとも第２の低電力消費量モードに遷移するかを示す構成信号を受け取る構成入力と、
メイン・メモリと、キャッシュ・メモリとの間のコヒーレンシを維持するキャッシュ・コヒーレンシ回路と、
プロセッサ内で命令を処理する命令処理回路と、
（１）電力供給停止信号に応答し、かつ構成信号に従って、プロセッサが第１の低電力消費量モードに遷移するときには、命令処理回路へのクロック信号をディスエーブルするが、キャッシュ・コヒーレンシ回路へのクロック信号はディスエーブルせず、
（２）電力供給停止信号に応答し、かつ構成信号に従って、プロセッサが第２の低電力消費量モードに遷移するときには、キャッシュ・コヒーレンシ回路と命令処理回路の両方へのクロック信号をディスエーブルし、かつプロセッサが第２の低電力消費量モードであるときに、メモリ・アクセスを示す入力信号に応答してキャッシュ・コヒーレンシ回路へのクロック信号を一時的にイネーブルする電力低減回路と
を備えることを特徴とするコンピュータ・システム。
【請求項４】
キャッシュ・コヒーレンシ動作を実行する必要のある第１組の機能ユニットとキャッシュ・コヒーレンシ動作を実行する必要のない第２組の機能ユニットとを含む集積回路を全電力状態と第１または第２の低電力状態との間で遷移させる方法であって、
電力供給停止信号が検出されたことに応答して、全電力状態と第１または第２の低電力状態との間の遷移を指定する構成信号に応じて設定された構成表示の状態を判定するステップと、
構成表示が第１の状態に設定されている場合、集積回路が全電力状態から第１の低電力状態に遷移するように第２組の機能ユニットへのクロック信号をゲートするステップと、
構成表示が第２の状態に設定されている場合、集積回路を全電力状態から第２の低電力状態に遷移させ、クロック信号が、集積回路内の第１組の機能ユニットへのクロック信号と第２組の機能ユニットへのクロック信号の両方をゲートし、かつクロック信号が、集積回路の外部の装置によるメモリ・アクセスを示す信号に応答して、第１組の機能ユニットには伝搬されるが、第２組の機能ユニットには伝搬されないステップと
を含むことを特徴とする方法。
【請求項５】
第１および第２の低電力消費量モードで動作するときにキャッシュ・コヒーレンシを維持するように集積回路を構成する方法であって、
所定の構成例において構成信号が第１の状態を占めるか、それとも第２の状態を占めるかを判定するステップと、
構成信号が第１の状態を占める場合に、第１の低電力消費量モードに入り、命令処理回路への電力供給を停止し、キャッシュ・コヒーレンシ回路に電力を供給するように集積回路を構成するステップと、
構成信号が第２の状態を占める場合に、第２の低電力消費量モードに入り、命令処理回路とキャッシュ・コヒーレンシ回路の両方への電力供給を停止し、メモリ・アクセスを示す入力信号に応答してキャッシュ・コヒーレンシ回路に一時的に電力を投入するように集積回路を構成するステップとを含む方法。
【請求項６】
キャッシュ・コヒーレンシ動作を実行するのに必要な第１組の機能ユニットとキャッシュ・コヒーレンシ動作を実行するのに必要のない第２組の機能ユニットとを含む集積回路に関連する電力低減論理であって、
電力低減信号を受け取る第１の入力と、
電力低減論理に関連する集積回路が、電力低減信号がアサートされたことに応答して、電力投入モードから第１の電力供給停止モードに遷移するか、又は第２の電力供給停止モードに遷移するかを示す構成信号を受け取る第２の入力と、
メモリ・アクセスを示すアクセス信号を受け取る第３の入力と、
集積回路が第１の電力供給停止モードであるときには、集積回路の第２組の機能ユニットへのクロック信号をディスエーブルするが、集積回路の第１組の機能ユニットへのクロック信号はディスエーブルせず、集積回路が第２の電力供給停止モードであるときには、集積回路の第１組の機能ユニットと第２組の機能ユニットとの両方へのクロック信号をディスエーブルするが、アクセス信号がアサートされたことに応答して第１組の機能ユニットがキャッシュ・コヒーレンシ動作を実行できるように、アクセス信号がアサートされたことに応答して第１組の機能ユニットへのクロック信号を一時的にイネーブルし、その後、第１組の機能ユニットへのクロック信号を再びディスエーブルするクロック・ディスエーブル回路とを備えることを特徴とする電力低減論理。
【請求項７】
全電力消費量モードならびに第１および第２の低電力消費量モードで動作することのできる集積回路であって、
集積回路が全電力消費量モードから第１の低電力消費量モードに遷移するか、それとも第２の低電力消費量モードに遷移するかを示す構成信号を受け取る構成手段と、
メイン・メモリと、集積回路からアクセスできるキャッシュ・メモリとの間のコヒーレンシを維持するキャッシュ・コヒーレンシ回路と、
集積回路内で命令を処理する命令処理回路と、
（１）電力供給停止信号に応答し、かつ構成信号に従って、集積回路が第１の低電力消費量モードに遷移したときに、命令処理回路へのクロック信号をディスエーブルするが、キャッシュ・コヒーレンシ回路へのクロック信号はディスエーブルせず、
（２）電力供給停止信号に応答し、かつ構成信号に従って、集積回路が第２の低電力消費量モードに遷移したときに、命令処理回路とキャッシュ・コヒーレンシ回路との両方へのクロック信号をディスエーブルし、集積回路が第２の低電力消費量モードであるときに、メモリ・アクセスを示す入力信号に応答して、キャッシュ・コヒーレンシ回路へのクロック信号を一時的にイネーブルする電力低減手段と
を備えることを特徴とする集積回路。
【請求項８】
キャッシュ・コヒーレンシ動作を実行するのに必要な第１組の機能ユニットとキャッシュ・コヒーレンシ動作を実行するのに必要のない第２組の機能ユニットとを含む集積回路に関連する電力低減論理であって、
電力低減信号を受け取る第１の入力手段と、
電力低減論理に関連する集積回路が、電力低減信号がアサートされたことに応答して、電力投入モードから第１の電力供給停止モードに遷移するか、それとも第２の電力供給停止モードに遷移するかを示す構成信号を受け取る第２の入力手段と、
メモリ・アクセスを示すアクセス信号を受け取る第３の入力手段と、
集積回路が第１の電力供給停止モードであるときには、集積回路の第２組の機能ユニットへのクロック信号をディスエーブルするが、集積回路の第１組の機能ユニットへのクロック信号はディスエーブルせず、集積回路が第２の電力供給停止モードであるときには、集積回路の第１組の機能ユニットと第２組の機能ユニットとの両方へのクロック信号をディスエーブルするが、アクセス信号がアサートされたことに応答して第１組の機能ユニットがキャッシュ・コヒーレンシ動作を実行することを可能にするように、アクセス信号がアサートされたことに応答して第１組の機能ユニットへのクロック信号を一時的にイネーブルするクロック・ディスエーブル手段と
を備えることを特徴とする電力低減論理。
【発明の詳細な説明】
発明の分野
本発明は、全般的にはコンピュータおよびコンピュータ・システムに関する。詳細には、本発明は、低電力状態で動作することのできる集積回路と、この集積回路が低電力状態で動作するときにキャッシュ・コヒーレンシを維持する方法とに関する。
発明の背景
プロセッサなどの集積回路（ＩＣ）内の電力消費量を低減する多数の技法の１つとして、プロセッサの一部または全体へのクロック信号を停止または遮断する技法がある。この方法では、「クロック停止」信号のアサートが必要とされることがあり、その場合、プロセッサは低電力消費量状態（すなわち、低電力状態）に入り、プロセッサの多数の機能ユニットはもはやクロックされなくなる。プロセッサに関連するキャッシュ・メモリによって与えられる性能上の利点を維持するには、プロセッサが低電力状態であるときでもキャッシュ・コヒーレンシを維持することが望ましい。
多くのコンピュータ・システムは複数のプロセッサを使用する。任意の一時点では、これらのプロセッサのうちの１つまたは多くが低電力状態であり、それに対して他のプロセッサは完全電力供給状態の間、引き続きデータに作用することができる。このようなコンピュータ・システムでキャッシュ・コヒーレンシを維持するには、低電力状態で動作するプロセッサは、他のプロセッサの活動の結果として得られるいくつかの信号を監視し、これらに応答しなければならない。他のプロセッサの活動の結果として得られるスヌープ要求に応答するのに必要なキャッシュ・コヒーレンシ・スヌープ回路の電力供給では、多量の電力が消費され、したがって、プロセッサが低電力状態に入ったときはこの電力消費量を最小限に抑えることが望ましい。
発明の概要
本発明によれば、集積回路を低電力消費量状態で動作させる装置が提供される。この装置は、集積回路の外部の装置による、集積回路からアクセスできるメモリ資源への、メモリ・アクセスを示すアクセス信号を受け取るように結合された入力を含む。電力低減論理は、集積回路内の第１組の機能ユニットと第２組の機能ユニットの両方にクロック信号をゲートし、第１組の機能ユニットは、集積回路内でキャッシュ・コヒーレンシ動作を実行することが要求される。電力低減論理は、アクセス信号のアサートに応答してクロック信号を第１組の機能ユニットに伝搬する。本発明の他の特徴は、添付の図面および以下の詳細な説明から明らかになろう。
【図面の簡単な説明】
本発明は、一例として図示されており、添付の図面の図に限るものではない。
第１図は、本発明を実現することのできるコンピュータ・システムの概略図である。
第２図は、本発明を実現することのできるプロセッサの概略図である。
第３図は、本発明の一実施形態によって動作するプロセッサによって占有できる様々なクロック状態を示す状態図である。
第４図は、本発明によって停止応諾モードで動作するように構成された第２図のプロセッサの概略図である。
第５図は、本発明による高速開始モードで動作するように構成された第２図のプロセッサを示す図である。
第６図は、本発明によって集積回路を低電力消費量状態で動作するクロック回路の概略図である。
第７図は、第６図のクロック回路内に組み込まれる開始停止論理をさらに詳しく示す概略図である。
第８図は、第６図に示すクロック回路内に組み込まれるクロック・イネーブル／ディスエーブル論理の構造をさらに詳しく示す概略図である。
第９Ａ図および第９Ｂ図は、第４図ないし第８図を参照して説明した様々な信号のタイミングを示すタイミング図である。
第１０図は、低電力消費量状態のときにキャッシュ・コヒーレンシを維持するようにプロセッサを構成する、本発明による方法の一実施形態を示すフローチャートである。
第１１図は、プロセッサ内で低電力消費量状態に入る、本発明による方法を示すフローチャートである。
第１２図は、集積回路を低電力消費量状態で動作する、本発明による方法を示すフローチャートである。
詳細な説明
集積回路が低電力状態であるときにキャッシュ・コヒーレンシを維持する方法および装置について説明する。以下の説明では、説明の都合上、本発明を完全に理解していただくために多数の特定の詳細について述べる。しかし、当業者には、これらの特定の詳細なしに本発明を実施できることが明白であろう。
コンピュータ・システムおよびマイクロプロセッサの概要
第１図を参照すると、本発明の後述の実施形態のうちのどれかと共に使用できるコンピュータ・システム１０がブロック図形で示されている。第１図はコンピュータ・システムを全体的に説明するうえで有用であるが、システムのいくつかの詳細が示されていないことが理解されよう。本発明の開示の必要に応じて、本明細書と共に提示した他の図を参照して他の詳細について述べる。さらに、本発明を例示的な実施形態を参照して説明する。当業者なら代替実施形態を構想することができ、このような代替実施形態は本発明の範囲内とみなされる。第１図に示すように、コンピュータ・システム１０は、ユニプロセッサ・システムであり、プロセッサ・バス１２によってメモリ・バス制御論理１６（バス・ブリッジとも呼ばれる）に結合されたプロセッサ１４を備える。プロセッサ・バス１２に他のプロセッサを結合し、マルチプロセッサ・システムとすることができる。プロセッサ１４は、内部データ命令キャッシュ１５を含み、また、専用バスを介してレベル２（Ｌ２）キャッシュ１７にアクセスできるプロセッサとして示されている。メモリ・バス論理１６は、エージェント・バス要求１９をプロセッサにアサートし、周辺装置のためにプロセッサ・バス１２の制御を要求することもできる。たとえば、バス要求１９は、カリフォルニア州サンタクララのＩｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎによって開発されたインテル・アーキテクチャ（ＩＡ）内に定義された優先エージェント・バス要求（ＢＰＲＩ＃）信号でよい。プロセッサ１４は、メモリ・バス制御論理１６を介してメイン・メモリ１８にアクセスすることができる。メイン・メモリ１８は通常、ランダム・アクセス・メモリ（ＲＡＭ）を備え、プロセッサ１４によって使用される命令および情報を記憶する。プロセッサ１４は、論理１６を介してレベル３（Ｌ３）キャッシュ・メモリ２０にアクセスすることもできる。メモリ・バス制御論理１６はシステム・バス２２に結合され、入出力（Ｉ／Ｏ）ポート２１によってシステム・バス２２に結合されたいくつかの周辺装置は、このシステム・バス２２を介して互いに通信すると共に、メモリ１８および２０ならびにプロセッサ１４と通信する。周辺装置には、表示ユニット２４（陰極線管（ＣＲＴ）や液晶ディスプレイ（ＬＣＤ）など）、英数字入力装置２６（キーボードなど）、カーソル制御装置２８（マウスや他のポインティング・デバイスなど）、ハード・コピー装置３０（コンピュータ画像のハード・コピーを生成するプリンタやプロッタなど）、および信号生成装置３２（拡声器など）が含まれる。コンピュータ・システム１０は、システム・バス２２に結合された大容量記憶装置３４も含む。
次に第２図を参照すると、第１図のプロセッサ１４のより詳細な図がブロック図形で示されている。プロセッサ１４は、バス・インタフェース・ユニット３２を含むいくつかの機能ユニット・ブロック（ＦＵＢ）を備えている。バス・インタフェース・ユニット３２は、プロセッサ１４とコンピュータ・システム１０のプロセッサ・バス１２との間のインタフェースを実現する。バス・インタフェース・ユニット３２には、いくつかの機能エンティティ、すなわち、書込みバッファ、バス制御論理、Ｌ２キャッシュ制御、内部キャッシュ制御、ならびにアドレス・ドライバおよびアドレス受信機が含まれる。バス・インタフェース・ユニット３２は、プリフェッチャ３４が命令キャッシュ３８を介してコンピュータ・システムのメイン・メモリ１８にアクセスできるように結合される。プリフェッチャ３４は、命令ポインタでインデックス付けされた命令を命令キャッシュ３８から取り出すか、あるいはバス・インタフェース・ユニット３２を介してメイン・メモリ１８から取り出す。分岐予測ユニット３５は、プリフェッチャ３４によって検索された分岐命令をスペキュラティブに予測し、次いで、分岐が行われると予測されるか、あるいは行われないと予測されるかに応じて、順次メモリ・アドレスまたはターゲット・メモリ・アドレスを示す命令ポインタも出力する。プリフェッチャ３４は、命令キャッシュ３８またはメイン・メモリ１８から受け取った命令を、下流処理用の１組のマイクロ命令（μｏｐｓ）に復号するように命令デコーダ４２に伝搬する。制御読取り専用メモリ（ＲＯＭ）４４は、命令デコーダ４２に結合され、デコーダ４２からエントリ・ポイントを受け取る。デコーダ４２および制御ＲＯＭ４４は、制御ユニット４６にマイクロ命令を供給する。制御ユニット４６は、整数パイプライン実行ユニット４８および浮動小数点パイプライン実行ユニット５０にそれぞれ整数命令および浮動小数点命令を供給して実行させる。整数パイプライン実行ユニット４８および浮動小数点パイプライン実行ユニット５０は、命令を実行する際にデータ・キャッシュ５１にアクセスすることができる。マイクロ命令は制御ユニット４６からアドレス生成ユニット５２にも供給され、アドレス生成ユニット５２はアドレス情報を生成し変換する。
クロック状況
第３図を参照すると、本発明の一実施形態によるプロセッサの様々なクロック状態を示す状態図１００が示されている。図のクロック状態は、ユニプロセッサ（ＵＰ）移動コンピュータ・システムと対称型マルチプロセッサ（ＳＭＰ）デスクトップ・サーバ・コンピュータ・システムの両方でプロセッサの電力制御を容易にする。６つの異なるクロック状態、すなわち、クロック実行状態１０２、停止応諾状態１０４、自動停止状態１０６、高速開始状態１０８、スリープ状態１１０、およびディープ・スリープ状態１１２が図示されている。線１１４の上方に示されたクロック状態１０２ないし１０８では、キャッシュ・コヒーレンシのためにある程度のプロセッサ・バス・スヌーピングが推進され、それに対して、線１１４の下方の状態１１０および１１２では、プロセッサ・バスはスヌープされない。様々なクロック状態間の相違をさらに詳しく述べる。
プロセッサのクロック実行状態１０２は通常の動作モードであり、プロセッサの内部クロックが実行され、プロセッサは命令をアクティブに実行する。クロック停止（ＳＴＰＣＬＫ＃）信号がアサートされると、プロセッサは、プロセッサのブートアップ時またはリセット時に「電源オン・ストラッピング・オプション」がどのように実行されたかに応じて、停止応諾状態１０４または高速開始状態１０８に入る。具体的には、プロセッサは、ストラッピング・オプション線上に論理０または論理１を配置することによって電源オン時に停止応諾状態１０４または高速開始状態１０８に入るように構成される。一実施形態では、このストラッピング・オプションは、リセット時にアドレス線１５（Ａ１５＃）上に０または１をドライブすることによって実行することができる。もちろん、いくつかの他の方法のうちのどれでもストラッピング・オプションを実行できることが理解されよう。
プロセッサが（たとえば、Ａ１５＃を論理１に設定することによって）停止応諾状態１０４に入るように電源オン時に構成されたものと仮定すると、プロセッサは、ＳＴＰＣＬＫ＃信号がアサートされたときに停止応諾状態１０４に入る。この状態では、プロセッサの多数の内部機能ユニット・ブロック（ＦＵＢ）がディスエーブルされるので、クロック実行状態１０２と比べて電力消費量が低減される。しかし、以下で詳しく説明するように、プロセッサがスヌープ要求に応答し割込みをラッチすることができるように、停止応諾状態１０４のプロセッサ内の十分な回路がアクティブに維持されクロックされ続ける。このように、低電力状態のときでもキャッシュ・コヒーレンシが維持される。停止応諾状態１０４からクロック実行状態１０２への遷移は、ＳＴＰＣＬＫ＃信号がアサート解除されたときか、あるいはプロセッサ初期設定、フラッシュ、リセットなどの停止解除事象が起こったときに行われる。
プロセッサが（たとえば、Ａ１５＃を論理０に設定することによって）高速開始状態１０８に入るように電源オン時に構成されたものと仮定すると、プロセッサは、ＳＴＰＣＬＫ＃信号がアサートされたときに高速開始状態１０８に入る。この状態では、プロセッサの大多数の機能ユニット・ブロック（ＦＵＢ）がディスエーブルされるので、クロック実行状態１０２および停止応諾状態１０４と比べて電力消費量が低減される。ただし、プロセッサのフェーズ・ロック・ループ（ＰＬＬ）は機能状態に維持される。この深い低電力状態は、高速開始状態１０８のときに、低下された応答機能をプロセッサに与えることによって実現される。一実施形態では、高速開始状態１０８のプロセッサは、ラッチング割込み（たとえば、ＮＭＩ信号やＳＭＩ＃信号やＩＮＴＲ信号）に応答できず、また、リセット要求や初期設定要求やフラッシュ要求に応答しない。したがって、停止応諾状態１０４とは異なり、これらの要求に応答する回路には電力が供給されず、したがって、高速開始状態１０８では高度の電力節約を実現することができる。プロセッサが高速開始状態１０８であるときに割込み要求、初期設定、リセット要求、またはフラッシュ要求が生成された場合、これらの要求は、認識されず、したがって、ＳＴＰＣＬＫ＃信号がアサート解除され、プロセッサがクロック実行状態１０２に戻り、その時点でこのような要求が実行されるまで保持（またはラッチ）しなければならない。本発明の一実施形態では、高速開始状態１０８のプロセッサは、外部入出力（Ｉ／Ｏ）装置がプロセッサ・バスの制御を要求したときに、プロセッサ・バスをスヌープすることによってスヌープ要求に応答することしかできない。他のある実施形態では、高速開始状態のプロセッサ１０８は、インテル・アーキテクチャ（ＩＡ）によって定義された優先エージェント・バス要求（ＢＰＲＩ＃）信号のアサートに依存する入出力ブリッジ・アクセスに応答することしかできない。第１図を参照するとわかるように、ＢＰＲＩ＃信号１９は、入出力装置２１による要求に応答してプロセッサ（またはＣＰＵ）バス１２の制御を得るためにメモリ・バス制御論理１６（バス・ブリッジとも呼ばれる）によってアサートされる。以下で詳しく説明するように、ＢＰＲＩ＃信号１９がアサートされてから３クロック・サイクル後に、プロセッサは高速開始プラス（ＱＳ＋）モード１０９に入る。このモードでは、スヌープ・サイクルを受け入れるのに必要なプロセッサのＦＵＢが電力を供給されクロックされる。一実施形態では、高速開始プラス・モード１０９で動作するプロセッサのスヌーピング動作は、プロセッサが、ＢＰＲＩ＃信号１９を用いて開始されたアクセス以外のアクセスについてはプロセッサ・バスをスヌープせず、したがって、プロセッサ・バス１２に結合された、マルチプロセッサ環境で使用される他のプロセッサによって実行されるデータ演算についてはバス・スヌープを実行しないので、プロセッサがユニプロセッサ（ＵＰ）構成のみで使用できるような動作である。
自動停止状態１０６は、停止（ＨＬＴ）命令が実行されたときに入る状態であり、自動停止解除事象が起こったときにクロック実行状態１０２に戻る。インテル・アーキテクチャ仕様を満たすプロセッサでは、ＮＭＩ信号、ＩＮＴＲ信号、ＢＩＮＴ＃信号、ＦＬＵＳＨ＃信号、又はＳＭＩ＃信号がアクティブになるか、あるいはプローブ・モード要求が出されたときに、自動停止解除事象が生じる。
本発明によるプロセッサは、スリープ状態１１０およびディープ・スリープ１１２状態でも動作することができる。スリープ状態１１０は、停止応諾状態１０４から入る状態であり、この遷移はスリープ（ＳＬＰ＃）信号がアサートされたときに行われる。スリープ状態１１０では、プロセッサは、そのコンテキストを維持し、すべての内部クロックを停止するが、フェーズ・ロック・ループ（ＰＬＬ）回路をアクティブに保持し、したがって、プロセッサが最小待ち時間でスリープ状態１１０を終了することができる。すべての内部クロックが停止されるので、スリープ状態１１０のプロセッサはスヌーピングを行うことも、あるいは割込み信号をラッチすることもできず、スリープ状態１１０のプロセッサをリセットすることもできない。
プロセッサのＰＬＬ回路への電力供給を停止することによって、ディープ・スリープ状態１１２に入る。これは、プロセッサへの入力クロック周波数を停止することによって行われる。
クロック回路
第４図および第５図は、プロセッサ１４の概略図であり、本発明の教示によって動作する様々な機能ユニット・ブロック（ＦＵＢ）、クロック制御回路、および他の関連回路を示す。第４図は、停止応諾モード１０４で動作するように構成されたプロセッサ１４を示し、それに対して、第５図は、高速開始モード１０８で動作するように構成されたプロセッサ１４を示す。第４図および第５図に示すプロセッサ１４は、いくつかのＦＵＢ、すなわち、浮動小数点ユニット（ＦＰＵ）５０、演算論理装置（ＡＬＵ）５３、プリフェッチャ３４、バス・クロック生成論理１５２、データ・キャッシュ５１、コード・キャッシュ３８、およびバス・インタフェース・ユニット３２を備える。プロセッサ１４は他のいくつかのＦＵＢを含み、これらのＦＵＢはブロック３３で表わされている。上記のＦＵＢが例示的なものに過ぎず、ＦＵＢの網羅的なリスト形成するものでも、あるいはＦＵＢの必要なリストを形成するものでもないことが理解されよう。プロセッサ１４の右側に示すＦＵＢ（すなわち、ＦＵＢ５１、３８、３２、および３３）は、内部スヌーピング動作および外部スヌーピング動作を実行するように動作する必要があることを特徴とする。それとは対称的に、プロセッサ１４の左側にあるＦＵＢ５０、５３、３４はスヌープ動作中に動作する必要がない。
各ＦＵＢは、ＮＡＮＤゲート１４３または１４４を介してメイン・クロック・スパイン１５０からクロック信号を受け取るように結合される。さらに、バス・クロック生成論理１５２はフェーズ・ロック論理（ＰＬＬ）１１５にフィードバック・バス・クロック信号１３２を供給し、フェーズ・ロック論理（ＰＬＬ）１１５はクロック・スパイン１５０にコア・クロック・ロック信号１３３を供給する。プロセッサ１４は、高速開始論理１１６および停止応諾論理１１７も含む。第４図を参照すると、プロセッサ１４は停止応諾モード１０４で動作するように構成されるように示されている。停止応諾論理１１７は、クロック・スパイン１５０からＦＵＢ５０、５３、および３４へのクロック信号の供給をディスエーブルすることによって、これらのＦＵＢへの電力供給を選択的に停止することができる。具体的には、停止応諾論理１１７は、グローバル・クロック・イネーブル停止（ＧＳＣＬＫ＿ＥＮ）信号１４１をアサート解除し、かつアサートすることにより、クロック・スパイン１５０からＦＵＢ５０、５３、および３４へのクロック信号の供給をゲートまたは遮断するようにこれらのＦＵＢに関連するＮＡＮＤゲート１４３を動作させることができる。したがって、プロセッサ１４を停止応諾モード１０４にする場合、停止応諾論理１１７はＧＮＳＣＬＫ＿ＥＮ信号１４１をアサート解除し、したがってＦＵＢ５０、５３、および３４で切換え活動が行われるのを妨げる。停止応諾モード１０４では、キャッシュ・コヒーレンシに必要なＦＵＢ５１、３８、３２、および３３が、ディスエーブルされず、しかもクロック・スパイン１５０から供給されるクロック信号を用いてクロックされることに留意されたい。したがって、これらのＦＵＢは、内部スヌーピング動作と外部スヌーピング動作の両方を従来の方式で開始し、したがって、プロセッサ１４が低電力の停止応諾モード１０４であるときでもキャッシュ・コヒーレンシを維持することができる。さらに、バス・クロック生成論理１５２へのクロック信号の供給がゲートされないことを留意されたい。したがって、フィードバック信号１３２は引き続きＰＬＬ１１５に供給され、ＰＬＬ１１５はロック状態のままになる。
これは、ディープ・スリープ・モード１１２と対称的であり、このモードでは、ＰＬＬ１１５およびバス・クロック生成論理１５２への電力供給が停止され、したがって、クロック・スパイン１５０へのコア・クロック信号１３３の供給が終了する。回路１５２および１１５への電力供給が停止されることと、クロック・スパイン１５０がもはやクロック信号を搬送しないことに鑑みて、ディープ・スリープ・モード１１２でのプロセッサによる電力消費量は漏れによるものだけである。しかし、クロック・スパイン１５０上で信頼できるクロック信号を再び供給するには、ＰＬＬ１１５に電力を再び供給し、ＰＬＬ１１５をロックさせなければならず、そのため、最大で１ｍｓの長いアクセス待ち時間が生じる。
次に第５図を参照すると、高速開始モード１０８で動作するように構成されたプロセッサ１４の一実施形態が示されている。具体的には、グローバル・クロック非停止（ＧＮＳＣＬＫ）信号１４６がＦＵＢ５１、３８、３２、および３３に供給されるときに通過するＮＡＮＤゲート１４４が、グローバル・イネーブル非停止（ＧＮＳＣＬＫ＿ＥＮ）信号１４２をアサートし、かつアサート解除することによって高速開始論理１１６によって選択的にイネーブルされ、かつディスエーブルされる。高速開始論理１１６はまた、信号１４７を停止応諾論理１１７に伝搬し、それによって、停止応諾論理１１７は信号１４１をアサート解除し、それによってＦＵＢ５０、５３、および３４へのクロック信号の供給をゲートする。したがって、高速開始モード１０８に入ると、高速開始モード論理自体がＦＵＢ５１、３８、３２、および３３をディスエーブルし、信号を停止応諾論理１１７に伝搬し、それによって、論理１１７にＦＵＢ５０、５３、および３４をディスエーブルさせる。以下に詳しく説明するように、コンピュータ・システム内の周辺ユニットからのメモリ・アクセスを示す所定のアクセス信号（たとえば、ＢＰＲＩ＃信号）がアサートされると、高速開始論理１１６は、ＧＮＳＣＬＫ＿ＥＮ信号１４２をアサートすることによってプロセッサ１４を高速開始プラス・モード１０９にして、それによって、データ・キャッシュ５１、コード・キャッシュ３８、バス・インタフェース・ユニット３２、およびその他のＦＵＢ３３へのクロック信号１４６の供給を再イネーブルする。しかし、停止応諾論理１１７への信号１４７は変更されず、したがって、ＦＵＢ５０、５３、および３４は電力停止状態のままである。したがって、高速停止プラス・モード１１０９では、キャッシュ・コヒーレンシに必要なＦＵＢ５１、３８、３２、および３３は、動作可能であり、スヌープ要求に応答することができる。したがって、高速開始プラス・モード１０９で電力を投入されるのは、スヌープ要求に応答するのに必要なＦＵＢだけであり、それに対して、電力供給を停止されたままの回路はその状態のままである。スヌーピング動作が完了すると、高速開始論理１１６によって、プロセッサ１４は再び高速開始モード１０８に入り、高速開始論理１１６は信号１４２をアサート解除する。
簡単に言えば、プロセッサ１４は、停止応諾モード１０４で動作する際、第１組の信号（たとえば、スヌープ対話信号や初期設定信号やリセット信号など）に応答してキャッシュ・コヒーレンシ動作を実行することができ、それに対して、高速開始モード１０８では、プロセッサは、外部周辺装置によるメモリ・アクセス要求を示す信号（たとえば、ＢＰＲＩ＃信号）にのみ応答する。プロセッサ１４は、上記のモードのとき、関連する信号に応答し、たとえば、プロセッサ１４に関連するキャッシュ・メモリ資源内のキャッシュ・ラインを無効化することによって、キャッシュ・コヒーレンシを維持する。
第６図は、クロック・スパイン１５０、バス・クロック生成論理１５２、ＰＬＬ１１５、および高速開始論理１１６のより詳細な図である。具体的には、第６図は、ピン１２２Ａを介してリセット（ＲＥＳＥＴ）信号１２２を受け取り、ピン１２４Ａを介してクロック停止（ＳＴＰＣＬＫ＃）信号１２４を受け取り、ピン１２６Ａを介してスリープ（ＳＬＰ＃）信号１２６を受け取り、アドレス（Ａ１５＃）ピン１２８Ａを介して構成（またはストラッピング・オプション）信号１２８を受け取り、ピン１３０Ａを介して優先エージェント・バス要求（ＢＰＲＩ＃）信号１３０を受け取るように結合されたクロック制御回路１１２を示す。ピン１２２Ａ−１３０Ａに加えられた各信号は、適切なラッチ１３４によるフロント・サイド・バス（ＦＳＢ）クロック信号１３２に応答してラッチされ、スリープ／開始状態論理１３６に供給される。スリープ／開始状態論理１３６は第５図に詳しく示されている。スリープ／開始状態論理１３６は、クロック・イネーブル／ディスエーブル論理１４０と共に、第４図および第５図に示す高速開始論理１１６を構成する。スリープ／開始状態論理１３６は、ラッチ１３４から受け取った様々な入力に応答して、クロック・イネーブル／ディスエーブル論理１４０にスリープ信号１３８を出力する。クロック・イネーブル／ディスエーブル論理１４０は、スリープ信号１３８の状態に応答して、グローバル・クロック・イネーブル非停止（ＧＮＳＣＬＫ＿ＥＮ）信号１４２を生成し、この信号がＮＡＮＤゲート１４４に伝搬される。ＮＡＮＤゲート１４４はそれぞれ、ＧＮＳＣＬＫ＿ＥＮ信号１４２およびＧＮＳＣＬＫ信号１４６を入力として受け取るように結合される。ＮＡＮＤゲート１４４の出力は、スヌープ動作中にキャッシュ・コヒーレンシを維持するのに必要なＦＵＢに伝搬されるクロック信号１４５（ＧＮＳＣＬＫ）を含む。したがって、ＧＮＳＣＬＫ＿ＥＮ信号１４２をアサートし、かつアサート解除することによって、プロセッサ１４のＦＵＢ５１、３８、３２、３３へのクロック信号をそれぞれ、イネーブルし、かつディスエーブルすることができる。
クロック制御回路１２０は、メイン・クロック・スパイン１５０、バス・クロック生成論理１５２、およびＰＬＬ１１５も含む。メイン・クロック・スパイン１５０は、プロセッサ内でコア・クロック信号を分散する責任を負い、それに対して、バス・クロック生成論理１５２、コア・クロック生成論理１５４、およびＰＬＬ１１５はそれぞれ、クロック信号１３２およびコア・クロック信号１３３を生成する責任を負う。コア・クロック信号１３３はバス・クロック信号１３２と同期し、バス・クロック信号１３２は、コア・クロック生成論理１５４にフィードバックされ、バス・クロック信号１３２の全倍数（たとえば、２倍や３倍）でも、あるいはバス・クロック信号１３２の半倍数（たとえば、２．５倍や３．５倍）でもよい。
コア・クロック生成論理１５４は、これらの組合せ信号の間の同期を維持するコア・クロック／バス・クロック同期回路１５６も含む。回路１５６は、バス・クロック・マルチプライヤが整数であるかどうかを示すＥＮＡＢＬＥ２ＢＹＮ信号１５８をクロック・イネーブル／ディスエーブル論理１４０に出力する。クロック・イネーブル／ディスエーブル論理１４０は、ＯＲゲート１６５を介して同期回路１５６にクロック整列（ＣＬＫＡＬＩＧＮ）信号１６４を供給する。クロック・イネーブル／ディスエーブル論理１６０は、ＥＮＡＢＬＥ２ＢＹＮ信号１５８の状態に応じて、適当な時間にＣＬＫＡＬＩＧＮ信号１６４をアサートする。リセット時、またはＣＬＫＡＬＩＧＮ信号１６４のアサート時に、コア・クロック生成回路１５４は、バス・クロックとコア・クロックとの間の立下り同期を生成するようにコア・クロック信号１３３（ＣＯＲＥＣＬＫ）の位相を強制的にシフトさせる。コア・クロック生成論理１５４は、バス・クロック信号１３２をフィードバックとして受け取るように結合される。同期回路１５６は、バス・クロック信号１３２の位相をコア・クロック信号１３３と比較することによって、ＥＮＡＢＬＥ２ＢＹＮ信号１５８をクロック・イネーブル／ディスエーブル論理１４０へのフィードバックとして供給する。
次に入力信号に戻るとわかるように、ＲＥＳＥＴ＃信号１２２はピン１２２Ａを介してスリープ／開始状態論理１３６に伝搬され、それによってクロック制御回路１２０がリセットされ、それに対して、ＳＬＰ＃信号１２６がアサートされると、クロック制御回路１２０は、スリープ信号１３８をアサートすることによってプロセッサをスリープ状態１１０にする。ＲＥＳＥＴ＃信号およびＳＬＰ＃信号の詳細は、本発明の理解とは無関係である。
電力投入（「リセット」または「ブートアップ」とも呼ぶ）時にＡ１５＃ピン１２８Ａに加えられる構成信号１２８は、ピン１２６Ａ上でＳＴＰＣＬＫ＃信号がアサートされたときにスリープ／開始状態論理１３６がプロセッサを停止応諾状態１０４にするか、それとも高速開始状態１０８にするかを決定する。具体的には、電力投入時にピン１２８Ａに論理１が加えられた場合、スリープ／開始状態論理１３６は、ＳＴＰＣＬＫ＃信号１２４がアサートされたときにプロセッサを停止応諾状態１０４にするように構成され、それに対して、電力投入時にピン１２８Ａに論理０が加えられた場合、スリープ／開始状態論理１３６は、ＳＴＰＣＬＫ＃信号１２４がアサートされたときにプロセッサを高速開始状態１０８にするように構成される。
停止応諾状態１０４のとき、スヌープ要求に応答するのに必要なプロセッサのＦＵＢは、アクティブであり、かつクロックされ、したがって、必要に応じてキャッシュ・コヒーレンシ動作を実行することができる。
高速停止状態１０８のとき、スリープ／開始状態論理１３６は、ＢＰＲＩ＃信号１３０がアサートされたかどうかについてピン１３０Ａを監視する。ＢＰＲＩ＃信号がアサートされたことに応答して、スリープ／開始状態論理１３６は、プロセッサがプロセッサ・バス１２のスヌープを実行できるようにスリープ信号１３８をアサート解除する。
第７図を参照すると、スリープ／開始状態論理１３６のより詳細な図が示されている。論理１３６はスリープ生成論理６９を備え、スリープ生成論理６９は、ＳＬＰ＃信号１２６またはＳＴＰＣＬＫ＃信号１２４のアサートに応答してＳＬＰ信号７０を出力する。重要なこととして、高速開始モード１０８はラッチ６５であり、コンピュータ・システムのブートアップ時にアドレス・ピン１２８Ａに加えられた構成信号１２８をラッチする。ブートアップ時にピン１２８Ａに論理ゼロが加えられた場合、ラッチ６５は、４入力ＡＮＤゲート６７に論理１ＱＳＳ信号６２を出力するように構成される。ＡＮＤゲート６７はまた、ＳＴＰＣＬＫ＃信号１２４の逆数およびＢＰＲＩ＃信号１３０の逆数を受け取るように結合される。したがって、ＳＴＰＣＬＫ＃信号１２４がアサートされ、ＱＳＳ信号６２が（ラッチ６５を構成した構成信号１２８によって）ハイになると、ＢＰＲＩ＃信号１３０がアサートされることによって、ＡＮＤゲート６７の出力がハイになり、したがって、ＯＲゲート７２を介してスリープ信号１３８がアサートされる。前述のように、スリープ信号１３８がアサートされると、クロック・イネーブル／ディスエーブル論理１４０は、必要に応じてＧＮＳＣＬＫ＿ＥＮ信号１４２をアサートする。
第８図は、クロック・イネーブル／ディスエーブル論理１４０の一実施形態の詳細を示す。クロック・イネーブル／ディスエーブル論理１４０の一次機能は、ＧＮＳＣＬＫ＿ＥＮ信号１４２が所望のタイミングでアサートまたはアサート解除されるようにすることである。論理１４０はスリープ信号１３８を受け取るように結合され、スリープ信号１３８はクロック実行状態１０２の間アサート解除される（ロー状態）。クロック整列（ＣＬＫＡＬＩＧＮ）信号１６４は同様に、クロック実行状態１０２でアサート解除される。ＧＮＳＣＬＫ＿ＥＮ信号１４２は、Ｒ／Ｓラッチ１６０のＳＥＴ入力を介してアサートされ、Ｒ／Ｓラッチ１６０のＲＥＳＥＴ入力がアサート解除される。ＥＮＡＢＬＥ２ＢＹＮ信号１５８は、２／Ｎ（非整数）動作モードまたは１／Ｎ（整数）動作モードでバス・クロックとコア・クロックが整列したときにクロック停止／再開事象を駆動する２つの経路のうちの一方を選択するようにマルチプレクサ１６２を動作する。グリッチングまたは最小パルス幅未満のパルス幅を回避するために、ＮＡＮＤゲート１４４から伝搬されたＧＮＳＣＬＫ＃信号１４５は、コア・クロック（ＣＯＲＥＣＬＫ）信号がローになったときは常に（ＮＡＮＤゲート１４４へのＧＮＳＣＬＫ＿ＥＮ信号１４２をアサート解除またはアサートすることによって）停止または再開される。この要件を満たすために、２／Ｎモードでは、位置ずれした境界上でＧＮＳＣＬＫ＿ＥＮ信号１４２がアサートまたはアサート解除され、したがって、コア・クロック（ＣＯＲＥＣＬＫ）信号１３３はロー状態になる。２／Ｎモードのとき、ＣＯＲＥＣＬＫのクロック・パルスの幅が「狭く」なり、コア・クロック（ＣＯＲＥＣＬＫ）とバス・クロック（ＢＵＳＣＬＫ）との間のクロック整列が可能になる。１／Ｎモードでは、バス・クロック（ＢＵＳＣＬＫ）信号とコア・クロック（ＣＯＲＥＣＬＫ）信号が常に整列し、したがって、ＧＮＳＣＬＫ＃の停止または再開は、整列した境界の直後のＣＯＲＥＣＬＫのロー・フェーズまで遅延される。したがって、１／Ｎモードで動作しているとき、Ｒ／Ｓラッチ１６０は、スリープ信号１３８がアサート解除されてから１プロセッサ・クロック・サイクル後にＡＮＤゲート１６６を介してリセットされ、次いでスリープ信号がアサート解除されてから２プロセッサ・サイクル後にＤフリップフロップ１７０によってセットされる。
タイミング図
第９Ａ図および第９Ｂ図は、上記で第４図ないし第８図を参照して説明した様々な信号を示すタイミング図である。第９Ａ図は、ＣＯＲＥＣＬＫ信号１３３、ＢＵＳＣＬＫ信号１３２、ＢＰＲＩ＃信号１３０、ＳＬＥＥＰ信号１３８、ＧＮＣＬＫ＿ＥＮ信号１４２、ＧＮＳＣＬＫ＃信号１４５、アドレス状況（ＡＤＳＳ）＃信号２００の、非整数（２／Ｎ）モードでの相対タイミングを示す。クロック状態も、２１０で示されている。第９Ｂ図は、整数（１／Ｎ）モードでの同じ信号の相対タイミングを示す。各タイミング図は高速開始状態１０８のプロセッサで始まり、この状態ではＧＮＳＣＬＫ＃信号１４５がディスエーブルされる。高速開始状態１０８では、スリープ／開始状態論理１３６は引き続き、前述のようにＢＰＲＩ＃信号１３０がアサートされたかどうかを監視する。スリープ／開始状態論理１３６が点２１２でＢＰＲＩ＃信号１３０がアサートされたことが検出すると、スリープ信号１３８は、点２１４に示すように、ＢＵＳＣＬＫ信号１３２の次の立上りでアサート解除される。スリープ信号１３８がアサート解除されたことに応答して、クロック・イネーブル論理１４０は、点２１６で示し上記で説明したように、クロック回路が２／Ｎモードで動作しているか、それとも１／Ｎモードで動作しているかに依存し、かつそれによって決定される遅延の後にＧＮＳＣＬＫ＿ＥＮ信号１４２をアサートする。ＧＮＳＣＬＫ＿ＥＮ信号１４２は、ＣＯＲＥＣＬＫ信号１３３がローになったときにアサート解除される。ＧＮＳＣＬＫ＿ＥＮ信号１４２がアサートされたことに応答して、ＮＡＮＤゲート１４４は、スヌープ要求を処理するのに必要なＦＵＢにＧＮＳＣＬＫ１４５を出力し、プロセッサは「高速開始プラス」モード１０９に入る。
具体的に、メモリ・アクセスの（ＡＤＳ＃信号２００がアサートされたときに有効になる）アドレスをスヌープすることを可能にする時間にＧＮＳＣＬＫ信号１４５が再開される。次いで、プロセッサは「高速開始スヌープ」状態に入り、スヌープ要求が処理される。
フローチャート
第１０図は、低電力状態のときにキャッシュ・コヒーレンシを維持するようにプロセッサを構成する、本発明による方法３００の一実施形態を示すフローチャートである。電力投入時に、ステップ３０２で、プロセッサのＡ１５＃ピン１２８Ａに加えられた構成（またはストラッピング）信号１２８の状態に関する判定が下される。方法３００は、構成信号１２８の状態を判定した後、判定ボックス３０４に進み、構成信号が論理１である場合にはステップ３０６に進み、構成信号が論理０である場合にはステップ３０８に進む。ステップ３０６で、プロセッサは、ＳＴＰＣＬＫ＃信号１２４がアサートされている場合に高速開始状態１０８に入り、したがって、キャッシュ・コヒーレンシを維持することだけを目的として第１組の信号に応答するように構成される。一実施形態では、第１組の信号はＢＰＲＩ＃信号１３０を含む。別法として、ステップ３０８で、プロセッサは、ＳＴＰＣＬＫ＃信号１２４がアサートされたときに停止応諾状態１０４に入り、したがって、第２組の信号に応答するように構成される。一実施形態では、第２組の信号にＡＤＳ＃信号が含まれる。
第１１図は、プロセッサ内で低電力モードに入る方法４００を示すフローチャートである。方法４００はステップ４０２から始まり、ＳＴＰＣＬＫ＃信号がアサートされる。方法４００は判定ボックス４０４に進み、後続のＳＴＰＣＬＫ解除事象が起こったかどうかを検出する。そうである場合、方法４００は終了する。そうでない場合、方法４００は判定ボックス４０６に進み、プロセッサが高速開始状態１０８に入るように構成されているかどうかが判定される。これは、プロセッサに電力が投入されたときにＡ１５＃ピン１２８Ａに構成信号１２８が加えられたかどうかに依存する。プロセッサが高速開始モード１０８に入るように構成されている場合、ステップ４０８でこのモードに入り、その後、ステップ４１０でＢＰＲＩ＃信号１３０が監視される。判定ボックス４１２で、ＢＰＲＩ＃信号１３０がアサートされているかどうかが判定される。そうでない場合、再びステップ４１０に進み、方法４００は、ＢＰＲＩ＃信号１３０がアサートされるか、あるいはＳＴＰＣＬＫ解除事象が起こるまで、引き続きステップ４１０ないしステップ４１２を循環する。ＢＰＲＩ＃信号１３０がアサートされている場合、プロセッサは、ステップ４１６で高速開始＋状態に入り、その後、ステップ４１８でプロセッサ・バスのスヌープ動作が実行される。その後、方法４００は判定ブロック４０４に戻る。
別法として、判定ブロック４０６で、プロセッサが高速開始状態１０８に入るように構成されていないと判定された場合、プロセッサは、ステップ４２０で停止応諾状態１０４に入る。その後、プロセッサは、ステップ４２２でスヌープ要求または割込み要求があるかどうかを監視する。このような要求が検出された場合、再びステップ４２２に進み、方法４００は、スヌープ要求または割込み要求を受け取るか、あるいはＳＴＰＣＬＫ解除事象が起こるまで、ステップ４２２ないしステップ４２４を循環し続ける。割込み要求のスヌープが行われると、この要求がステップ４２８で処理され、その後、方法４００は判定ボックス４０４に戻る。
第１２図は、集積回路が低電力消費量状態で動作する、本発明による方法５００を示すフローチャートである。具体的には、方法５００は、高速開始モード１０８で動作するプロセッサ１４の動作を示す。プロセッサは、高速開始モードに入り、次いでステップ５０２に進み、クロック信号、すなわちＧＮＳＣＬＫクロックおよびＧＳＣＬＫクロックがゲートされ、したがって第１組のＦＵＢおよび第２組のＦＵＢに伝搬するのが妨げれられる。第１組のＦＵＢと第２組のＦＵＢは、第１組のＦＵＢがプロセッサ内でキャッシュ・コヒーレンシ動作を実行する必要があり（たとえば、データ・キャッシュ５１や、コード・キャッシュ３８や、バス・インタフェース・ユニット３２）、それに対して第２組のＦＵＢが命令処理機能を実行する（たとえば、浮動小数点実行ユニット５０や、整数実行ユニット４８や、プリフェッチャ３４）という点で区別される。したがって、第１組のＦＵＢ内でも、あるいは第２組のＦＵＢ内でも切換え事象は起こらない。次いで、方法は判定ブロック５０４に進み、集積回路の外部の装置によるメモリ・アクセスを示す信号が検出されたかどうかを判定する。一実施形態では、このような信号は、インテル・アーキテクチャによって定義されたＢＰＲＩ＃信号を含む。この信号がアサートされていない場合、方法５００はステップ５０２に戻る。一方、この信号が実際にアサートされる場合、方法は、ステップ５０６に進み、ＧＮＳＣＬＫクロック信号が再びイネーブルされ、第１組のＦＵＢに伝搬され、したがって、第１組のＦＵＢが再び動作可能になる。ステップ５０８で、第１組のＦＵＢは、外部装置によるメモリ・アクセスに応答してキャッシュ・コヒーレンシ動作を実行し、その後ステップ５１０で、ＧＮＳＣＬＫクロック信号が再び第１組のＦＵＢにゲートされ、したがって、第１組のＦＵＢは低電力消費量状態に戻る。次いで、方法は判定ボックス５０４に戻る。
したがって、集積回路が低電力状態であるときにキャッシュ・コヒーレンシを維持する方法および装置について説明した。特定の例示的な実施形態を参照して本発明を説明したが、本発明の広義の趣旨および範囲から逸脱せずにこれらの実施形態に様々な修正および変更を加えられることは明白であろう。したがって、明細書および図面は、制限的なものではなく例示的なものとみなすべきである。
【図１】
0004083816.tif 000002
【図２】
0004083816.tif 000003
【図３】
0004083816.tif 000004
【図４】
0004083816.tif 000005
【図５】
0004083816.tif 000006
【図６】
0004083816.tif 000007
【図７】
0004083816.tif 000008
【図８】
0004083816.tif 000009
【図９Ａ】
0004083816.tif 000010
【図９Ｂ】
0004083816.tif 000011
【図１０】
0004083816.tif 000012
【図１１】
0004083816.tif 000013
【図１２】
0004083816.tif 000014