(57)【要約】  プロセッサのクロック周波数は、キャッシュミスによるディスパッチ停止に応答して低減される。ある実施形態では、ロード命令が最も古いロード命令であり、ディスパッチ停止がある連続プロセッササイクルの数が閾値を超えるとすれば、および最終レベルキャッシュミスからのプロセッササイクルの総数が、何らかの指定された数を超えないとすれば、プロセッサクロック周波数は、最終レベルキャッシュミスを引き起こすロード命令用に低減される。
2018528548.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサであって、
レジスタを有するレジスタファイルと、
パイプラインであって、別の最終レベルキャッシュミスを引き起こした他の未解決ロード命令が前記パイプライン中にないうちに最終レベルキャッシュミスを引き起こすロード命令を検出すると、前記パイプラインは、前記ロード命令の識別を前記レジスタに記憶し、かつ前記レジスタ中のフィールドを前記レジスタの内容が有効であることを示すようにセットする、パイプラインと、
前記レジスタファイルおよび前記パイプラインに結合されるステートマシンであって、前記ステートマシンは、前記パイプラインが前記レジスタに前記識別を記憶したことに応答して、初期状態から第1の状態に遷移し、前記ステートマシンは、前記ロード命令が前記パイプライン中の最も古いロード命令であることに応答して、前記第1の状態から第2の状態に遷移し、前記ステートマシンは、前記ステートマシンが前記第2の状態に遷移してから前記プロセッサがM個の連続するプロセッサクロックサイクルにわたって動作したことに応答して、前記第2の状態から低周波数状態に遷移し、Mは整数である、ステートマシンと
を備え、
前記プロセッサは、前記ステートマシンが前記初期、第1、または第2の状態にあるときは第1のクロック周波数で動作し、前記ステートマシンが前記低周波数状態にあるときは第2のクロック周波数で動作し、前記第1のクロック周波数は前記第2のクロック周波数よりも高い、プロセッサ。
【請求項２】
前記ステートマシンは、前記ロード命令に対するメモリ戻し、またはパイプラインフラッシュに応答して、前記低周波数状態から前記初期状態に遷移する、請求項1に記載のプロセッサ。
【請求項３】
前記ステートマシンは、前記ロード命令に対するメモリ戻し、パイプラインフラッシュ、または前記プロセッサが、前記ステートマシンが前記初期状態から前記第1の状態に遷移してから、N1個のプロセッサクロックサイクルにわたって動作したことに応答して、前記第1の状態から前記初期状態に遷移し、N1は整数である、請求項1に記載のプロセッサ。
【請求項４】
前記ステートマシンは、前記ロード命令に対するメモリ戻し、パイプラインフラッシュ、または前記ステートマシンが前記第2の状態に遷移してから前記プロセッサがN2個のプロセッサクロックサイクルにわたって動作したことに応答して、前記第2の状態から前記初期状態に遷移し、N2は整数である、請求項1に記載のプロセッサ。
【請求項５】
前記ステートマシンは、前記ロード命令に対するメモリ戻し、パイプラインフラッシュ、または前記ステートマシンが前記初期状態から前記第1の状態に遷移してから前記プロセッサがN1個のプロセッサクロックサイクルにわたって動作したことに応答して、前記第1の状態から前記初期状態に遷移し、N1は整数である、請求項4に記載のプロセッサ。
【請求項６】
前記パイプラインは、前記ステートマシンが前記初期状態に戻ると、前記フィールドを前記レジスタの内容が有効でないことを示すようにセットする、請求項1に記載のプロセッサ。
【請求項７】
前記識別を記憶する前に、前記レジスタの内容が有効でないことを前記フィールドが示すとすれば、前記パイプラインは前記ロード命令の前記識別を前記レジスタに記憶する、請求項6に記載のプロセッサ。
【請求項８】
前記レジスタファイルは少なくとも1つのミスステータス処理レジスタを備え、
前記少なくとも1つのミスステータス処理レジスタが無効な内容を有するとすれば、前記パイプラインは前記ロード命令の前記識別を前記レジスタに記憶する、
請求項1に記載のプロセッサ。
【請求項９】
前記レジスタファイルは、初期値を有するキャッシュミス戻しカウンタを備え、
前記パイプラインは、各キャッシュミスについて前記キャッシュミス戻しカウンタをインクリメントし、かつ各メモリ戻しについて前記キャッシュミス戻しカウンタをデクリメントし、
前記キャッシュミス戻しカウンタが前記初期値を有するとすれば、前記パイプラインは前記ロード命令の前記識別を前記レジスタに記憶する、
請求項1に記載のプロセッサ。
【請求項１０】
プロセッサであって、
レジスタを有するレジスタファイルと、
パイプラインであって、別の最終レベルキャッシュミスを引き起こした他の未解決ロード命令が前記パイプライン中にないうちに最終レベルキャッシュミスを引き起こすロード命令を検出すると、前記パイプラインは、前記ロード命令の識別を前記レジスタに記憶し、かつ前記レジスタ中のフィールドを前記レジスタの内容が有効であることを示すようにセットする、パイプラインと、
前記レジスタファイルおよび前記パイプラインに結合されるステートマシンであって、前記ステートマシンは、前記パイプラインが前記レジスタに前記識別を記憶したことに応答して、初期状態から第1の状態に遷移し、前記ステートマシンは、前記ステートマシンが前記第1の状態に遷移してから前記プロセッサがM個の連続するプロセッサクロックサイクルにわたって動作したことに応答して、前記第1の状態から低周波数状態に遷移し、Mは整数である、ステートマシンと
を備え、
前記プロセッサは、前記ステートマシンが前記初期状態または前記第1の状態にあるときは第1のクロック周波数で動作し、かつ前記ステートマシンが前記低周波数状態にあるときは第2のクロック周波数で動作し、前記第1のクロック周波数は前記第2のクロック周波数よりも高い、プロセッサ。
【請求項１１】
前記ステートマシンは、前記ロード命令に対するメモリ戻し、またはパイプラインフラッシュに応答して、前記低周波数状態から前記初期状態に遷移する、請求項10に記載のプロセッサ。
【請求項１２】
前記ステートマシンは、前記ロード命令に対するメモリ戻し、パイプラインフラッシュ、または前記プロセッサが、前記ステートマシンが前記初期状態から前記第1の状態に遷移してから、N個のプロセッサクロックサイクルにわたって動作したことに応答して、前記第1の状態から前記初期状態に遷移し、Nは整数である、請求項10に記載のプロセッサ。
【請求項１３】
前記パイプラインは、前記ステートマシンが前記初期状態に戻ると、前記フィールドを前記レジスタの内容が有効でないことを示すようにセットする、請求項10に記載のプロセッサ。
【請求項１４】
前記識別を記憶する前に、前記レジスタの内容が有効でないことを前記フィールドが示すとすれば、前記パイプラインは前記ロード命令の前記識別を前記レジスタに記憶する、請求項13に記載のプロセッサ。
【請求項１５】
前記レジスタファイルは少なくとも1つのミスステータス処理レジスタを備え、
前記少なくとも1つのミスステータス処理レジスタが無効な内容を有するとすれば、前記パイプラインは前記ロード命令の前記識別を前記レジスタに記憶する、請求項10に記載のプロセッサ。
【請求項１６】
前記レジスタファイルは、初期値を有するキャッシュミス戻しカウンタを備え、
前記パイプラインは、各キャッシュミスについて前記キャッシュミス戻しカウンタをインクリメントし、かつ各メモリ戻しについて前記キャッシュミス戻しカウンタをデクリメントし、
前記キャッシュミス戻しカウンタが前記初期値を有するとすれば、前記パイプラインは前記ロード命令の前記識別を前記レジスタに記憶する、請求項10に記載のプロセッサ。
【請求項１７】
ディスパッチ停止中にプロセッサにおいてプロセッサクロック周波数をスケーリングするための方法であって、前記プロセッサは命令を実行するためのパイプラインを備え、前記方法は、
別の最終レベルキャッシュミスを引き起こした他の未解決ロード命令が前記パイプライン中にないうちに、最終レベルキャッシュミスを引き起こすロード命令の識別を前記プロセッサのレジスタに記憶し、かつ前記レジスタ中のフィールドを、前記レジスタの内容が有効であることを示すようにセットするステップと、
前記パイプラインが前記レジスタに前記識別を記憶したことに応答して、前記プロセッサを初期状態から第1の状態に遷移させるステップと、
前記ロード命令が前記パイプライン中の最も古いロード命令であることに応答して、前記プロセッサを前記第1の状態から第2の状態に遷移させるステップと、
前記プロセッサが前記第2の状態に遷移してから、前記プロセッサがM個の連続するプロセッサクロックサイクルにわたって動作したことに応答して、前記プロセッサを前記第2の状態から低周波数状態に遷移させるステップであって、Mは整数である、ステップと、
前記初期、第1、または第2の状態にあるとき、前記プロセッサを第1のクロック周波数で動作させるステップと、
前記低周波数状態にあるとき、前記プロセッサを第2のクロック周波数で動作させるステップであって、前記第1のクロック周波数は前記第2のクロック周波数よりも高い、ステップと
を含む、方法。
【請求項１８】
前記ロード命令に対するメモリ戻し、またはパイプラインフラッシュに応答して、前記プロセッサを前記低周波数状態から前記初期状態に遷移させるステップと、
前記ロード命令に対するメモリ戻し、パイプラインフラッシュ、または前記プロセッサが、前記初期状態から前記第1の状態に遷移してから、N1個のプロセッサクロックサイクルにわたって動作したことに応答して、前記プロセッサを前記第1の状態から前記初期状態に遷移させるステップであって、N1は整数である、ステップと、
前記ロード命令に対するメモリ戻し、パイプラインフラッシュ、または前記プロセッサが、前記第1の状態から前記第2の状態に遷移してから、N2個のプロセッサクロックサイクルにわたって動作したことに応答して、前記プロセッサを前記第2の状態から前記初期状態に遷移させるステップであって、N2は整数である、ステップと、
前記初期状態に戻ると、前記フィールドを、前記レジスタの内容が有効でないことを示すようにセットするステップと
をさらに含む、請求項17に記載の方法。
【請求項１９】
前記識別を記憶する前に、前記レジスタの内容が有効でないことを前記フィールドが示すとすれば、前記ロード命令の前記識別を前記レジスタに記憶することが起こる、請求項18に記載の方法。
【請求項２０】
前記プロセッサは少なくとも1つのミスステータス処理レジスタを備え、前記少なくとも1つのミスステータス処理レジスタのうちのどれも有効な内容をもたないとすれば、前記ロード命令の前記識別を前記プロセッサの前記レジスタに記憶することが起こる、請求項17に記載の方法。
【請求項２１】
前記レジスタファイルは、初期値を有するキャッシュミス戻しカウンタを備え、前記方法は、
各キャッシュミスに対して前記キャッシュミス戻しカウンタをインクリメントするステップと、
各メモリ戻しに対して前記キャッシュミス戻しカウンタをデクリメントするステップと
をさらに含み、
前記キャッシュミス戻しカウンタが前記初期値を有するとすれば、前記ロード命令の前記識別を前記プロセッサの前記レジスタに記憶することが起こる、
請求項17に記載の方法。
【請求項２２】
ディスパッチ停止中にプロセッサにおいてプロセッサクロック周波数をスケーリングするための方法であって、前記プロセッサは、命令を実行するためのパイプラインを備え、前記方法は、
別の最終レベルキャッシュミスを引き起こした他の未解決ロード命令が前記パイプライン中にないうちに、最終レベルキャッシュミスを引き起こすロード命令の識別を前記プロセッサのレジスタに記憶し、かつ前記レジスタ中のフィールドを、前記レジスタの内容が有効であることを示すようにセットするステップと、
前記パイプラインが前記レジスタに前記識別を記憶したことに応答して、前記プロセッサを初期状態から第1の状態に遷移させるステップと、
前記第1の状態に入ってから前記プロセッサがM個の連続するプロセッサクロックサイクルにわたって動作したことに応答して、前記プロセッサを前記第1の状態から低周波数状態に遷移させるステップであって、Mは整数である、ステップと、
前記プロセッサを、前記初期状態または前記第1の状態にあるとき、第1のクロック周波数で動作させるステップと、
前記プロセッサを、前記低周波数状態にあるとき、第2のクロック周波数で動作させるステップであって、前記第1のクロック周波数は前記第2のクロック周波数よりも高い、ステップと
を含む、方法。
【請求項２３】
前記ロード命令に対するメモリ戻し、またはパイプラインフラッシュに応答して、前記プロセッサを前記低周波数状態から前記初期状態に遷移させるステップと、
前記ロード命令に対するメモリ戻し、パイプラインフラッシュ、または前記プロセッサが、前記初期状態から前記第1の状態に遷移してから、N個のプロセッサクロックサイクルにわたって動作したことに応答して、前記プロセッサを前記第1の状態から前記初期状態に遷移させるステップであって、Nは整数である、ステップと、
前記初期状態に戻ると、前記フィールドを前記レジスタの内容が有効でないことを示すようにセットするステップと
をさらに含む、請求項22に記載の方法。
【請求項２４】
前記識別を記憶する前に、前記レジスタの内容が有効でないことを前記フィールドが示すとすれば、前記ロード命令の前記識別を前記レジスタに記憶することが起こる、請求項23に記載の方法。
【請求項２５】
前記プロセッサは少なくとも1つのミスステータス処理レジスタを備え、前記少なくとも1つのミスステータス処理レジスタが無効な内容を有するとすれば、前記ロード命令の前記識別を前記プロセッサの前記レジスタに記憶することが起こる、請求項22に記載の方法。
【請求項２６】
前記レジスタファイルは、初期値を有するキャッシュミス戻しカウンタを備え、前記方法は、
各キャッシュミスに対して前記キャッシュミス戻しカウンタをインクリメントするステップと、
各メモリ戻しに対して前記キャッシュミス戻しカウンタをデクリメントするステップと
をさらに含み、
前記キャッシュミス戻しカウンタが前記初期値を有するとすれば、前記ロード命令の前記識別を前記プロセッサの前記レジスタに記憶することが起こる、請求項22に記載の方法。
【請求項２７】
プロセッサであって、
レジスタと、
命令を実行するためのパイプラインと、
別の最終レベルキャッシュミスを引き起こした他の未解決ロード命令が前記パイプライン中にないうちに、最終レベルキャッシュミスを引き起こすロード命令の識別を前記プロセッサの前記レジスタに記憶し、かつ前記レジスタ中のフィールドを前記レジスタの内容が有効であることを示すようにセットするための手段と、
前記パイプラインが前記レジスタに前記識別を記憶したことに応答して、初期状態から第1の状態に遷移するための手段と、
前記ロード命令が前記パイプライン中の最も古いロード命令であることに応答して、前記第1の状態から第2の状態に遷移するための手段と、
前記プロセッサが前記第2の状態に入ってから、前記プロセッサがM個の連続するプロセッサクロックサイクルにわたって動作したことに応答して、前記第2の状態から低周波数状態に遷移するための手段であって、Mは整数である、手段と、
前記プロセッサを、前記初期、第1、または第2の状態にあるとき、第1のクロック周波数で動作させるための手段と、
前記プロセッサを、前記低周波数状態にあるとき、第2のクロック周波数で動作させるための手段であって、前記第1のクロック周波数は前記第2のクロック周波数よりも高い、手段と
を備える、プロセッサ。
【請求項２８】
プロセッサであって、
レジスタと、
命令を実行するためのパイプラインと、
別の最終レベルキャッシュミスを引き起こした他の未解決ロード命令が前記パイプライン中にないうちに、最終レベルキャッシュミスを引き起こすロード命令の識別を前記プロセッサの前記レジスタに記憶し、かつ前記レジスタ中のフィールドを、前記レジスタの内容が有効であることを示すようにセットするための手段と、
前記パイプラインが前記レジスタに前記識別を記憶したことに応答して、初期状態から第1の状態に遷移するための手段と、
前記プロセッサが前記第1の状態に入ってから、前記プロセッサがM個の連続するプロセッサクロックサイクルにわたって動作したことに応答して、前記第1の状態から低周波数状態に遷移するための手段であって、Mは整数である、手段と、
前記初期状態または前記第1の状態にあるとき、前記プロセッサを第1のクロック周波数で動作させるための手段と、
前記低周波数状態にあるとき、前記プロセッサを第2のクロック周波数で動作させるための手段であって、前記第1のクロック周波数は前記第2のクロック周波数よりも高い、手段と
を備える、プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、プロセッサを対象とし、より詳細には、キャッシュミスに応答してプロセッサクロック周波数をスケーリングするプロセッサマイクロアーキテクチャを対象とする。
【背景技術】
【０００２】
プロセッサのクロックツリーは、プロセッサによって消費される総電力の主成分を消費する可能性がある。たとえば、いくつかの現代のプロセッサ設計用には、クロックツリー動的電力は、総プロセッサコア電力の15%〜20%もの高さである可能性があると推定されている。プロセッサ設計が完全にクロックゲートされると仮定すると、そのような例の場合、メモリサブシステムからのデータを待つ間、プロセッサがアクティブであるか、それともアイドルであるかにかかわらず、プロセッサは、稼動している間、感知できない程の量の電力を常に浪費することになる。
【発明の概要】
【課題を解決するための手段】
【０００３】
本発明の例示的な実施形態は、露出キャッシュ停止時における効果的なクロックスケーリングのためのシステムおよび方法を対象とする。
【０００４】
添付の図面は、本発明の実施形態に関する説明において助けとなるように提示されており、本発明の限定ではなく、実施形態の例示のみのために提供されている。
【図面の簡単な説明】
【０００５】
【図１】ある実施形態によるプロセッサの高レベルマイクロアーキテクチャを示す図である。
【図２】ある実施形態によるステートマシンについての状態図である。
【図３Ａ】ある実施形態による、候補ロード命令を検出するための流れ図である。
【図３Ｂ】ある実施形態による、候補ロード命令を検出するための流れ図である。
【図３Ｃ】ある実施形態による、候補ロード命令を検出するための流れ図である。
【図４】ある実施形態が適用される電子デバイスを示す図である。
【発明を実施するための形態】
【０００６】
以下の説明および関連する図面において、本発明の実施形態が開示される。本発明の範囲を逸脱することなく、代替実施形態が考案されてもよい。加えて、本発明の関連する詳細を不明瞭にしないように、本発明のよく知られている要素は詳細に説明されないか、または省略される。
【０００７】
「例示的」という言葉は、本明細書では、「例、事例、または例示として役立つ」ことを意味するように使用される。「例示的」として本明細書で説明するいかなる実施形態も、他の実施形態よりも好ましい、または有利であると必ずしも解釈されるべきでない。同様に、「本発明の実施形態」という用語は、本発明のすべての実施形態が、説明する特徴、利点、または動作モードを含むことを必要としない。
【０００８】
本明細書で使用する用語は、特定の実施形態の説明のみを目的とするものであり、本発明の実施形態を限定するものではない。本明細書で使用される場合の、単数形"a"、"an"、および"the"は、文脈が明確にそうでないと示さない限り、複数形も含むことを意図する。本明細書で使用される場合、「含む/備える(comprises)」、「含む/備える(comprising)」、「含む(includes)」、および/または「含む(including)」という用語は、述べられた機能、整数、ステップ、動作、要素、および/または構成要素の存在を指定するが、1つまたは複数の他の機能、整数、ステップ、動作、要素、構成要素、および/またはそれらの群の存在もしくは追加を排除するものではないことをさらに理解されたい。
【０００９】
さらに、多くの実施形態は、コンピューティングデバイスの要素によってたとえば実施されることになるアクションのシーケンスに関して記述される。本明細書で記述される様々なアクションが、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、または1つもしくは複数のプロセッサにより実行されるプログラム命令によって、またはこれらの組合せによって実施されることが可能であることが認識されよう。さらに、本明細書で説明されるこれらのアクションのシーケンスは、実行時に本明細書で説明される機能性を関連するプロセッサに実施させる、対応するコンピュータ命令のセットがその中に記憶された任意の形態のコンピュータ可読記憶媒体内で完全に実施されるとみなすことができる。したがって、本発明の様々な態様はいくつかの異なる形態において実施されてもよく、そのすべてが、特許請求する主題の範囲内に入ると考えられる。加えて、本明細書で説明する実施形態ごとに、任意のそのような実施形態の対応する形式は、本明細書では、たとえば、説明するアクションを実施する「ように構成される論理」として説明される場合がある。
【００１０】
ある実施形態によるプロセッサは、システムメモリからのデータを待つ間、停止される見込みが最も高いときを識別し、その結果、データがメモリサブシステム(たとえば、オフチップシステムメモリ)から戻るのを待つ間、そのクロック周波数をスケールダウンする。プロセッサは、キャッシュ停止条件が解除されると、フルクロック周波数に戻る。この機構は、性能に明らかに影響することなく、クロックツリー中で消費される電力を削減することを目指している。
【００１１】
図1は、ある実施形態による、プロセッサ100のマイクロアーキテクチャを示す。説明しやすいように、通常のプロセッサマイクロアーキテクチャのすべての構成要素が示されているわけではない。パイプライン102は、命令キャッシュ104から、ロード命令などの命令をフェッチするか、または命令を記憶し、様々な命令を実行するためにデータキャッシュ106へのアクセスを有し、レジスタファイル108中のレジスタへのアクセスを有する。
【００１２】
メモリ110は、システムメモリ、命令キャッシュ104もしくはデータキャッシュ106よりも高いレベルでのキャッシュ、またはそれらの任意の組合せを含む場合があるオフチップメモリを表す。たとえば、メモリ110は、L2(レベル2)キャッシュと、揮発性および不揮発性メモリの両方を含む場合がある他のシステムメモリ構成要素とを含むメモリ階層を表す場合がある。
【００１３】
実施形態は、レジスタファイル108中に示される3つのレジスタ、すなわち、露出ロードレジスタ112と呼ばれるレジスタ112、ミスステータス処理レジスタ114(MSHR114)と呼ばれるレジスタ114、およびキャッシュミス戻しカウンタ116と呼ばれるレジスタ116のうちの1つまたは複数を利用する。実際には、複数のMSHRが存在してもよい。したがって、"MSHR114"という用語は、複数のミスステータス処理レジスタを示すのに使われる場合がある。ステートマシン118は、レジスタ112、114、および116へのアクセスを有し、入力ポート122においてキャッシュミス信号を、および入力ポート124においてデータ戻し信号を受信する。以下でより詳しく説明されるように、ステートマシン118は、ステートマシン118に記憶された状態、レジスタ112、114、および116のうちの1つまたは複数に記憶された値、ならびにキャッシュミス信号およびデータ戻し信号に応じて、クロック120を低周波数または高周波数にセットする。
【００１４】
プロセッサ100はステートマシンとみなされる場合があるので、以下で説明するステートマシン118の状態も、プロセッサ100の起こり得る状態とみなされる場合がある。
【００１５】
図2は、ある実施形態によるステートマシン118についての状態遷移図200を示す。図2には、4つの状態、すなわち状態202、状態204、状態206、および状態208が示される。状態202、204、および206はそれぞれ、HF0状態、HF1状態、およびHF2状態と呼ばれる場合もあり、図2でのように表される。これらの状態呼称における"HF"は、「高周波数」に対するニーモニックであり、さらに記載されるように、プロセッサ100は、ステートマシン118が状態HF0、HF1、およびHF2のうちの任意の1つにあるとき、通常の動作周波数、すなわち、比較的高周波数で作動される(またはゲートされる)。状態208は、LF状態と呼ばれる場合もあり、図2でのように表される。"LF"は「低周波数」に対するニーモニックであり、さらに記載されるように、プロセッサ100は、ステートマシン118がLF状態にあるとき、通常の動作周波数よりも低い周波数、すなわち、比較的低周波数で作動される(またはゲートされる)。
【００１６】
図1のクロック120は、クロック信号を提供するための生成器、またはプロセッサ100を、1つまたは複数のクロック周波数で動作するようにゲートするための回路を表してもよい。したがって、実施形態を説明するとき、クロック120を何らかの周波数にセットすることへの言及は、プロセッサ100を、その動作周波数が調節されてもよいようにゲートするアクションも含むように理解されるべきである。
【００１７】
ステートマシン118が状態202、204、または206のうちの1つにあるとき、クロック120は高周波数で作動され、ステートマシン118が状態208にあるとき、クロック120は低周波数で作動される。最初に、ステートマシン100はHF0状態にあり、したがってこの状態は、初期状態と呼ばれてもよい。状態202(HF0または初期状態)から状態204(HF1状態)への状態遷移210は、候補ロード命令が検出されたときに起こる。
【００１８】
候補ロード命令とは、ロード命令が、最終レベルキャッシュミスによるディスパッチ停止を引き起こしている、より早期の実行済みロード命令に隠れないように、最終レベルキャッシュミスを引き起こすロード命令である。(ディスパッチ停止は、キャッシュ停止と呼ばれることがある。)つまり、候補ロード命令とは、最終レベルキャッシュミスを引き起こした他の未解決ロード命令がパイプライン102中にないときに最終レベルキャッシュミスを引き起こすロード命令である。「最終レベル」キャッシュは、メモリ110によって表されるメモリ階層における最も高いレベルを有するキャッシュを指す。たとえば、メモリ110中の最終レベルキャッシュは、L2(レベル2)キャッシュであってもよい。いくつかの実施形態では、最終レベルキャッシュは、プロセッサ100中に統合されてもよい。候補ロード命令を検出するための異なる実施形態については、後で記載する。
【００１９】
候補ロード命令を検出したことに応答して、パイプライン102は、ロード命令ID(識別)を露出ロードレジスタ112のフィールド126に記憶し、露出ロードレジスタ112のフィールド128を、露出ロードレジスタ112の内容が有効であることを示すようにセットする。フィールド128は、有効フィールド、または有効ビットと呼ばれる場合がある。候補ロード命令を検出したことに対する、この応答は、状態遷移210の隣の括弧内に示される。
【００２０】
HF1状態からHF2状態への状態遷移212は、まだ後退していない候補ロード命令が最も古いロード命令であるとプロセッサ100が判断したことに応答して起こる。最も古いロード命令は、ロードキュー130にアクセスすることによって判断される場合がある。ただし、HF1状態からHF0状態への状態遷移211に留意されたい。状態遷移211は、ステートマシン118がHF1状態に入ってからのクロックサイクルの数が、図2においてN1として記される閾値を超えたときに起こる。さらに、状態遷移211は、入力ポート124におけるデータ戻し信号が、(候補ロード命令によって要求された)データがメモリ110から取り出されたことを示す場合、またはパイプライン102がフラッシュされた場合に起こる。したがって、ステートマシン118がHF0状態からHF1状態に遷移してからN1個のプロセッサクロックサイクルが経過した場合、状態遷移212は起こらない。言い換えると、ステートマシン118がHF0状態からHF1状態に遷移してからN1個のプロセッサクロックサイクルが経過していないという条件は、状態遷移212にとって必要条件である。
【００２１】
図1においてcounter_HFレジスタと呼ばれるレジスタ130は、ステートマシン118がHF0状態からHF1状態に遷移してからの(つまり、ステートマシン118が候補ロード命令を検出したときの)クロックサイクルの数を追跡するのに使うことができる。counter_HFレジスタは、ステートマシン118がHF1状態に入る前のいつか、または入ったときに初期化され、各プロセッサクロックサイクルにおいてそれ以降でインクリメントされる。
【００２２】
HF2状態からLF状態への状態遷移214は、ディスパッチ停止変数TSTALLがM1個の連続クロックサイクルに達したことをプロセッサ100が検出したことに応答して起こる。一実施形態では、ディスパッチ停止変数TSTALLは、候補ロード命令が最も古いロード命令になったときからカウントし始め、ここで、ディスパッチ停止変数TSTALLは、プロセッサクロックサイクルを単位とする。つまり、ディスパッチ停止変数TSTALLは、ステートマシン118がHF2状態に入ったとき、または入る前のどこかの時点で初期化され、各プロセッサクロックサイクルに対してそれ以降でインクリメントされ、そうすると、停止変数TSTALLがM1に達した場合、LF状態に入る。TSTALLの値はレジスタ132に記憶されてもよく、その場合、たとえば、ステートマシン118は、各ディスパッチ停止の開始時に、レジスタ132の値をゼロにリセットする。
【００２３】
LF状態に入るとき、ステートマシン118は、性能における明らかな損失なしで省電力を達成するように、クロック120を低周波数にセットする(またはプロセッサ100をゲートする)。ただし、ステートマシン118がHF2状態に入ってからのクロックサイクルの数が、図2においてN2と記される閾値を超えたときに起こる、HF2状態からHF0状態への状態遷移213に留意されたい。整数N1は、整数N2に等しい必要はない。さらに、状態遷移213は、入力ポート124におけるデータ戻し信号が、データ(候補ロード命令によって要求された)がメモリ110から取り出されたことを示す場合、またはパイプライン102がフラッシュされた場合に起こる。
【００２４】
したがって、状態遷移214は、ステートマシン118がHF1状態からHF2状態に遷移してから、N2個のプロセッサクロックサイクルが経過していない場合にのみ起こる。前述のように、レジスタ130は、ステートマシン118がHF1状態からHF2状態に遷移してからのクロックサイクルの数をカウントするために使われてもよい。
【００２５】
LF状態からHF0状態への状態遷移218は、メモリ110からのデータがロード命令の目標記憶ロケーションから戻されるメモリ戻しに応答して、またはパイプラインフラッシュがあったときに起こる。状態遷移218に応答して、フィールド128は、露出ロードレジスタ112の内容がもはや有効でないことを示すようにクリアされる。
【００２６】
別の実施形態では、HF2状態は、状態遷移216についての破線によって示されるように、スキップされる場合がある。そのような実施形態では、候補ロード命令は、状態遷移212によって示されるように、最も古いロード命令であると判断される必要はない。そうではなく、ステートマシン118は、ディスパッチ停止変数TSTALLがM2個の連続クロックサイクルに達したことを検出したことに応答して、HF1状態から直接、LF状態に遷移し、この場合、ディスパッチ停止変数TSTALLは、最終レベルキャッシュミスが起きたとき、つまり、ステートマシン118がHF1状態に入ったときにカウントし始める。整数M1は、整数M2に等しい必要はない。繰返しになるが、状態遷移216のための必要条件は、ステートマシン118がHF0状態からHF1状態に遷移してからのプロセッサクロックサイクルの数がN1を超えないことである。
【００２７】
図3A、図3B、および図3Cは、候補ロード命令を検出するための3つの実施形態を示す。図3Aに示す実施形態を参照すると、ロード命令が最終レベルキャッシュミスを引き起こした場合(302)、有効な内容をもつMSHR114の数が判断される(304)。そのようなレジスタの数がゼロである場合、ロード命令は候補ロード命令であると宣言される(306)。ソフトウェアプロセスが始まると、MSHR114は、それらの内容がすべて無効になるように初期化されることが可能である。
【００２８】
図3Bに示す実施形態では、ロード命令が最終レベルキャッシュミスを引き起こすと、キャッシュミス戻しカウンタ116はインクリメントされ(308)、最終レベルキャッシュミスを引き起こすロード命令用の目標記憶ロケーションからのデータが戻され(310)、すなわち、メモリ戻しがあると、キャッシュミス戻しカウンタ116はデクリメントされる。アクション312に示されるように、最終レベルキャッシュミスがあり、キャッシュミス戻しカウンタ116がゼロであると判断されるといつでも、その最終レベルキャッシュミスを引き起こすロード命令は、候補ロード命令であると宣言される。これは、ゼロがキャッシュミス戻しカウンタ116の初期値であると仮定する。
【００２９】
図3Cに示す実施形態では、アクション314に示されるように、ロード命令が最終レベルキャッシュミスを引き起こすと、プロセッサ100は、アクション316において露出ロードレジスタ112をチェックする。露出ロードレジスタ112の内容が有効でない場合、アクション318に示されるように、最終レベルキャッシュミスを引き起こすロード命令は、候補ロード命令であると宣言される。
【００３０】
実施形態は、ほんのいくつかの例を挙げれば、たとえばセルラー電話、ラップトップ、もしくはコンピュータサーバ、またはインターネット接続性のある電力効率的器具など、いくつかのデバイスにおいて適用されてもよい。図4は、実施形態が適用される場合がある電子デバイスの例を示し、ここで、ステートマシン118をもつプロセッサ100が、バス402によりメモリ110に結合される。図4の具体例では、最終レベルキャッシュはL2キャッシュ404である。図4には、ルータ、アクセスポイント、またはセルラー電話塔へのワイヤレス接続性が実現される場合があるようにアンテナ408に結合されるモデム406もまた示される。ユーザインターフェース410は、ユーザが、たとえばタッチセンシティブスクリーンまたはキーボードなどの電子デバイスと対話する場合がある1つまたは複数のデバイスを表す。
【００３１】
当業者は、情報および信号が、様々な異なる技術および技法のうちのいずれかを使用して表現される場合があることを了解するであろう。たとえば、上の説明全体にわたって言及される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表現される場合がある。
【００３２】
さらに、本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、またはコンピュータソフトウェアとハードウェアの組合せとして実装されてもよいことが、当業者には了解されよう。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上では全般的にそれらの機能性に関して説明した。そのような機能性がハードウェアとして実装されるかソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者であれば、各特定の用途に対して、様々な方法で、述べられた機能性を実施できるが、そのような実施の判断を、本発明の範囲から逸脱させるものとして解釈すべきではない。
【００３３】
本明細書で開示した実施形態との関連で記載した方法、シーケンスおよび/またはアルゴリズムは、プロセッサ(「プロセッサ」は、複数のプロセッサまたは複数のプロセッサコアを含んでもよいと理解される)および電子回路によって実行される、電子ハードウェア、またはコンピュータソフトウェアとハードウェアの組合せとして実装されてもよい。実施形態の一部を実装するためのソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られている任意の他の形態の記憶媒体に存在する場合がある。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替として、記憶媒体は、プロセッサに一体化される場合がある。
【００３４】
したがって、本発明の一実施形態は、露出キャッシュ停止時における効果的なクロックスケーリングのための方法を具現化するコンピュータ可読媒体を含むことができる。したがって、本発明は示した例に限定されず、本明細書において説明した機能を実施するための任意の手段が、本発明の実施形態に含まれる。
【００３５】
前述の開示は本発明の例証的な実施形態を示すが、添付の特許請求の範囲によって定義される本発明の範囲を逸脱することなく、様々な変更および修正が本明細書に加えられてもよいことに留意されたい。本明細書で記述される本発明の実施形態による方法請求項の機能、ステップ、および/またはアクションは、いずれかの特定の順序で実施される必要はない。さらに、本発明の要素が単数形で記述または特許請求される場合があるが、単数形への限定が明示的に記載されていない限り、複数形も企図される。
【符号の説明】
【００３６】
100  プロセッサ、ステートマシン
102  パイプライン
104  命令キャッシュ
106  データキャッシュ
108  レジスタファイル
110  メモリ
112  露出ロードレジスタ、レジスタ
114  ミスステータス処理レジスタ、MSHR、レジスタ
116  キャッシュミス戻しカウンタ、レジスタ
118  ステートマシン
120  クロック
122  入力ポート
124  入力ポート
126  フィールド
128  フィールド
130  ロードキュー、レジスタ
132  レジスタ
402  バス
404  L2キャッシュ
406  モデム
408  アンテナ
410  ユーザインターフェース
【図１】
2018528548.tif 000003
【図２】
2018528548.tif 000004
【図３Ａ】
2018528548.tif 000005
【図３Ｂ】
2018528548.tif 000006
【図３Ｃ】
2018528548.tif 000007
【図４】
2018528548.tif 000008
【手続補正書】
【提出日】平成30年3月27日(2018.3.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサであって、
レジスタを有するレジスタファイルと、
パイプラインであって、別の最終レベルキャッシュミスを引き起こした他の未解決ロード命令が前記パイプライン中にないうちに最終レベルキャッシュミスを引き起こすロード命令を検出すると、前記パイプラインは、前記ロード命令の識別を前記レジスタに記憶し、かつ前記レジスタ中のフィールドを、前記レジスタの内容が有効であることを示すようにセットする、パイプラインと、
前記レジスタファイルおよび前記パイプラインに結合されるステートマシンであって、前記ステートマシンは、前記パイプラインが前記レジスタに前記識別を記憶したことに応答して、初期状態から第1の状態に遷移し、前記ステートマシンは、前記ロード命令が前記パイプライン中の最も古いロード命令であることに応答して、前記第1の状態から第2の状態に遷移し、前記ステートマシンは、前記ステートマシンが前記第2の状態に遷移してから前記プロセッサがM個の連続するプロセッサクロックサイクルにわたって動作したことに応答して、前記第2の状態から低周波数状態に遷移し、Mは整数である、ステートマシンと
を備え、
前記プロセッサは、前記ステートマシンが前記初期、第1、または第2の状態にあるときは第1のクロック周波数で動作し、前記ステートマシンが前記低周波数状態にあるときは第2のクロック周波数で動作し、前記第1のクロック周波数は前記第2のクロック周波数よりも高い、プロセッサ。
【請求項２】
前記ステートマシンは、前記ロード命令に対するメモリ戻し、またはパイプラインフラッシュに応答して、前記低周波数状態から前記初期状態に遷移する、請求項1に記載のプロセッサ。
【請求項３】
前記ステートマシンは、前記ロード命令に対するメモリ戻し、パイプラインフラッシュ、または前記ステートマシンが前記初期状態から前記第1の状態に遷移してから前記プロセッサがN1個のプロセッサクロックサイクルにわたって動作したことに応答して、前記第1の状態から前記初期状態に遷移し、N1は整数である、請求項1に記載のプロセッサ。
【請求項４】
前記ステートマシンは、前記ロード命令に対するメモリ戻し、パイプラインフラッシュ、または前記ステートマシンが前記第2の状態に遷移してから前記プロセッサがN2個のプロセッサクロックサイクルにわたって動作したことに応答して、前記第2の状態から前記初期状態に遷移し、N2は整数である、請求項1に記載のプロセッサ。
【請求項５】
前記ステートマシンは、前記ロード命令に対するメモリ戻し、パイプラインフラッシュ、または前記ステートマシンが前記初期状態から前記第1の状態に遷移してから前記プロセッサがN1個のプロセッサクロックサイクルにわたって動作したことに応答して、前記第1の状態から前記初期状態に遷移し、N1は整数である、請求項4に記載のプロセッサ。
【請求項６】
前記パイプラインは、前記ステートマシンが前記初期状態に戻ると、前記フィールドを前記レジスタの内容が有効でないことを示すようにセットする、請求項1に記載のプロセッサ。
【請求項７】
前記レジスタの内容が有効でないことを前記フィールドが示すとすれば、前記パイプラインは前記ロード命令の前記識別を前記レジスタに記憶する、請求項1に記載のプロセッサ。
【請求項８】
前記レジスタファイルは少なくとも1つのミスステータス処理レジスタを備え、
前記少なくとも1つのミスステータス処理レジスタが無効な内容を有するとすれば、前記パイプラインは前記ロード命令の前記識別を前記レジスタに記憶する、
請求項1に記載のプロセッサ。
【請求項９】
前記レジスタファイルは、初期値を有するキャッシュミス戻しカウンタを備え、
前記パイプラインは、各キャッシュミスについて前記キャッシュミス戻しカウンタをインクリメントし、かつ各メモリ戻しについて前記キャッシュミス戻しカウンタをデクリメントし、
前記キャッシュミス戻しカウンタが前記初期値を有するとすれば、前記パイプラインは前記ロード命令の前記識別を前記レジスタに記憶する、
請求項1に記載のプロセッサ。
【請求項１０】
プロセッサであって、
レジスタを有するレジスタファイルと、
パイプラインであって、別の最終レベルキャッシュミスを引き起こした他の未解決ロード命令が前記パイプライン中にないうちに最終レベルキャッシュミスを引き起こすロード命令を検出すると、前記パイプラインは、前記ロード命令の識別を前記レジスタに記憶し、かつ前記レジスタ中のフィールドを前記レジスタの内容が有効であることを示すようにセットする、パイプラインと、
前記レジスタファイルおよび前記パイプラインに結合されるステートマシンであって、前記ステートマシンは、前記パイプラインが前記レジスタに前記識別を記憶したことに応答して、初期状態から第1の状態に遷移し、前記ステートマシンは、前記ステートマシンが前記第1の状態に遷移してから前記プロセッサがM個の連続するプロセッサクロックサイクルにわたって動作したことに応答して、前記第1の状態から低周波数状態に遷移し、Mは整数である、ステートマシンと
を備え、
前記プロセッサは、前記ステートマシンが前記初期状態または前記第1の状態にあるときは第1のクロック周波数で動作し、かつ前記ステートマシンが前記低周波数状態にあるときは第2のクロック周波数で動作し、前記第1のクロック周波数は前記第2のクロック周波数よりも高い、プロセッサ。
【請求項１１】
前記ステートマシンは、前記ロード命令に対するメモリ戻し、またはパイプラインフラッシュに応答して、前記低周波数状態から前記初期状態に遷移する、請求項10に記載のプロセッサ。
【請求項１２】
前記ステートマシンは、前記ロード命令に対するメモリ戻し、パイプラインフラッシュ、または前記ステートマシンが前記初期状態から前記第1の状態に遷移してから前記プロセッサがN個のプロセッサクロックサイクルにわたって動作したことに応答して、前記第1の状態から前記初期状態に遷移し、Nは整数である、請求項10に記載のプロセッサ。
【請求項１３】
前記パイプラインは、前記ステートマシンが前記初期状態に戻ると、前記フィールドを前記レジスタの内容が有効でないことを示すようにセットする、請求項10に記載のプロセッサ。
【請求項１４】
前記レジスタの内容が有効でないことを前記フィールドが示すとすれば、前記パイプラインは前記ロード命令の前記識別を前記レジスタに記憶する、請求項10に記載のプロセッサ。
【請求項１５】
前記レジスタファイルは少なくとも1つのミスステータス処理レジスタを備え、
前記少なくとも1つのミスステータス処理レジスタが無効な内容を有するとすれば、前記パイプラインは前記ロード命令の前記識別を前記レジスタに記憶する、請求項10に記載のプロセッサ。
【請求項１６】
前記レジスタファイルは、初期値を有するキャッシュミス戻しカウンタを備え、
前記パイプラインは、各キャッシュミスについて前記キャッシュミス戻しカウンタをインクリメントし、かつ各メモリ戻しについて前記キャッシュミス戻しカウンタをデクリメントし、
前記キャッシュミス戻しカウンタが前記初期値を有するとすれば、前記パイプラインは前記ロード命令の前記識別を前記レジスタに記憶する、請求項10に記載のプロセッサ。
【請求項１７】
ディスパッチ停止中にプロセッサにおいてプロセッサクロック周波数をスケーリングするための方法であって、前記プロセッサは命令を実行するためのパイプラインを備え、前記方法は、
別の最終レベルキャッシュミスを引き起こした他の未解決ロード命令が前記パイプライン中にないうちに、最終レベルキャッシュミスを引き起こすロード命令の識別を前記プロセッサのレジスタに記憶し、かつ前記レジスタ中のフィールドを、前記レジスタの内容が有効であることを示すようにセットするステップと、
前記パイプラインが前記レジスタに前記識別を記憶したことに応答して、前記プロセッサを初期状態から第1の状態に遷移させるステップと、
前記ロード命令が前記パイプライン中の最も古いロード命令であることに応答して、前記プロセッサを前記第1の状態から第2の状態に遷移させるステップと、
前記プロセッサが前記第2の状態に遷移してから前記プロセッサがM個の連続するプロセッサクロックサイクルにわたって動作したことに応答して、前記プロセッサを前記第2の状態から低周波数状態に遷移させるステップであって、Mは整数である、ステップと、
前記初期、第1、または第2の状態にあるとき、前記プロセッサを第1のクロック周波数で動作させるステップと、
前記低周波数状態にあるとき、前記プロセッサを第2のクロック周波数で動作させるステップであって、前記第1のクロック周波数は前記第2のクロック周波数よりも高い、ステップと
を含む、方法。
【請求項１８】
前記ロード命令に対するメモリ戻し、またはパイプラインフラッシュに応答して、前記プロセッサを前記低周波数状態から前記初期状態に遷移させるステップと、
前記ロード命令に対するメモリ戻し、パイプラインフラッシュ、または前記初期状態から前記第1の状態に遷移してから前記プロセッサがN1個のプロセッサクロックサイクルにわたって動作したことに応答して、前記プロセッサを前記第1の状態から前記初期状態に遷移させるステップであって、N1は整数である、ステップと、
前記ロード命令に対するメモリ戻し、パイプラインフラッシュ、または前記第1の状態から前記第2の状態に遷移してから前記プロセッサがN2個のプロセッサクロックサイクルにわたって動作したことに応答して、前記プロセッサを前記第2の状態から前記初期状態に遷移させるステップであって、N2は整数である、ステップと、
前記初期状態に戻ると、前記フィールドを、前記レジスタの内容が有効でないことを示すようにセットするステップと
をさらに含む、請求項17に記載の方法。
【請求項１９】
前記レジスタの内容が有効でないことを前記フィールドが示すとすれば、前記ロード命令の前記識別を前記レジスタに記憶することが起こる、請求項17に記載の方法。
【請求項２０】
前記プロセッサは少なくとも1つのミスステータス処理レジスタを備え、前記少なくとも1つのミスステータス処理レジスタのうちのどれも有効な内容をもたないとすれば、前記ロード命令の前記識別を前記プロセッサの前記レジスタに記憶することが起こる、請求項17に記載の方法。
【請求項２１】
前記レジスタファイルは、初期値を有するキャッシュミス戻しカウンタを備え、前記方法は、
各キャッシュミスに対して前記キャッシュミス戻しカウンタをインクリメントするステップと、
各メモリ戻しに対して前記キャッシュミス戻しカウンタをデクリメントするステップと
をさらに含み、
前記キャッシュミス戻しカウンタが前記初期値を有するとすれば、前記ロード命令の前記識別を前記プロセッサの前記レジスタに記憶することが起こる、
請求項17に記載の方法。
【請求項２２】
ディスパッチ停止中にプロセッサにおいてプロセッサクロック周波数をスケーリングするための方法であって、前記プロセッサは、命令を実行するためのパイプラインを備え、前記方法は、
別の最終レベルキャッシュミスを引き起こした他の未解決ロード命令が前記パイプライン中にないうちに、最終レベルキャッシュミスを引き起こすロード命令の識別を前記プロセッサのレジスタに記憶し、かつ前記レジスタ中のフィールドを、前記レジスタの内容が有効であることを示すようにセットするステップと、
前記パイプラインが前記レジスタに前記識別を記憶したことに応答して、前記プロセッサを初期状態から第1の状態に遷移させるステップと、
前記第1の状態に入ってから前記プロセッサがM個の連続するプロセッサクロックサイクルにわたって動作したことに応答して、前記プロセッサを前記第1の状態から低周波数状態に遷移させるステップであって、Mは整数である、ステップと、
前記初期状態または前記第1の状態にあるとき、前記プロセッサを第1のクロック周波数で動作させるステップと、
前記低周波数状態にあるとき、前記プロセッサを第2のクロック周波数で動作させるステップであって、前記第1のクロック周波数は前記第2のクロック周波数よりも高い、ステップと
を含む、方法。
【請求項２３】
前記ロード命令に対するメモリ戻し、またはパイプラインフラッシュに応答して、前記プロセッサを前記低周波数状態から前記初期状態に遷移させるステップと、
前記ロード命令に対するメモリ戻し、パイプラインフラッシュ、または前記初期状態から前記第1の状態に遷移してから前記プロセッサがN個のプロセッサクロックサイクルにわたって動作したことに応答して、前記プロセッサを前記第1の状態から前記初期状態に遷移させるステップであって、Nは整数である、ステップと、
前記初期状態に戻ると、前記フィールドを前記レジスタの内容が有効でないことを示すようにセットするステップと
をさらに含む、請求項22に記載の方法。
【請求項２４】
前記レジスタの内容が有効でないことを前記フィールドが示すとすれば、前記ロード命令の前記識別を前記レジスタに記憶することが起こる、請求項22に記載の方法。
【請求項２５】
前記プロセッサは少なくとも1つのミスステータス処理レジスタを備え、前記少なくとも1つのミスステータス処理レジスタが無効な内容を有するとすれば、前記ロード命令の前記識別を前記プロセッサの前記レジスタに記憶することが起こる、請求項22に記載の方法。
【請求項２６】
前記レジスタファイルは、初期値を有するキャッシュミス戻しカウンタを備え、前記方法は、
各キャッシュミスに対して前記キャッシュミス戻しカウンタをインクリメントするステップと、
各メモリ戻しに対して前記キャッシュミス戻しカウンタをデクリメントするステップと
をさらに含み、
前記キャッシュミス戻しカウンタが前記初期値を有するとすれば、前記ロード命令の前記識別を前記プロセッサの前記レジスタに記憶することが起こる、請求項22に記載の方法。
【請求項２７】
プロセッサであって、
レジスタと、
命令を実行するためのパイプラインと、
別の最終レベルキャッシュミスを引き起こした他の未解決ロード命令が前記パイプライン中にないうちに、最終レベルキャッシュミスを引き起こすロード命令の識別を前記プロセッサの前記レジスタに記憶し、かつ前記レジスタ中のフィールドを前記レジスタの内容が有効であることを示すようにセットするための手段と、
前記パイプラインが前記レジスタに前記識別を記憶したことに応答して、初期状態から第1の状態に遷移するための手段と、
前記ロード命令が前記パイプライン中の最も古いロード命令であることに応答して、前記第1の状態から第2の状態に遷移するための手段と、
前記プロセッサが前記第2の状態に入ってから、前記プロセッサがM個の連続するプロセッサクロックサイクルにわたって動作したことに応答して、前記第2の状態から低周波数状態に遷移するための手段であって、Mは整数である、手段と、
前記初期、第1、または第2の状態にあるとき、前記プロセッサを第1のクロック周波数で動作させるための手段と、
前記低周波数状態にあるとき、前記プロセッサを第2のクロック周波数で動作させるための手段であって、前記第1のクロック周波数は前記第2のクロック周波数よりも高い、手段と
を備える、プロセッサ。
【請求項２８】
プロセッサであって、
レジスタと、
命令を実行するためのパイプラインと、
別の最終レベルキャッシュミスを引き起こした他の未解決ロード命令が前記パイプライン中にないうちに、最終レベルキャッシュミスを引き起こすロード命令の識別を前記プロセッサの前記レジスタに記憶し、かつ前記レジスタ中のフィールドを、前記レジスタの内容が有効であることを示すようにセットするための手段と、
前記パイプラインが前記レジスタに前記識別を記憶したことに応答して、初期状態から第1の状態に遷移するための手段と、
前記プロセッサが前記第1の状態に入ってから、前記プロセッサがM個の連続するプロセッサクロックサイクルにわたって動作したことに応答して、前記第1の状態から低周波数状態に遷移するための手段であって、Mは整数である、手段と、
前記初期状態または前記第1の状態にあるとき、前記プロセッサを第1のクロック周波数で動作させるための手段と、
前記低周波数状態にあるとき、前記プロセッサを第2のクロック周波数で動作させるための手段であって、前記第1のクロック周波数は前記第2のクロック周波数よりも高い、手段と
を備える、プロセッサ。
【国際調査報告】
2018528548.tif 000009
2018528548.tif 000010