(57)【特許請求の範囲】
【請求項１】
命令のラインをプリフェッチする方法であって、
第１のキャッシュ中のミスのインジケーションを受け取ることを備え、前記ミスは、命令のフェッチアドレスに関連付けられ、
前記方法はさらに、
前記インジケーションに応答して、
前の命令のアドレスに関して、前記フェッチアドレスが連続的であるか否かを判定することと、
前記前の命令のアドレスに関して、前記フェッチアドレスが非連続的であることを条件として、前記フェッチアドレスに基づいて、第２のキャッシュから第１の命令のラインをフェッチし、前記第２のキャッシュから第２の命令のラインをプリフェッチすることと、または、
前記前の命令のアドレスに関して、前記フェッチアドレスが連続的であることを条件として、前記第２の命令のラインをプリフェッチすることなく、前記フェッチアドレスに基づいて、前記第２のキャッシュから前記第１の命令のラインをフェッチすることとを備える方法。
【請求項２】
前記第２の命令のラインをプリフェッチすることは、前記第１の命令のラインと前記第２の命令のラインとを含む長データ転送を要求することを備える請求項１に記載の方法。
【請求項３】
前記命令は、前記前の命令の実行の後にフェッチされる請求項１に記載の方法。
【請求項４】
前記フェッチアドレスは、前記第１のキャッシュに結合されたプロセッサ内のロジックによって、または、前記フェッチアドレスを前記アドレスと比較することによって、非連続的であると判定される請求項１に記載の方法。
【請求項５】
前記フェッチアドレスに関連付けられた非連続動作は、分岐動作である請求項１に記載の方法。
【請求項６】
前記第２の命令のラインは、前記第１のキャッシュ中のミスの位置をさらに条件としてプリフェッチされる請求項１に記載の方法。
【請求項７】
プリフェッチされることになる前記第２の命令のラインは、前記第１の命令のラインに対して次の連続キャッシュラインであるか、または、前記第１の命令のラインに対して非連続キャッシュラインであるかを、分岐履歴テーブルまたは分岐予測ロジックからの情報に基づいて判定することをさらに備える請求項１に記載の方法。
【請求項８】
前記フェッチアドレスに関連付けられた動作は、非連続的であり、復帰動作またはサブルーチンコール動作を含む請求項１に記載の方法。
【請求項９】
前記命令は、前記前の命令の実行に応答してフェッチされる請求項１に記載の方法。
【請求項１０】
システムであって、
ミスイベントを示す通知を生成するように構成された命令キャッシュを備え、前記ミスイベントは、命令のフェッチアドレスに関連付けられ、
前記システムはさらに、
前記通知に応答して、
前の命令のアドレスに関して、前記フェッチアドレスが連続的であるか否かを判定するようにと、
前記フェッチアドレスが非連続的であることを条件として、前記フェッチアドレスに基づいて、第２のキャッシュから第１の命令のラインをフェッチし、前記第２のキャッシュから第２の命令のラインをプリフェッチするようにと、または、
前記フェッチアドレスが連続的であることを条件として、前記第２のキャッシュからの前記第２の命令のラインをプリフェッチすることなく、前記フェッチアドレスに基づいて、前記第２のキャッシュからの前記第１の命令のラインをフェッチするように構成されたロジックを備えるシステム。
【請求項１１】
前記フェッチアドレスは、前記アドレスに対して非連続的であるか否かを判定するように構成されたキャッシュ制御ユニットをさらに備える請求項１０に記載のシステム。
【請求項１２】
前記プリフェッチされた第２の命令のラインは、前記命令キャッシュへの長データ転送において提供される請求項１０に記載のシステム。
【請求項１３】
プリフェッチされることになる前記第２の命令のラインは、前記第１の命令のラインに対して次の連続キャッシュラインを備えているか否かを、分岐履歴テーブルまたは分岐予測ロジックからの情報に基づいて判定するようにさらに構成されている請求項１０に記載のシステム。
【請求項１４】
方法であって、
第１のキャッシュ中のミスの通知を受け取ることを備え、前記ミスは、命令のフェッチアドレスに関連付けられ、
前記方法はさらに、
前記通知に応答して、
前の命令のアドレスに関して、前記フェッチアドレスが連続的であるか否かを判定することと、
前記前の命令のアドレスに関して、前記フェッチアドレスが非連続的であることに基づいて、第１の動作を実行することと、前記第１の動作は、前記フェッチアドレスに基づいて、第２のキャッシュから第１の命令のラインをフェッチし、前記第２のキャッシュからの第２の命令のラインをプリフェッチすることを備え、または、
前記前の命令のアドレスに関して、前記フェッチアドレスが連続的であることに基づいて、第２の動作を実行することとを備え、前記第２の動作は、前記第２の命令のラインをプリフェッチすることなく、前記フェッチアドレスに基づいて、前記第２のキャッシュから前記第１の命令のラインをフェッチすることを備える方法。
【請求項１５】
プリフェッチされることになる前記第２の命令のラインは、前記第１の命令のラインに対して非連続キャッシュラインを備えているか否かを、分岐履歴テーブルまたは分岐予測ロジックからの情報に基づいて判定することをさらに備える請求項１４に記載の方法。
【請求項１６】
前記命令は、前記前の命令に関して次の命令である請求項１４に記載の方法。
【請求項１７】
フェッチアドレスキャッシュライン位置が閾値キャッシュライン位置を越えているか否かを判定することをさらに備える請求項１４に記載の方法。
【請求項１８】
前記第１の動作は、前記フェッチアドレスキャッシュライン位置が前記閾値キャッシュライン位置を越えていることを条件とし、
前記第２の動作は、前記フェッチアドレスキャッシュライン位置が前記閾値キャッシュライン位置を越えていないことを条件とし、
前記フェッチアドレスキャッシュライン位置は、前記フェッチアドレスに関連し、前記閾値キャッシュライン位置は、前記第１の命令のラインに関連している、請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に命令キャッシュの分野に関し、特に、命令キャッシュ内のミスにおける命令プリフェッチに関する。
【背景技術】
【０００２】
例えば携帯電話、ラップトップコンピュータ、携帯情報端末（ＰＤＡ）等のような多くのポータブル製品は、例えば通信プログラム及びマルチメディアプログラムのようなプログラムを実行するプロセッサを用いる。このような製品の処理システムは、命令及びデータを格納するメモリ及びプロセッサコンプレックスを含む。大容量メインメモリは通常、プロセッササイクル時間と比較して緩慢なアクセス時間を有する。その結果、プロセッサと密接に位置づけられた高性能低容量のキャッシュを用いると、従来、キャッシュメモリの性能及び容量に基づいて、階層内にメモリコンプレックスが構成された。例えば、レベル１命令キャッシュ及びレベル１データキャッシュは一般に、プロセッサに直接接続されるであろう。一方、レベル２統一キャッシュは、レベル１（Ｌ１）命令キャッシュ及びＬ１データキャッシュに接続される。更に、システムメモリは、レベル２（Ｌ２）統一キャッシュに接続される。レベル１命令キャッシュは通常、プロセッサ速度で動作し、レベル２統一キャッシュ動作は、レベル１キャッシュよりも緩慢に動作するが、システムメモリより高速なアクセス時間を有する。代替メモリ構成は、例えば、Ｌ１及びＬ２キャッシュに加えてレベル３キャッシュを有するメモリ階層を有する。別のメモリ構成は、レベル１キャッシュ及びシステムメモリのみを用いうる。
【０００３】
なぜ命令キャッシュにメモリ階層を用いることができるかの根拠となる原理の１つは、命令は、メモリ内の連続位置からアクセスされる傾向があるということである。コードの最後に用いられたセクションを保持するキャッシュを有することによって、プロセッサは、高い性能レベルで実行することができる。プログラムはまた、分岐、コール、及び復帰型命令を含み、例えば割込みのような非連続動作をサポートするので、連続局所性の原理は、コードの比較的短いセクションのみでしか維持されない。このような非連続動作によって、命令キャッシュへの命令フェッチはミスを起こし、命令フェッチは、高いメモリ容量と緩慢なアクセス時間で動作する、次の上位メモリレベルに適用される。ミスは、プロセッサに、命令を待機する機能を停止させる恐れがある。プロセッサ性能を高く保つために、ミスレートは低くなければならない。
【０００４】
命令キャッシュは一般に、命令キャッシュ内の単一アドレスに位置付けられた複数の命令によって構成される。この複数の命令は一般に、キャッシュライン又は単にラインと呼ばれる。ミスは、キャッシュライン内の任意の場所への命令アクセスにおいて発生しうる。ミスが発生すると、必要な命令をフェッチするだけではなく、ミスが起こった命令からキャッシュラインの末尾までのキャッシュラインの残りもフェッチされることがある。いくつかのシステムにおいて、このプリフェッチ技術は更に、ミスが起こると、常にキャッシュラインの残り及び次のキャッシュラインをプリフェッチすることに及ぶ。次のキャッシュラインを常にプリフェッチする従来の技術は、次のキャッシュラインが、まもなく必要になる命令を含むという仮定に基づいている。次のキャッシュライン内の命令を用いるこの仮定は、例えば、ライン内に条件付分岐があり、この条件によって、分岐が次の連続命令まで失敗する場合にも有効である。常に次のキャッシュラインをプリフェッチすることにより、ミスを低減することができる。
【０００５】
命令の連続アクセスの局所性原理は、やはりプログラム内のいくつかのポイントで失敗し、分岐、コール、及び復帰等による非連続動作によってミスが発生する。連続アクセスによるミスは、例えば、命令がキャッシュラインの末尾でフェッチされ、次の連続命令キャッシュライン内に存在すべき次の連続命令がキャッシュ内に存在しない場合、発生しうる。非連続アクセスによるミスは、例えば、分岐命令があり、分岐がプログラムアドレスを新たな位置に変更し、新たな位置の命令がキャッシュ内に存在しない場合、発生しうる。次のキャッシュラインを常にプリフェッチする従来の技術は、用いない命令をフェッチし、それによって、メモリアクセス帯域幅の不必要な損失、電力使用の増加、及び低プロセッサ性能をもたらす。
【発明の概要】
【０００６】
本開示は、ミスが発生した場合、ミスの割合と、メモリアクセス帯域幅と、電力消費とを低減するプリフェッチ技術へのニーズが存在することを認識する。本発明の１つの実施形態は、命令プリフェッチのための方法を提供する。ミスが発生すると、フェッチアドレスが命令キャッシュ内でミスしたという通知が受け取られる。ミスの原因になったフェッチアドレスの属性が判定され、その属性に基づいて、命令のラインがプリフェッチされる。
【０００７】
本発明の別の実施形態は、命令キャッシュ及びプリフェッチシステムを扱う。命令キャッシュは、フェッチアドレスがミスしたという通知を生成するように構成される。プリフェッチ判定ロジックは、ミスの原因になったフェッチアドレスの属性を判定するように構成され、プリフェッチロジックは、属性に基づいて命令のラインをプリフェッチするように構成される。
【０００８】
本発明の別の実施形態は、メモリシステムを扱う。メモリシステムは、フェッチアドレスがミスしたという通知を生成するように構成された命令キャッシュを用いる。プリフェッチ判定ロジックは、ミスの原因になったフェッチアドレスの属性を判定し、ミスしたフェッチアドレスと属性とに基づいてミス情報を生成するように構成される。システムメモリ階層は、ミスしたフェッチアドレスに関連する命令によって、ミス情報に応答するように構成される。
【０００９】
本発明の様々な実施形態が例示によって示され説明される以下の発明を実施する形態から、当業者には、本発明の他の実施形態が容易に明らかになるであろうことが理解される。理解されるように、本発明は、他の実施形態及び異なる実施形態も可能であり、いくつかの詳細は、全て本発明から逸脱することなく様々な他の観点における変更が可能である。従って、図面及び発明を実施する形態は、本質的に例示的であり、限定的ではないと見なされる。
【図面の簡単な説明】
【００１０】
【図１】図１は、無線通信システムを示す。
【図２】図２は、命令キャッシュラインのプリフェッチが、メモリ効率の良い動作のためのヒューリスティックに基づいて適用されうるプロセッサ及びメモリコンプレックスの機能ブロック図である。
【図３】図３は、低複雑性プリフェッチ処理を示すフローチャートである。
【発明を実施する形態】
【００１１】
添付図面と関連して以下で説明される発明を実施する形態は、本発明の様々な典型的な実施形態の説明として意図されており、本発明が実施されうる実施形態のみを表すことは意図されていない。発明を実施する形態は、本発明の完全な理解を提供する目的のために、具体的な詳細を含む。しかし、本発明はこれら具体的な詳細なしでも実現されうることが当業者には明らかであるだろう。いくつかの例において、周知の構成及びデバイスは、本発明の概念を不明確にすることを避けるためにブロック図形式で示される。
【００１２】
図１は、本開示の実施形態が有利に用いられうる典型的な無線通信システム１００を示す。例示目的のために、図１は、３つの遠隔ユニット１２０、１３０、及び１５０と、２つの基地局１４０とを示す。典型的な無線通信システムは、更に多くの遠隔ユニット及び基地局を有することができることが理解されるであろう。遠隔ユニット１２０、１３０、及び１５０は、以下で更に説明されるような、本発明を具現化するために適した構成要素１２５Ａ、１２５Ｃ、及び１２５Ｂによって表されるハードウェア部品、ソフトウェア構成要素、又はその両方をそれぞれ含む。図１は、基地局１４０から遠隔ユニット１２０、１３０、及び１５０への順方向リンク信号１８０と、遠隔ユニット１２０、１３０、及び１５０から基地局１４０への逆方向リンク信号１９０とを示す。
【００１３】
図１では、遠隔ユニット１２０は、無線ローカル・ループ・システムにおけるモバイル電話として示され、遠隔ユニット１３０は、無線ローカル・ループ・システムにおけるポータブル・コンピュータとして示され、遠隔ユニット１５０は、無線ローカル・ループ・システムにおける位置固定式遠隔ユニットとして示される。例えば遠隔ユニットは、代わりに、携帯電話、ページャ、ウォーキー・トーキー、ハンドヘルドパーソナル通信システム（ＰＣＳ）ユニット、例えば携帯情報端末のようなポータブル・データ・ユニット、あるいは例えば計測装置のような位置固定式データユニットであることができる。図１は本発明の教示に従う典型的な遠隔ユニットを示すが、本発明は、示されたこれら典型的なユニットに限定されない。本発明は、命令キャッシュ及びシステムメモリを備えるプロセッサを有する任意のデバイスによって適切に用いることができる。
【００１４】
図２は、メモリ効率の良い動作のためのヒューリスティックスに基づいて、命令キャッシュラインのプリフェッチが適用されうるプロセッサ及びメモリコンプレックス２００の機能ブロック図である。プロセッサ及びメモリコンプレックス２００は、プロセッサ２０２と、直接マップされたレベル１（Ｌ１）命令キャッシュ（Ｉキャッシュ）２０３と、システムメモリ階層２０８とを含む。Ｌ１命令Ｉキャッシュ２０３は、Ｌ１  Ｉキャッシュラインアレイ２０４と、Ｌ１  Ｉキャッシュ制御ユニット２０６とを備える。Ｌ１  Ｉキャッシュ制御ユニット２０６は、例えばセット連想キャッシュのような様々なタイプのキャッシュで用いられうるような、命令タグマッチングのための命令コンテンツアドレス指定可能メモリと、プリフェッチロジックとを含むことができる。プロセッサコンプレックスに接続することができる周辺デバイスは、説明の明確性のために図示しない。プロセッサ及びメモリコンプレックス２００は、Ｌ１  Ｉキャッシュ２０３及びシステムメモリ階層２０８に格納されたプログラムコードを実行するために、構成要素１２５Ａ乃至１２５Ｃによって適切に用いられうる。
【００１５】
Ｌ１  Ｉキャッシュラインアレイ２０４は、例えばキャッシュライン２１０及び２１１のような複数のラインを含むことができる。各ラインはそれぞれ、複数の命令（Ｉ０、Ｉ１、・・・、Ｉ７）２１２乃至２１９から成る。タグ２００と、例えば有効ビットのようなライン状態（ＬＳ）２２１とが各ラインに関連付けられる。キャッシュライン２１０及び２１１はそれぞれ、ラインアドレス２２２及び２２３のＬ１  Ｉキャッシュラインアレイ２０４内に存在する。Ｌ１  Ｉキャッシュ制御ユニット２０６は、キャッシュラインにアクセスするために命令アドレス（ＩＡ）インタフェース２２５を介して受け取られる命令アドレス（ＩＡ）２２４に応答するアドレス制御ロジックを含む。ＩＡ２２４は、タグ２２６、ラインアドレス２２８、命令「Ｉ」フィールド２３２、及びバイト「Ｂ」フィールド２３４から成ることができる。ラインアドレス２２８は、「ライン＋」フィールド２２９及び偶数「Ｅ」ビット２３０から成る。
【００１６】
プロセッサ及びメモリコンプレックス２００内の命令をフェッチするために、プロセッサ２０２は、フェッチされることが望まれる命令の命令アドレス（ＩＡ）２２４を生成し、そのフェッチアドレスをＬ１  Ｉキャッシュ制御ユニット２０６へ送る。受信したＩＡ２２４に基づいて、Ｌ１  Ｉキャッシュ制御ユニット２０６は、命令がＬ１  Ｉキャッシュラインアレイ２０４内に存在するかをチェックし調べる。このチェックは、例えば、ＩＡ２２４によって選択されたようなライン２１０内の一致するタグ２３６をチェックする比較ロジックを用いることにより達成される。例えば有効ビット２３８のようなライン状態ビット（ＬＳ）２２１を確認することによって、ラインが有効命令を含むかに対しても判定が行われる。命令が存在する場合、一致すなわちヒットが生じ、Ｌ１  Ｉキャッシュ制御ユニット２０６は、Ｌ１  Ｉキャッシュ２０３内に命令が存在することを示す。命令が存在しない場合、不一致すなわちミスが発見され、Ｌ１  Ｉキャッシュ制御ユニット２０６は、命令がＩキャッシュ２０３内に存在しないことを示すミスインジケーションを提供する。
【００１７】
命令が存在する場合、その命令フェッチアドレスの命令が、Ｌ１  Ｉキャッシュラインアレイ２０４から選択される。命令はその後、命令出力バス２４０でプロセッサ２０２へ送られる。
【００１８】
命令が命令キャッシュ内に存在しない場合、ミス情報が、ミス信号経路２４２を介してメモリ階層２０８へ提供され、ミスが発生したことを示す。レベル１  Ｉキャッシュ２０３内のミスを検出すると、プロセッサ及びメモリコンプレックス２００は、望まれる命令をフェッチしようと試み、以下で更に詳しく説明するように、システムメモリの上位レベルから追加の命令をプリフェッチすることができる。例えば命令は、システムメモリ階層２０８に位置するレベル２（Ｌ２）統一キャッシュからプリフェッチされうる。ミスによって所望となった命令及び任意のプリフェッチされた命令は、メモリデータバスインタフェース２４４でシステムメモリ階層２０８から提供される。
【００１９】
ミスが発生すると、ミスの原因となったフェッチアドレスに関連する１つ又は複数の属性が判定されうる。例えばフェッチアドレスは、連続アクセス又は非連続アクセスの何れかのターゲットとして分類されうる。フェッチアドレスは更に、例えばそのアドレスがキャッシュラインのうちのＸ％を越えるかによっても分類されうる。フェッチアドレスはまた、そのアドレスが命令キャッシュ内の偶数アドレスであるかに基づいて分類されることもある。これらの分類及びその他の分類は、いつプリフェッチするかをインテリジェントに決定するヒューリスティックの形式で併用されうる属性を定義する。インテリジェントにプリフェッチすることによって、電力が節約され、メモリ帯域幅が改善され、ミスの割合が低減され、一般にプロセッサ及びシステムの性能は改善されうる。
【００２０】
ミスの原因となったフェッチアドレスに関連する属性は、フェッチアドレスから動的に決定することができる。例えば、フェッチアドレスをモニタすることによって、連続フェッチアドレスか非連続フェッチアドレスかが判定されうる。フェッチアドレス及びキャッシュラインの長さに基づいて、キャッシュライン内のアクセスの位置は、動的に決定することができる。例えば、決定された位置が閾値Ｘ％に等しいか、又はそれを越えた場合、この属性は関連性を有する。また、フェッチアドレス及びキャッシュラインの長さに基づいて、フェッチアドレス内のビットは、アクセスが偶数キャッシュラインへのアクセスであるか奇数キャッシュラインへのアクセスであるかを判定するために用いられうる。これらの属性は、以下で更に詳しく説明される。
【００２１】
１つの実施形態において、命令キャッシュ内のミスに、ミス属性のうちの１つ又は複数が関連している場合、メモリ階層の次のレベルから次の連続キャッシュラインがプリフェッチされる。１つ又は複数のミス属性が関連していない場合、次の連続キャッシュラインはプリフェッチされない。一般に、連続していないキャッシュラインはプリフェッチされうることが留意される。プリフェッチするキャッシュラインの決定は、ミスの属性、プログラムの属性、又はそのような属性の組み合わせに基づくことができる。例えば、分岐履歴テーブル又は分岐予測ロジックからの情報は、命令の連続ラインをプリフェッチするか命令の非連続ラインをプリフェッチするかを判定するために用いられうるプログラムの実行のフローの属性を提供するために用いられるであろう。
【００２２】
別の実施形態において、命令キャッシュ内のミスが、例えば命令キャッシュ内に存在しない命令のアドレスへの分岐、サブルーチンコール等のような非連続ミスによる場合、メモリ階層の次のレベルからの命令のラインがプリフェッチされる。命令キャッシュ内のミスが、例えば命令キャッシュ内に存在しない命令への連続するアクセスのような連続ミスによる場合、プリフェッチ動作は行われない。プリフェッチ動作のアドレスは、命令の連続ライン又は非連続ラインに対しうることも留意される。
【００２３】
別の実施形態において、命令キャッシュ内のミスが、命令キャッシュ内の偶数のアドレスで発生した場合、メモリ階層の次のレベルからの命令のラインがプリフェッチされる。命令キャッシュ内のミスが、命令キャッシュ内の奇数のアドレスで発生した場合、プリフェッチは行われない。
【００２４】
別の実施形態において、命令キャッシュ内のミスが、キャッシュラインのうちのＸ％に等しいアドレス又はそれを越えるアドレスでの非連続ミスによる場合、メモリ階層の次のレベルからの命令のラインがプリフェッチされる。命令キャッシュ内のミスが、キャッシュラインのうちのＸ％に満たないアドレスでのミス、あるいは連続ミスによる場合、プリフェッチは行われない。例えばキャッシュラインのうちの７５％のように、キャッシュラインの末尾付近のフェッチアドレスでミスが発生した場合、メモリ階層の次のレベルからの命令のラインがプリフェッチされる。キャッシュラインのうちの割合Ｘは、試験的手段によって選ばれた値に定めることができる。又はＸは、Ｘ％が、動作中のプログラムに適合できるようにプログラム可能でありうる。例えば、８つの命令から成る命令ライン２１０を備えた図２の典型的な例示の場合、Ｘ％が６２．５％であれば、ラインの６２．５％は、Ｉ４  ２１６、ラインのうちの５つの命令に関連する。ミスが、Ｉ４  ２１６のフェッチアドレス又はそれを越えるフェッチアドレスで発生した場合、プリフェッチ動作が可能である。ミスが、Ｉ３  ２１５のフェッチアドレス又はそれに満たないフェッチアドレスで発生した場合、プリフェッチ動作は可能ではない。代替実施形態において、命令キャッシュ内のミスが、キャッシュラインのうちのＸ％を越えたアドレスでのミスによる場合、プリフェッチが行われる。Ｘ％＝６２．５％である上記例の場合、Ｉ５  ２１７のフェッチアドレス又はそれを越えるフェッチアドレスでミスが発生した場合、プリフェッチが可能である。ミスが、キャッシュラインのうちのＩ４  ２１６に等しいかそれに満たないアドレスである場合、プリフェッチは行われない。
【００２５】
別の実施形態において、ミス属性は、プリフェッチするか否かを判定するために併用されうる。例えば、命令キャッシュ内のミスが、例えば命令キャッシュ内に存在しない命令への分岐、サブルーチンコール等のような非連続ミスによる場合、あるいは命令キャッシュ内のミスが、命令キャッシュ内の偶数のアドレスで発生した場合、メモリ階層の次のレベルからの命令のラインがプリフェッチされる。そうでない場合、ミスが発生しても、プリフェッチは行われない。
【００２６】
プリフェッチするかの判定は、アドレス指定された命令がキャッシュ内に存在するか否かを判定するために、キャッシュアクセスプローブと並行して動作することができるプリフェッチ判定ロジック２４６によって達成される。プリフェッチ判定ロジック２４６は、ミスインジケーション２４８、例えば分岐、コール、又は復帰動作のような非連続動作がミスの原因となったことを示す非連続インジケーション２５０、及びＸ％値２５２を入力として選択し、例えばフェッチされた命令のＩＡ２２４を含むことができる。ミスインジケーション２４８、非連続インジケーション２５０、及びＸ％値２５２は、Ｌ１  Ｉキャッシュ制御ユニット２０６によって提供される。ミスが、非連続フェッチ動作のフェッチアドレスに関連しているという判定は、プロセッサ２０２からの制御２５４から得ることができる。制御２５４は更に、例えば分岐、コール、復帰等のような命令に関連する非連続動作２５６のためのロジックから得ることができる。あるいは、Ｌ１  Ｉキャッシュ制御ユニット２０６は、フェッチが非連続動作に関連しているかを判定するために、現在のフェッチ命令アドレスと以前のフェッチ命令アドレスとを比較することができる。プリフェッチ判定ロジック２４６は、必要に応じて接続された信号によって命令キャッシュ外に位置しうることが留意される。例えばプリフェッチ判定ロジックは、命令アドレス２２４を生成するプロセッサ２０２に、より密接に関連付けられうる。
【００２７】
例えば、フェッチアドレスが偶数アドレスキャッシュラインを示すかを判定するようなその他の属性は、偶数「Ｅ」ビット２３０に基づくことができる。ここで、偶数キャッシュラインの場合、Ｅ＝０である。「Ｅ」ビット２３０アドレスビット位置又はビット値は、命令キャッシュラインアレイ２０４内のラインの長さに依存して変化しうる。図２に示すように、２ビットのＢフィールド２３４は、ワードにおいて最大４バイトを示し、３ビットのＩフィールド２３２は、ラインにおいて最大８ワードを示す。この構成によって、「Ｅ」ビット２３０は、３２バイトのキャッシュラインにアドレス指定された８ワード毎に状態を変化させる。
【００２８】
更なる実施形態において、プリフェッチ判定ロジック２４６は、プリフェッチされるキャッシュラインが既に命令キャッシュ内に存在するかを、キャッシュのプローブに判定させることができる。プリフェッチターゲットに関連するキャッシュラインが既にキャッシュ内に存在する場合、プリフェッチ動作は停止されるか、開始を妨げられる。
【００２９】
プリフェッチが、命令キャッシュに関連するプリフェッチロジックによって開始され、上位レベルのメモリ階層によって応答されると、命令の複数のラインが、例えばメモリデータバス２４４のようなメモリデータバスを介してＬ１  Ｉキャッシュへ転送される。実現されるシグナリングプロトコル及びメモリデータバスインタフェース２４４の物理バス幅に依存して、データは、例えば３２バイト、６４バイト、１２８バイト、２５６バイト、５１２バイト等のような、定められた大きさの量又はパケットで転送されうる。一般に、短いデータパケットの複数の転送は通常、データを構成し送ることによるオーバヘッドによって、大きいデータパケットサイズのバースト転送をするよりも効率が悪い。従って、別の実施形態において、プリフェッチする判定が下されると、例えば２つの個々のデータ転送において、命令の２つのラインをプリフェッチするのではなく、長いデータ転送が必要となる。プリフェッチにおける長いデータ転送によって、短い個別の転送で命令を送るのと比べて、転送時間全体が最小化される。
【００３０】
図３は、低複雑性プリフェッチ処理３００を示すフローチャートである。図３のブロックと、図２の要素との間の典型的な関係は、プロセッサメモリコンプレックス２００からの要素が方法３００を実行するためにどのように適切に協働しうるかを説明することによって示される。
【００３１】
ブロック３０２で、例えばプロセッサ２０２のようなプロセッサが命令をフェッチする。判定ブロック３０４で、フェッチされている命令が命令キャッシュ内に存在するかが判定される。例えばＬ１  Ｉキャッシュ制御ユニット２０６が、命令が存在するかをチェックして調べる。命令が命令キャッシュ内に存在する場合、処理３００は、ブロック３０６でキャッシュ内の命令をフェッチし、その後ブロック３０２へ戻り、次の命令フェッチを待つ。例えば、選択された命令は、命令出力バス２４０に置かれ、プロセッサ２０２内で受け取られる。
【００３２】
命令が命令キャッシュ内に存在しない場合、ミス状況が検出されている。処理３００は判定ブロック３０８へ進み、ここで、現在の命令アドレスに関連する次の連続ラインが既に命令キャッシュ内に存在するかが判定される。このような判定は、Ｌ１  Ｉキャッシュラインアレイ２０４に直接アクセスせずに、Ｌ１  Ｉキャッシュ制御ユニット２０６内で達成することができる。次の連続ラインがＬ１  Ｉキャッシュ内に既に存在する場合、ブロック３１０で、現在の命令アドレスに対して、例えばシステムメモリ階層２０８のようなメモリ階層へフェッチが発行される。処理３００はその後、ブロック３０２へ戻り、次の命令フェッチを待つ。並行して、ブロック３１２で、ミスの原因となったフェッチアドレスの属性が判定される。このような判定は、プリフェッチ判定ロジック２４６によって適切に達成されうる。
【００３３】
次の連続ラインがキャッシュ内に存在しない場合、処理は、判定ブロック３１４へ進み、ここで、ブロック３１２で判定されたミス属性のうちの１つ又は複数が関連するかが判定される。複数の属性が判定されうるが、定められた又はプログラム可能な関数が、適用可能な属性全て又は適用可能な属性のサブセットを選択することができる。ミス属性が関連する場合、処理３００はブロック３１６へ進み、命令及び決定されたプリフェッチキャッシュラインを次のレベルのメモリからフェッチし、ブロック３０２へ戻って次の命令フェッチを待つ。このように、判定ブロック３１４でプリフェッチする判定が下されると、命令の２つのラインをプリフェッチするのではなく、例えば２つの個々のデータ転送において、長いデータ転送が必要とされる。ミス属性が関連しない場合、ブロック３１８で、現在の命令アドレスに関して、例えばシステムメモリ階層２０８のようなメモリ階層へフェッチが発行される。処理３００はその後、ブロック３２０へ戻り、次の命令フェッチを待つ。
【００３４】
本明細書に開示された実施形態の典型的な説明は、直接マップされたキャッシュの実現形態を用いて示された。直接マップされたキャッシュは、例えば単一方向セット連想キャッシュのようなセット連想キャッシュの特別例と見なされうる。本明細書で説明された原理は、例えば４方向セット連想キャッシュ実現形態のようなＮ方向セット連想キャッシュにも適用可能である。同様に、本明細書で説明された原理は、完全連想キャッシュ実現形態にも適用可能である。
【００３５】
本明細書に開示した実施形態に関連して説明された様々な例示的論理ブロック、モジュール、回路、要素、及び／又は構成要素は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）あるいはその他のプログラマブル論理構成要素、ディスクリートゲートあるいはトランジスタロジック、ディスクリートハードウェア部品、又は上述された機能を実現するために設計された上記何れかの組合せを用いて実現又は実行されうる。汎用プロセッサとしてマイクロプロセッサを用いることが可能であるが、代わりに、従来技術によるプロセッサ、コントローラ、マイクロコントローラ、あるいは状態機器を用いることも可能である。プロセッサは、例えばＤＳＰとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアに接続された１つ又は複数のマイクロプロセッサ、又はこのような任意の構成である計算構成要素の組み合わせとして実現することも可能である。
【００３６】
本明細書に開示された実施形態に関連して記述された方法は、ハードウェアによって直接、プロセッサによって実行されるソフトウェアモジュールによって、または、これらの組み合わせによって具現化されうる。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、あるいは当該技術分野で知られているその他の形式の記憶媒体に収納されうる。記憶媒体は、プロセッサがそこから情報を読み取り、またそこに情報を書き込むことができるようにプロセッサに結合されうる。または、記憶媒体はプロセッサに統合されうる。
【００３７】
本発明は、実施形態に関して開示されたが、広範囲の様々な実現形態が、上記記載及び以下の特許請求の範囲と矛盾せず当業者によって用いられうることが理解されるであろう。例えば実施形態は、主にレベル１命令キャッシュに関して開示された。これら実施形態は、レベル２命令キャッシュ、命令をプリフェッチするレベル２統一キャッシュ、又はプロセッサ・メモリ・コンプレックスに適用可能なその他のレベルのメモリ階層を用いて実現することもできる。命令キャッシュは、プロセッサコアに統合されるか、あるいはプロセッサコアに外付けであることができることも理解されるであろう。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
命令プリフェッチのための方法であって、
フェッチアドレスが命令キャッシュ内でミスしたという通知を受け取ることと、
前記ミスの原因になったフェッチアドレスの属性を判定することと、
前記属性に基づいて、命令のラインをプリフェッチすることと
を備える方法。
［Ｃ２］
前記属性は、前記フェッチアドレスが非連続動作のターゲットアドレスであることを示すＣ１に記載の方法。
［Ｃ３］
前記属性は、前記フェッチアドレスが非連続動作のターゲットアドレスであることと、前記ターゲットアドレスは、キャッシュラインのうちのＸ％を越えることとを示すＣ１に記載の方法。
［Ｃ４］
前記属性は、前記フェッチアドレスが、前記命令キャッシュ内の偶数アドレスであることを示すＣ１に記載の方法。
［Ｃ５］
前記属性は、前記フェッチアドレスが非連続動作のターゲットアドレスであること、又は前記フェッチアドレスが前記命令キャッシュ内の偶数アドレスであることを示すＣ１に記載の方法。
［Ｃ６］
前記プリフェッチすることは更に、
前記ミスした命令と、それに関連する命令のラインとを、前記プリフェッチする命令のラインと結合することによって、長データ転送を可能にすること
を更に備えるＣ１に記載の方法。
［Ｃ７］
前記プリフェッチすることは更に、
前記プリフェッチする命令のラインが前記命令キャッシュ内に存在するかを判定することと、
前記プリフェッチする命令のラインが前記命令キャッシュ内に存在しない場合、命令のラインをプリフェッチすることと
を更に備えるＣ１に記載の方法。
［Ｃ８］
前記プリフェッチすることは、
連続動作のターゲットアドレスで前記ミスが発生した原因になったフェッチアドレスを前記属性として判定することと、
前記属性に基づいて、命令のラインをプリフェッチすることをディセーブルすることとを更に備えるＣ１に記載の方法。
［Ｃ９］
前記非連続動作は、前記命令キャッシュに接続されたプロセッサ内のロジックから判定されるＣ２に記載の方法。
［Ｃ１０］
前記非連続動作は、前記フェッチアドレスと前のフェッチアドレスとを比較することによって判定されるＣ２に記載の方法。
［Ｃ１１］
フェッチアドレスがミスしたという通知を生成するように構成された命令キャッシュと、
前記ミスの原因になったフェッチアドレスの属性を判定するように構成されたプリフェッチ判定ロジックと、
前記属性に基づいて命令のラインをプリフェッチするように構成されたプリフェッチロジックと
を備える命令キャッシュ及びプリフェッチシステム。
［Ｃ１２］
前記属性は、前記フェッチアドレスが、非連続動作のターゲットアドレスであることを示すＣ１１に記載の命令キャッシュ及びプリフェッチシステム。
［Ｃ１３］
前記属性は、前記フェッチアドレスが非連続動作のターゲットアドレスであることと、前記ターゲットアドレスがキャッシュラインのうちのＸ％を越えることを示すＣ１１に記載の命令キャッシュ及びプリフェッチシステム。
［Ｃ１４］
前記属性は、前記フェッチアドレスが、前記命令キャッシュ内の偶数アドレスであることを示すＣ１１に記載の命令キャッシュ及びプリフェッチシステム。
［Ｃ１５］
前記属性は、前記フェッチアドレスが非連続動作のターゲットアドレスであること、又は前記フェッチアドレスが前記命令キャッシュ内の偶数アドレスであることを示すＣ１１に記載の命令キャッシュ及びプリフェッチシステム。
［Ｃ１６］
前記命令キャッシュに接続されたプロセッサであって、前記フェッチアドレスを生成するように構成されたプロセッサと、
非連続分岐型動作を示す制御信号を生成するように構成された、前記プロセッサ内のロジックと
を更に備えるＣ１１に記載の命令キャッシュ及びプリフェッチシステム。
［Ｃ１７］
フェッチアドレスがミスしたという通知を生成するように構成された命令キャッシュと、
前記ミスの原因になったフェッチアドレスの属性を判定し、前記ミスしたフェッチアドレスと前記属性とに基づいてミス情報を生成するように構成されたプリフェッチ判定ロジックと、
前記ミスしたフェッチアドレスに関連する命令によって、前記ミス情報に応答するように構成されたシステムメモリ階層と
を備えるメモリシステム。
［Ｃ１８］
前記ミスしたフェッチアドレスに関連する命令は、プリフェッチされた命令を含むＣ１７に記載のメモリシステム。
［Ｃ１９］
前記ミスしたフェッチアドレスに関連する命令は、バースト転送によって前記命令キャッシュへ提供されるＣ１８に記載のメモリシステム。
［Ｃ２０］
前記属性は、前記フェッチアドレスが非連続動作のターゲットアドレスであることを示すＣ１７に記載のメモリシステム。
【図１】
0006030160.tif 000002
【図２】
0006030160.tif 000003
【図３】
0006030160.tif 000004