(57)【要約】  データプロセッサ（１０２）は、プリフェッチバッファ（１１２）とフェッチコントロールユニット（１１６）とを有する。プリフェッチバッファ（１１２）は、複数のラインを有する。プリフェッチバッファ（１１２）は、命令を格納可能な複数のラインのライン数を規定する可変的な最大深さを有する。フェッチコントロールユニット（１１６）は、プリフェッチバッファに接続され、プリフェッチバッファ（１１２）の複数のラインの少なくとも１つをモニタし、データプロセッサ（１０２）の状態に応じてプリフェッチバッファ（１１２）の可変的な最大深さを調整する。
2009530753.tif 000002
【特許請求の範囲】
【請求項１】
複数のラインから構成されるプリフェッチバッファであって、命令を格納可能な前記複数のラインのライン数を規定する可変的な最大深さを有するプリフェッチバッファと、
前記プリフェッチバッファに接続され、前記プリフェッチバッファの前記複数のラインの少なくとも１つをモニタし、データプロセッサの状態に応じて前記プリフェッチバッファの可変的な最大深さを調整するフェッチコントロールユニットと、
を有するデータプロセッサ。
【請求項２】
前記フェッチコントロールユニットは、前記可変的な最大深さにより決定される前記プリフェッチバッファの第１ラインをモニタし、前記第１ラインがエンプティであるとき命令フェッチを開始する、請求項１記載のデータプロセッサ。
【請求項３】
前記フェッチコントロールユニットは、前記プリフェッチバッファの可変的な最大深さを第１の所定の深さ又は第２の所定の深さに設定するよう構成される、請求項１記載のデータプロセッサ。
【請求項４】
前記フェチコントロールユニットは、命令タイプに応じて前記プリフェッチバッファの可変的な最大深さを設定する、請求項１記載のデータプロセッサ。
【請求項５】
前記フェッチコントロールユニットは、命令タイプに応じて前記プリフェッチバッファの可変的な最大深さを第１の所定の深さ又は第２の所定の深さに設定する、請求項１記載のデータプロセッサ。
【請求項６】
前記命令タイプは、３２ビット命令と１６ビット命令の１つから構成される、請求項５記載のデータプロセッサ。
【請求項７】
前記命令タイプは、３２ビット命令と可変長命令の１つから構成される、請求項５記載のデータプロセッサ。
【請求項８】
前記フェッチコントロールユニットは、前記プリフェッチバッファの可変的な最大深さを動的に調整する、請求項１記載のデータプロセッサ。
【請求項９】
前記フェッチコントロールユニットは、前記プリフェッチバッファのスタベーション状態に応答して前記可変的な最大深さを増加させる、請求項８記載のデータプロセッサ。
【請求項１０】
前記スタベーション状態は、閾値を超える命令スタベーションの頻度から構成され、
前記フェッチコントロールユニットは、前記スタベーション状態に応じて前記可変的な最大深さを増加させる、請求項９記載のデータプロセッサ。
【請求項１１】
前記スタベーション状態は、前記プリフェッチバッファがスタベーションの近傍に平均的にないか否かから構成され、
前記フェッチコントロールユニットは、前記スタベーション状態に応じて前記可変的な最大深さを減少させる、請求項９記載のデータプロセッサ。
【請求項１２】
前記フェッチコントロールユニットは、前記プリフェッチバッファの複数のラインの状態をモニタすることによって、前記プリフェッチバッファがスタベーションの近傍に平均的にあるか判断する、請求項１１記載のデータプロセッサ。
【請求項１３】
データプロセッサが複数のモードの選択されたモードにより動作していることを示す命令プリフェッチコントロール値を格納するレジスタと、
複数のラインから構成されるプリフェッチバッファであって、命令を格納可能な前記複数のラインのライン数を規定する可変的な最大深さを有するプリフェッチバッファと、
前記プリフェッチバッファと前記レジスタとに接続されるフェッチコントロールユニットであって、前記命令プリフェッチコントロール値に応じて前記可変的な最大深さを制御するフェッチコントロールユニットと、
を有するデータプロセッサ。
【請求項１４】
前記命令プリフェッチコントロール値が第１の値又は第２の値であることに応じて、前記フェッチコントロールユニットは、前記プリフェッチバッファの可変的な最大深さを第１の所定の深さ又は第２の所定の深さにそれぞれ設定する、請求項１３記載のデータプロセッサ。
【請求項１５】
前記命令プリフェッチコントロール値が所定の値であることに応じて、前記フェッチコントロールユニットは、前記プリフェッチバッファの可変的な最大深さを、現在の命令タイプにより少なくとも部分的に決定される第１の所定の深さと第２の所定の深さの１つに設定する、請求項１３記載のデータプロセッサ。
【請求項１６】
前記命令プリフェッチコントロール値が所定の値であることに応じて、前記フェッチコントロールユニットは、前記プリフェッチバッファの可変的な最大深さを動的に設定する、請求項１３記載のデータプロセッサ。
【請求項１７】
前記プリフェッチバッファのスタベーション状態に応じて、前記フェッチコントロールユニットは、前記プリフェッチバッファの可変的な最大深さを動的に増減する、請求項１６記載のデータプロセッサ。
【請求項１８】
複数のラインを備えたプリフェッチバッファを有するデータプロセッサにおいて使用される方法であって、
前記プリフェッチバッファの可変的な最大深さを命令を格納可能な前記複数のラインのライン数として設定するステップと、
前記可変的な最大深さを用いて命令を前記プリフェッチバッファにフェッチするステップと、
前記データプロセッサの状態に応じて前記可変的な最大深さを動的に調整するステップと、
を有する方法。
【請求項１９】
前記動的に調整するステップは、
前記プリフェッチバッファのスタベーション状態をモニタし、
前記プリフェッチバッファのスタベーションレートが閾値を超える場合、前記可変的な最大深さを増加させ、
前記プリフェッチバッファがスタベーションの近傍に平均的にない場合、前記可変的な最大深さを減少させる、
ことから構成される、請求項１８記載の方法。
【請求項２０】
前記プリフェッチバッファから命令を出力するステップと、
前記データプロセッサによる実行用に出力される命令を復号化するステップと、
をさらに有する、請求項１９記載の方法。
【請求項２１】
複数のラインを備えるプリフェッチバッファを有するデータプロセッサにおいて使用される方法であって、
前記プリフェッチバッファの可変的な最大深さを第１の所定の深さに設定するステップと、
第１命令タイプの命令を前記プリフェッチバッファにフェッチするステップと、
その後、第２命令タイプの命令を前記プリフェッチバッファにフェッチするステップと、
前記第２命令タイプの命令をフェッチすることに応じて、前記プリフェッチバッファの可変的な最大深さを前記第１の所定の深さから第２の所定の深さに変更するステップと、
を有する方法。
【請求項２２】
前記第１命令タイプの命令をフェッチするステップは、３２ビット命令をフェッチすることから構成され、
前記第２命令タイプの命令をフェッチするステップは、１６ビット命令をフェッチすることから構成される、請求項２１記載の方法。
【請求項２３】
前記第１命令タイプの命令をフェッチするステップは、３２ビット命令をフェッチすることから構成され、
前記第２命令タイプの命令をフェッチするステップは、可変長命令をフェッチすることから構成される、請求項２１記載の方法。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［開示分野］
本開示は、一般にデータプロセッサに関し、より詳細にはデータプロセッサの命令プリフェッチバッファを管理するシステム及び方法に関する。
［背景］
一般に、パーソナルコンピュータ、携帯情報端末、携帯及びデジタル電話並びに他のプロセッサベース装置などの計算システムは、コンピュータ可読命令を処理するためマイクロプロセッサの形式によるデータプロセッサを含む。マイクロプロセッサは、コンピュータ可読命令を復号化する命令デコーダと、復号化された命令を実行する１以上の命令ユニットとを有するシングルチップデータプロセッサである。実行ユニットは、アプリケーションプログラムが機能するためのアクションの大部分を実行する。
【０００２】
現在のマイクロプロセッサは、典型的には、パフォーマンスを向上させるための複数の特徴を有している。これらの特徴の１つは、オンチップキャッシュメモリである。キャッシュメモリは、命令フェッチ処理（命令キャッシュの場合）又はデータ参照（データキャッシュの場合）の局所性又はロカリティ（ｌｏｃａｌｉｔｙ）を利用して、メインメモリの相対的に遅いアクセス時間によるパイプラインストーリングを回避する高速ローカルメモリである。
【０００３】
命令キャッシュの使用は特にマイクロプロセッサパフォーマンスを大きく向上させるが、いくつかのパフォーマンスの障害が残っている。これらの１つは、命令フェッチがキャッシュにおいてヒットする場合でさえ、キャッシュアクセス自体がある時間を必要とするという事実である。一般的であるように、マイクロプロセッサがメモリ管理を利用し、キャッシュが物理的なアドレスに対応するデータを格納する物理キャッシュである場合、キャッシュアクセスはアドレス変換ステップを必要とする。他の障害は、マイクロプロセッサがサイクル毎に複数の命令を発行し、これにより、命令がキャッシュから返されることの要求を増大させるスーパースカラーデザインである。これらの状態の結果として、命令フェッチがキャッシュにおいてミスとなる場合、キャッシュが相対的に低速なメインメモリからリクエストされた命令をフェッチしている間、命令パイプラインは、命令スタベーション（ｉｎｓｔｒｕｃｔｉｏｎ  ｓｔａｒｖａｔｉｏｎ）によりストールされるかもしれない。
【０００４】
従って、いくつかのハイエンドマイクロプロセッサは、初期のメインフレームコンピュータに一般的であった特徴を利用することをスタートした。この特徴は、命令をフェッチするためのプリフェッチバッファの利用である。プリフェッチバッファは、ＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）形式によりキャッシュ又はメインメモリから予めロードされた命令を格納するレジスタ群である。プリフェッチバッファは、キャッシュ若しくはメインメモリアクセス中に発生する可能性がある命令スタベーションを防ぐが、それ自体の制約を有する。１つの制約は、いくつかのマイクロプロセッサは可変長命令をサポートするが、それはプリフェッチバッファの非効率な利用を生じさせる可能性があるということである。
【０００５】
他の制約は、ブランチ命令などの特定タイプの命令はデータプロセッサのためのフローの変化を生じさせる可能性があるということである。このような命令が命令デコーダによって復号化され、ブランチ命令であると認識される時点まで、ブランチ命令に続く複数の命令が、ブランチが選択される場合には必要とされないプリフェッチバッファにフェッチ及びロードされているかもしれない。このため、命令はプリフェッチバッファから以降に破棄されるためにだけ、メモリからロードされるかもしれない。破棄された命令は、不要なフェッチ処理の形式により浪費される電力を表す。
［発明の詳細な説明］
本発明の一特徴によると、データプロセッサはプリフェッチバッファとフェッチコントロールユニットとを有する、プリフェッチバッファは、複数のラインを有し、命令を格納可能な複数のラインのライン数を規定する可変的な最大深さを有する。フェッチコントロールユニットは、プリフェッチバッファの複数のラインの少なくとも１つをモニタし、データプロセッサの状態に応じてプリフェッチバッファの可変的な最大深さを調整するため、プリフェッチバッファに接続される。
【０００６】
上記特徴によると、フェッチコントロールユニットは、可変的な最大深さにより決定されるプリフェッチバッファの第１ラインをモニタし、第１ラインがエンプティであるとき、命令フェッチを開始するかもしれない。
【０００７】
フェッチコントロールユニットはまた、プリフェッチバッファの可変的な最大深さを第１の所定の深さ又は第２の所定の深さにセットするよう調整されるかもしれない。
【０００８】
フェッチコントロールユニットはさらに、命令タイプに応じてプリフェッチバッファの可変的な最大深さを設定するかもしれない。この場合、フェッチコントロールユニットは、命令タイプに応じてプリフェッチバッファの可変的な最大深さを第１の所定の深さ又は第２の所定の深さに設定するかもしれない。命令タイプは、３２ビット命令と１６ビット命令の何れかとすることが可能であり、あるいは３２ビット命令と可変長命令の何れかとすることが可能である。
【０００９】
フェッチコントロールユニットはさらに、プリフェッチバッファの可変的な最大深さを動的に調整するかもしれない。この場合、フェッチコントロールユニットは、プリフェッチバッファのスタベーション状態に応じて、可変的な最大深さを増加させるかもしれない。スタベーション状態は、命令スタベーションの頻度が閾値を超えるということであるかもしれず、この場合、フェッチコントロールユニットは、スタベーション状態に応じて可変的な最大深さを増加させる。スタベーション状態はまた、プリフェッチバッファがスタベーションの近傍に平均的にない否かということであるかもしれず、この場合、フェッチコントロールユニットは、スタベーション状態に応じて可変的な最大深さを減少させる。この後者のケースでは、フェッチコントロールユニットは、プリフェッチバッファがプリフェッチバッファの複数のラインの状態をモニタリングすることによって、スタベーションの近傍に平均的にあるか判断するかもしれない。
【００１０】
他の特徴によると、データプロセッサは、レジスタ、プリフェッチバッファ及びフェッチコントロールユニットを有する。レジスタは、データプロセッサが複数のモードの選択されたモードにより動作していることを示す命令プリフェッチコントロール値を格納する。プリフェッチバッファは複数のラインを含み、さらに命令を格納可能な複数のラインのライン数を規定する可変的な最大深さを有する。プリフェッチコントロールユニットは、プリフェッチバッファとレジスタに接続され、命令プリフェッチコントロール値に応じて可変的な最大深さを制御する。
【００１１】
上記特徴によると、フェッチコントロールユニットは、命令プリフェッチコントロール値が第１の値又は第２の値になることに応答して、それぞれプリフェッチバッファの可変的な最大深さを第１の所定の深さ又は第２の所定の深さに設定するかもしれない。あるいは、フェッチコントロールユニットは、命令プリフェッチコントロール値が所定の値になることに応答して、プリフェッチバッファの可変的な最大深さを現在の命令タイプにより少なくとも部分的に決定される第１の所定の深さと第２の所定の深さの何れかに設定するかもしれない。同様に、プリフェッチコントロールユニットは、命令プリフェッチコントロール値が所定の値になることに応答して、プリフェッチバッファの可変的な最大深さを動的に設定するかもしれない。この場合、フェッチコントロールユニットは、プリフェッチバッファのスタベーション状態に応じて、プリフェッチバッファの可変的な最大深さを動的に増減するかもしれない。
【００１２】
さらなる特徴によると、命令を格納可能な複数のラインのライン数を規定する可変的な最大深さと複数のラインとを備えたプリフェッチバッファを有するデータプロセッサにおいて使用される方法が構成される。プリフェッチバッファのスタベーション状態がモニタされる。プリフェッチバッファのスタベーションレートが閾値を超える場合、可変的な最大深さが増加される。プリフェッチバッファがスタベーションの近傍に平均的にない場合、可変的な最大深さが減少される。
【００１３】
上記特徴によると、命令は可変的な最大深さに従って構成されたプリフェッチバッファにフェッチされるかもしれない。さらに、命令はプリフェッチバッファから出力され、データプロセッサによって実行のため復号化されるかもしれない。
【００１４】
図面を参照するに、図１は、本発明の実施例によるフェッチコントロールユニット１１６を有するデータプロセッサ１０２を含むデータ処理システム１００の一部を示すブロック図である。データ処理システム１００は、一般にデータプロセッサ１０２とメモリ１０４を有する。データプロセッサ１０２はマイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、インテリジェントＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラなどとして各種実現可能であることに留意されたい。データプロセッサ１０２は、アドレス、データ及びコントロール信号を伝送する双方向バスを介しメモリ１０４に接続され、ＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）などの何れかの従来のメモリバスアーキテクチャを利用するかもしれない。
【００１５】
データプロセッサ１０２は、メモリマネージメントユニット（ＭＭＵ）／キャッシュ１０６、バスインタフェースユニット（ＢＩＵ）１０８、マルチプレクサ（ＭＵＸ）１１０、プリフェッチバッファ１１２、デコーダ１１４、フェッチコントロールユニット１１６及びレジスタ１１８を有する。一般に、ＭＭＵ／キャッシュ１０６は、“ＶＩＲＴＵＡＬ  ＡＤＤＲＥＳＳ”とラベル付けされたバーチャルアドレスを受け付ける入力と、“ＰＨＹＳＩＣＡＬ  ＡＤＤＲＥＳＳ”とラベル付けされた物理アドレスを提供する第１出力と、データを提供する第２出力と、“ＡＴＴＲＩＢＵＴＥＳ”とラベル付けされた変換されたＶＩＲＴＵＡＬ  ＡＤＤＲＥＳＳに関する属性を提供する第３出力とを有する。ＢＩＵ１０８は、ＭＭＵ／キャッシュ１０６の第１出力に接続される入力と、メモリ１０４に接続される双方向ターミナルと、データ出力ターミナルとを有する。ＭＵＸ１１０は、ＢＩＵ１０８の出力ターミナルに接続される第１入力ターミナルと、ＭＭＵ／キャッシュ１０６の第２出力ターミナルに接続される第２入力ターミナルと、出力ターミナルとを有する。プリフェッチバッファ１１２は、ＭＵＸ１１０の出力ターミナルに接続される入力ターミナルと、出力命令を提供する第１出力ターミナルと、格納されている命令に関する情報を提供する第２出力ターミナルと、“ＩＲ＿ＥＭＰＴＹ”とラベル付けされた信号を提供する第３出力ターミナルとを有する。デコーダ１１４は、プリフェッチバッファ１１２の第１出力ターミナルに接続される入力ターミナルと、復号化された出力信号をデータプロセッサ１０２の実行ユニット（図１には図示せず）に直接的に又は間接的に提供する出力ターミナルとを有する。フェッチコントロールユニット１１６は、以下で詳細に説明されるような方法によりプリフェッチバッファ１１２の第２及び第３出力ターミナルに接続される入力ターミナルと、第１コントロール入力ターミナルと、ＡＴＴＲＩＢＵＴＥＳを受け付けるためＭＭＵ／キャッシュ１０６の第３出力ターミナルに接続される第２コントロール入力ターミナルと、ＶＩＲＴＵＡＬ  ＡＤＤＲＥＳＳを提供するＭＭＵ／キャッシュ１０６の入力ターミナルに接続される出力ターミナルとを有する。レジスタ１１８は、フェッチコントロールユニット１１６の第１コントロール入力ターミナルに接続される出力ターミナルを有する。
【００１６】
全体的な処理において、データプロセッサ１０２は、命令スタベーションを回避するためのプロフェッチバッファ１１２を使用するハイパフォーマンスマイクロプロセッサである。フェッチコントロールユニット１１６は、プリフェッチバッファ１１２の状態をモニタし、命令フェッチを開始するためバーチャルアドレスを生成する。ＶＩＲＴＵＡＬ  ＡＤＤＲＥＳＳを受け付けることに応答して、ＭＭＵ／キャッシュ１０６はまず、ＭＭＵ／キャッシュ１０６に含まれるＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）から格納されている変換にアクセスすることによって、バーチャルアドレスから物理アドレスへの変換を実行する。変換がＴＬＢにない場合、ＭＭＵ／キャッシュ１０６はメモリ１０４に格納されているページテーブルから対応する変換をロードするため、テーブル探索手順を開始する。ＭＭＵ／キャッシュ１０６は、ＴＬＢの変換を利用してアドレス変換と共に属性チェックを実行し、選択されたページの属性をＡＴＴＲＩＢＵＴＥＳ信号としてフェッチコントロールユニット１１６に提供する。ＭＭＵ／キャッシュ１０６がアドレス変換を実行した後、ＭＭＵ／キャッシュ１０６のキャッシュ部分が、アクセスされた命令が存在するか確認するためチェックされる。命令がキャッシュにあり、キャッシュヒットとして知られる状態にある場合、ＭＭＵ／キャッシュ１０６は、ＭＵＸ１１０の第２入力にアクセスされるデータを提供し、プリフェッチバッファ１１２への入力のためそれが選択される。データがＭＭＵ／キャッシュ１０６に存在せず、キャッしミスとして知られる状態にある場合、ＭＭＵ／キャッシュ１０６はＰＨＹＳＩＣＡＬ  ＡＤＤＲＥＳＳをＢＩＵ１０８に提供することによってメモリ１０４にアクセスする。ＢＩＵ１０８は、ＰＨＹＳＩＣＡＬ  ＡＤＤＲＥＳＳと適切なコントロール信号をメモリ１０４に提供することによってバスアクセスを実行する。これに応答して、メモリ１０４は、データバスを介しリクエストされた命令をＭＵＸ１１０の第１入力に提供し、これにより、リクエストされた命令はプリフェッチバッファ１１２に提供される。命令はまた以降の利用のためＭＭＵ／キャッシュ１０６のキャッシュに格納されるが、この処理は従来技術によるものであり、さらには説明されないことに留意されたい。
【００１７】
プリフェッチバッファ１１２は、図１に示される代表的なライン１２２，１２４，１２６，１２８，１３０などのライン又はレジスタ１２０群を有する。実現形態に応じて、ライン１２０の本数は可変的なものであるが、図示された実施例ではプリフェッチバッファ１１２は１０本のラインを有する。プリフェッチバッファ１１２の最後のラインであるライン１２２は、デコーダ１１４に提示するための次の命令（又は命令長が１ラインを超える場合、次の命令の一部）を含み、“ＩＮＳＴＲＵＣＴＩＯＮ  ＲＥＧＩＳＴＥＲ”と呼ばれる。ライン群１２０の各ラインは、命令長が１ラインを超える場合、命令又はその一部を格納することが可能である。命令は、ＦＩＦＯ形式によりプリフェッチバッファ１１２を介しシフトされ、デコーダ１１４により読まれる各命令に対して１命令だけ進捗される。
【００１８】
プリフェッチバッファ１１２はまた、バッファがフルであるとみなされると、命令を格納可能なプリフェッチバッファ１１２のライン１２２，１２４，１２６，１３０の本数を表す可変的な最大深さを有する。命令レジスタ１２２が最後の（又は最も古い）位置であるため、可変的な最大長は、命令を格納可能なライン群１２０の最初の（又は最も新しい）位置を決定する。後述されるように、最大バッファ深さは、効果的にはプリフェッチバッファ１１２のすべてのラインより少なくすることが可能である。
【００１９】
プリフェッチコントロールユニット１１６は、以下でより詳細に説明されるようなプログラムカウンタ、インクリメントロジック、各種デコーダ及びバッファ状態マシーンを含む。フェッチコントロールユニット１１６は、プリフェッチバッファ１１２の第１ライン（フェッチコントロールユニット１１６により設定される可変的な最大深さにより決定される）をモニタし、当該ラインがエンプティであるとき命令フェッチを開始する。フェッチコントロールユニット１１６は、ＶＩＲＴＵＡＬ  ＡＤＤＲＥＳＳを生成し、リクエスト信号をＭＭＵ／キャッシュ１０６に提供することによって命令フェッチを開始し、最終的には、次の命令をプリフェッチバッファ１１２の利用可能なラインのうち最も古いラインにロードする。
【００２０】
レジスタ１１８は、フェッチコントロールユニット１１６とプリフェッチバッファ１１２の処理を規定する命令プリフェッチコントロール値を格納する命令プリフェッチコントロール（ＩＰＣ）フィールドとして知られる２ビットのフィールド１２０を含む。フィールド１２０の符号化がテーブル１に示される。
【表１】
2009530753.tif 000003
最初の２つのモード（それぞれＩＰＣ［１：０］＝００又は０１）は、フェッチコントロールユニット１１６にそれぞれ１０ライン及び４ラインにより最大バッファ深さを設定させる。最大バッファ深さを１０ラインに設定することによって、オペレーティングシステムは、命令スタベーションの可能性を最小にするが、不必要な命令フェッチにより電力消費のコストを増大させる。あるいは、最大バッファ深さを４ラインに設定することによって、オペレーティングシステムは、電力消費を低減するが、ときにはスタベーションを生じさせ、パフォーマンスを低下させる。
【００２１】
第３モード（ＩＰＣ［１：０］＝１０）では、最大バッファ深さは現在の命令サイズにより設定される。従って、現在の命令サイズが３２ビットである場合、フェッチコントロールユニット１１６は、最大バッファ深さを１０バッファに設定する。しかしながら、現在の命令サイズが可変長である場合、フェッチコントロールユニット１１６は、最大バッファ長を５バッファに設定する。フェッチコントロールユニット１０６は、最後の命令フェッチによりアクセスされたメモリページの命令フォーマットを示すため、ＭＭＵ／キャッシュ１０６のＭＭＵからＡＴＴＲＩＢＵＴＥ信号を受け取ることによって、現在の命令サイズを決定する。
【００２２】
特定の例では、データプロセッサ１０２は、Ｆｒｅｅｓｃａｌｅ  Ｃｏｒｐｏｒａｔｉｏｎにより販売されているマイクロプロセッサのＰｏｗｅｒＰＣファミリの“ＢｏｏｋＥ”命令セットからの３２ビット命令か、可変長符号化（ＶＬＥ）を有する命令を実行するマイクロプロセッサである。他の実施例では、フェッチコントロールユニット１１６は、いわゆる“ＡＲＭ”命令セットの３２ビット命令を実行する際には１０バッファ、又はＡｄｖａｎｃｅｄ  ＲＩＳＣ  Ｍａｃｈｉｎｅｓ，Ｌｔｄ．により設計されたマイクロプロセッサにおいて使用されるいわゆる“Ｔｈｕｍｂ”命令セットの１６ビット命令を実行する際には５バッファを提供することが可能である。しかしながら、これら２つの命令セットは単なる一例に過ぎないことは明らかである。
【００２３】
さらに、何れのタイプの命令が実装されているかを決定する方法はまた様々である。図示されたプロセッサでは、ＭＭＵ／キャッシュ１０６は、ページテーブルにおける対応する属性により命令タイプを特定し、フェッチコントロールユニット１１６は、ＡＴＴＲＩＢＵＴＥＳの対応する１つに応じてプリフェッチバッファ１１２の深さを制御する。他のＡＲＭ／Ｔｈｕｍｂの実施例では、フェッチコントロールユニット１１６は、最後の命令フェッチによりアクセスされるメモリページの属性を調べることによってでなく、ブランチ及びエクスチェンジ命令として知られるＡＲＭ命令群とＴｈｕｍｂ命令群との間をスイッチする特別な命令を復号化することに基づき、上記２つの最大プリフェッチバッファ深さの間のスイッチする行うことが可能である。この場合、デコーダ１１４は、ブランチ及びエクスチェンジ命令の復号化に応答して、ＡＲＭ／ＴＨＵＭＢコントロール信号をフェッチコントロールユニット１１６に提供する。
【００２４】
ハードウェアダイナミックモードとして知られる第４モード（ＩＰＣ［１：０］＝１１）では、フェッチコントロールユニット１１６は、最大プリフェッチバッファ深さを動的に設定する。ハードウェアダイナミックモードでは、可変的な最大深さは以下のように設定される。フェッチコントロールユニット１１６は、エンプティであることを示すＩＲ＿ＥＭＰＴＹ信号を命令レジスタ１２２から受け付け、それの内部バッファ状態マシーンをモニタすることによって、命令スタベーション状態を検出する。フェッチコントロールユニット１１６は、スタベーションを許容レベルまで低下させるため、最大プリフェッチバッファ深さを動的に調整する。スタベーションレートが閾値を超える場合、フェッチコントロールユニット１１６は、最大バッファ深さを１ラインだけ増加する。フェッチコントロールユニット１１６は、スタベーションレートがもはや閾値を超えないと判断されるまで、この処理を繰り返す。
【００２５】
他方、ハードウェアダイナミックモードでは、フェッチコントロールユニット１１６はまた、プリフェッチバッファ１１２がスタベーションの近くで動作していないと判断したことに基づき、可変的な最大深さを選択的に減少する。この状態を判断する１つの方法は、フェッチコントロールユニット１１６がプリフェッチバッファ１１２の最後のステージにおけるすべてのライン又は少なくとも複数のラインをモニタすることである。その後、それは経時的に平均化されたバッファの充填度を閾値を比較することによって、“スタベーションに近くない”としてプリフェッチバッファ１１２を判定する。フェッチコントロールユニット１１６がプリフェッチバッファ１１２が“スタベーションに近くない”状態にあると判断した場合、フェッチコントロールユニット１１６は可変的な最大深さを減少させる。
【００２６】
これらのモードの利用性は、パフォーマンスに悪影響を与えることなく電力消費を低減するためのフレキシビリティをユーザに提供する。最初の２つのモードは、明示的なオペレーティングシステム又はソフトウェアが最大プリフェッチバッファ深さを制御することを可能にする。第３モードは、最大プリフェッチバッファ深さが命令タイプにより決定されるのを可能にする。第４モードは、データプロセッサ１０２上で実行されるソフトウェアが変化するに従って変換するプリフェッチバッファ１１２など、プロセッサの状態に応じてハードウェアが最大プリフェッチバッファ深さを動的に調整することを可能にする。最大プリフェッチバッファ深さの明示的なソフトウェア制御とハードウェア制御の両方の利用性は、パフォーマンスと電力消費との間の最適なバランスを達成するフレキシビリティの向上をユーザに提供する。
【００２７】
図２は、図１のデータプロセッサ１０２の命令プリフェッチバッファ深さのハードウェア動的制御に利用可能な一例となる方法を示すフロー図２００である。スローはボックス２０２からスタートする。判定ボックス２０４において、フェッチコントロールユニット１１６は、プリフェッチバッファ１１２がプリフェッチバッファ１１２のライン１２２からのＩＲ＿ＥＭＰＴＹ信号をサンプリングすることによってエンプティであるか判断する。プリフェッチバッファ１１２がエンプティである場合（ＩＲ＿ＥＭＰＴＹが真である場合）、フローは判定ボックス２０６に移行する。判定ボックス２０６において、計算されたスタベーションレートが閾値を超えない場合、フローは判定ボックス２０４に戻る。しかしながら、計算されたスタベーションレートが閾値を超える場合、フローはステップ２０８に移行する。ステップ２０８において、フェッチコントロールユニット１１６は、１だけインクリメントすることなどによって最大バッファ長を増加させ（それがすでにステップ１２０における最大ライン数に等しくなっていないと仮定する）、判定ボックス２０４に戻る。
【００２８】
プリフェッチバッファ１１２がエンプティでない場合（ＩＲ＿ＥＭＰＴＹが偽である場合）、フローは判定ボックス２１０に移行する。判定ボックス２１０は、プリフェッチバッファ１１２が“スタベーションに近くない”か判断する。例えば、フェッチコントロールユニット１１６は、プリフェッチバッファ１１２の最後の数エントリをモニタし、それらのすべてが有効な命令を含んでいるか判断する。特定の例では、フェッチコントロールユニット１１６は、すべてのライン１２２，１２４，１２６，１２８が有効である場合、プリフェッチバッファ１１２はスタベーションに近くないと判断する。この“スタベーションに近くない”という状態は、現在実行されているソフトウェアが現在割り当てられているのと同数のスタベーションを回避するためのプリフェッチバッファを必要としないことを示し、フロー命令の変更頻度、メモリアクセスなどの特性の結果となるであろう。“スタベーションに近くない”という質問への回答がＮＯである場合、すなわち、プリフェッチバッファ１１２がスタベーションの近くで動作している場合、フローは判定ボックス２０４に戻る。しかしながら、回答がＹＥＳである場合、フローはボックス２１２に移行し、当該時点で、フェッチコントロールユニット１１６は可変的な最大深さを減少させ、判定ボックス２０４に戻る。
【００２９】
図２の方法を実現するため、フェッチコントロールユニット１１６は、各種カウンタ、状態マシーンなどを維持する必要がある。これらの構成の実現は、当業者には明らかであろう。さらに、フェッチコントロールユニット１１６は、モード間の切り替え時に、プリフェッチバッファ１１２の状態と共に、それの内部状態マシーンをモニタする必要がある。例えば、フェッチコントロールユニットは、“スタベーションに近くない”状態が存在すると判断すると、可変的な最大バッファ深さを即座に減少させることはできず、新たな深さ内にプリフェッチバッファ１１２がドレインするようにそれを減少させることしかできないかもしれない。
【００３０】
上記開示された構成は、限定的なものでなく例示的なものとみなされるべきであり、添付した請求項は、本発明の真の趣旨及び範囲内に属するすべての変更、改良及び他の実施例をカバーすることが意図される。従って、法律により可能とされる最大範囲まで、本発明の範囲は以下の請求項の最も広い許容される解釈とそれらの均等により決定されるべきであり、上述された記載により限定されるものでない。
【図面の簡単な説明】
【００３１】
【図１】図１は、本発明の実施例によるフェッチコントロールユニットを有するプロセッサを含むデータ処理システムの一部を示すブロック図である。
【図２】図２は、図１のプロセッサの命令プリフェッチバッファ深さのハードウェア動的制御を示すフロー図である。
【図１】
2009530753.tif 000004
【図２】
2009530753.tif 000005
【国際調査報告】
2009530753.tif 000006