(57)【要約】  少なくともロード命令の命令符号化に基づいてプリフェッチ動作の候補ロード命令を識別するためのシステムおよび方法は、ロード命令の少なくとも1つまたは複数のフィールドの関数に基づく識別子と、任意で、ロード命令のPC値のビットのサブセットとを含み、1つまたは複数のフィールドはロード命令の完全なアドレスまたはプログラムカウンタ(PC)値を除外する。識別子によってインデックス付けされたプリフェッチテーブルを含むプリフェッチ機構は、識別子に基づいて、ロード命令がロードデータをプリフェッチするための候補ロード命令であるかどうかを決定することができる。関数は、1つまたは複数のフィールドの1つまたは複数のビットのハッシュ、連結、またはそれらの組合せであり得る。フィールドは、ベースレジスタ、宛先レジスタ、即時オフセット、オフセットレジスタ、あるいはロード命令の命令符号化の他のビットのうちの1つまたは複数を含む。
2018528532.tif 000002
【特許請求の範囲】
【請求項１】
データプリフェッチの方法であって、
ロード命令の少なくとも1つまたは複数のフィールドの関数に基づいて識別子を形成するステップであって、前記1つまたは複数のフィールドが前記ロード命令の完全なアドレスまたはプログラムカウンタ(PC)値を除外する、ステップと、
前記識別子に基づいて、前記ロード命令がロードデータをプリフェッチするための候補ロード命令であるかどうかを決定するステップと
を備える、方法。
【請求項２】
前記関数が、前記少なくとも1つまたは複数のフィールドの1つまたは複数のビットのハッシュ、連結、またはそれらの組合せである、請求項1に記載の方法。
【請求項３】
前記1つまたは複数のフィールドが、ベースレジスタ、宛先レジスタ、即時オフセット、オフセットレジスタ、あるいは前記ロード命令の命令符号化の他のビットのうちの1つまたは複数を備える、請求項1に記載の方法。
【請求項４】
前記ロード命令がロードデータをプリフェッチするための候補ロード命令であると決定された場合、プリフェッチテーブルに記憶されたプリフェッチ情報に基づいてロードデータをプリフェッチするための1つまたは複数のアドレスを計算するステップをさらに備える、請求項1に記載の方法。
【請求項５】
前記プリフェッチ情報が、ロードデータをプリフェッチするためのベースアドレス、ストライド、または距離のうちの1つまたは複数を備える、請求項4に記載の方法。
【請求項６】
前記1つまたは複数のアドレスから1つまたは複数のデータ値をプリフェッチし、前記1つまたは複数のデータ値をデータキャッシュにロードするステップをさらに備える、請求項4に記載の方法。
【請求項７】
前記識別子に基づいて、前記プリフェッチテーブルに記憶された前記プリフェッチ情報にアクセスするステップであって、前記プリフェッチテーブルが、前記識別子によってインデックス付けされたコンテンツアドレス可能メモリ(CAM)を備える、請求項5に記載の方法。
【請求項８】
前記ロード命令の前記PC値のビットのサブセットの関数に基づいて前記識別子を形成するステップをさらに備える、請求項1に記載の方法。
【請求項９】
ロード命令の少なくとも1つまたは複数のフィールドの関数に基づいて識別子を形成するように構成されたハッシュ符号化ブロックであって、前記1つまたは複数のフィールドが前記ロード命令の完全なアドレスまたはプログラムカウンタ(PC)値を除外する、ハッシュ符号化ブロックと、
前記識別子に基づいて、前記ロード命令が、データプリフェッチのための候補ロード命令であるかどうかを決定するように構成されたプリフェッチ機構と
を備える、装置。
【請求項１０】
前記関数が、前記少なくとも1つまたは複数のフィールドの1つまたは複数のビットのハッシュ、連結、またはそれらの組合せである、請求項9に記載の装置。
【請求項１１】
前記1つまたは複数のフィールドが、ベースレジスタ、宛先レジスタ、即時オフセット、オフセットレジスタ、あるいは前記ロード命令の命令符号化の他のビットのうちの1つまたは複数を備える、請求項9に記載の装置。
【請求項１２】
データプリフェッチのための候補ロード命令のためのプリフェッチ情報を記憶するように構成されたプリフェッチテーブルをさらに備える、請求項9に記載の装置。
【請求項１３】
前記プリフェッチ情報が、データプリフェッチのためのベースアドレス、ストライド、または距離のうちの1つまたは複数を備える、請求項12に記載の装置。
【請求項１４】
前記プリフェッチテーブルが、前記識別子によってインデックス付けされたコンテンツアドレス可能メモリ(CAM)を備え、前記ロード命令の前記プリフェッチ情報が、前記識別子に対応するエントリに記憶される、請求項12に記載の装置。
【請求項１５】
前記プリフェッチ機構が、前記プリフェッチ情報に基づいてデータプリフェッチのための1つまたは複数のアドレスを計算し、前記1つまたは複数のアドレスから1つまたは複数のデータ値をプリフェッチするように構成される、請求項12に記載の装置。
【請求項１６】
前記1つまたは複数のアドレスから前記プリフェッチされた1つまたは複数のデータ値を記憶するように構成されたデータキャッシュをさらに備える、請求項15に記載の装置。
【請求項１７】
前記識別子が、前記ロード命令の前記PC値のビットのサブセットの関数にさらに基づく、請求項9に記載の装置。
【請求項１８】
セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテイメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、固定位置データユニット、およびコンピュータから成るグループから選択されるデバイスに統合される、請求項9に記載の装置。
【請求項１９】
ロード命令の少なくとも1つまたは複数のフィールドの関数に基づいて識別子を形成するための手段であって、前記1つまたは複数のフィールドが前記ロード命令の完全なアドレスまたはプログラムカウンタ(PC)値を除外する、手段と、
前記識別子に基づいて、前記ロード命令がロードデータをプリフェッチするための候補ロード命令であるかどうかを決定するための手段と
を備える、装置。
【請求項２０】
前記関数が、前記少なくとも1つまたは複数のフィールドの1つまたは複数のビットのハッシュ、連結、またはそれらの組合せである、請求項19に記載の装置。
【請求項２１】
前記1つまたは複数のフィールドが、ベースレジスタ、宛先レジスタ、即時オフセット、オフセットレジスタ、あるいは前記ロード命令の命令符号化の他のビットのうちの1つまたは複数を備える、請求項19に記載の装置。
【請求項２２】
前記ロード命令がロードデータをプリフェッチするための候補ロード命令であると決定された場合、前記ロード命令に対応するプリフェッチ情報に基づいてロードデータをプリフェッチするための1つまたは複数のアドレスを計算するための手段をさらに備える、請求項19に記載の装置。
【請求項２３】
前記プリフェッチ情報が、ロードデータをプリフェッチするためのベースアドレス、ストライド、または距離のうちの1つまたは複数を備える、請求項22に記載の装置。
【請求項２４】
前記ロード命令の前記PC値のビットのサブセットの関数に基づいて前記識別子を形成するための手段をさらに備える、請求項19に記載の装置。
【請求項２５】
プロセッサによって実行されると、前記プロセッサに、データプリフェッチのための動作を実行させる、プロセッサによって実行可能な命令を備え、
ロード命令の少なくとも1つまたは複数のフィールドの関数に基づいて識別子を形成するためのコードであって、前記1つまたは複数のフィールドが前記ロード命令の完全なアドレスまたはプログラムカウンタ(PC)値を除外する、コードと、
前記識別子に基づいて、前記ロード命令がロードデータをプリフェッチするための候補ロード命令であるかどうかを決定するためのコードと
を備える、非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
開示される態様は、処理システムにおけるプリフェッチ動作に関する。より具体的には、例示的な態様は、ロード命令の符号化の少なくとも1つまたは複数のフィールドから形成される識別子に基づいて、プリフェッチするための候補ロード命令を識別することに関する。
【背景技術】
【０００２】
ますます増加する処理速度の要求を満たすために、現代の処理システム設計は、命令処理におけるボトルネックを低減するための様々な技法を含む。プリフェッチ機構は、事前に命令およびデータをフェッチするように実装され得る。したがって、たとえば、ロードデータの要求が生じる前に、ロードデータ(たとえば、ロード命令用)がフェッチされ、データキャッシュ内に配置され得る。このようにして、ロード命令が実行されているときにデータキャッシュがアクセスされると、ロードデータはすでにデータキャッシュに入っているので、データキャッシュミスが回避され得る。したがって、効率的なプリフェッチ機構は、キャッシュミスに対処するコスト(たとえば、サイクル時間および電力に関する)を低減し、キャッシュミスによって生じるボトルネックを低減することによって処理速度を改善することができる。プリフェッチ機構は、要求に先立って、バッキングメモリ構造から、任意の他のメモリ構造(たとえば、レジスタファイル)、または任意のキャッシュ(たとえば、命令キャッシュ)、あるいはキャッシュレベルに、データまたは命令をプリフェッチするために同様に実装され得る。
【０００３】
従来のプリフェッチ機構は、プリフェッチ動作が実行され得る候補(たとえば、ロード命令)を識別するための様々なプリフェッチアルゴリズムを使用し得る。たとえば、データプリフェッチ動作の場合、プリフェッチアルゴリズムは、データ値がフェッチされるアドレス、またはプロセッサによってデータフェッチ要求が生成されるアドレスの間のパターンを識別し得る。たとえば、プリフェッチアルゴリズムは、反復実行の間に、特定のロード命令が、規則的な間隔によって分離されたアドレスにおいてデータ値のためのデータフェッチ要求を生成する可能性があることを識別し得る。データ値がフェッチされる2つの隣接するアドレス間のこの規則的な間隔は、ストライドと呼ばれる。特定のロード情報についてデータ値がフェッチされる任意の2つのアドレスは、ストライドの整数倍であってもよく、距離と呼ばれ得る。
【０００４】
さらに詳細には、ロード命令の実行の第1の例では、第1のアドレスにおけるデータ値に対するデータフェッチ要求がプロセッサによって生成され得る。ロード命令の実行の第2の例では、第2のアドレスにおいてデータ値に対するデータフェッチ要求が生成されてもよく、第2のアドレスは、第1のアドレスが与えられると、ストライドおよび距離に基づいて計算され得る。したがって、プリフェッチ機構は、当技術分野で知られているように、プリフェッチテーブルなどの記憶媒体に、第1のアドレス(または、任意のベースアドレス)、ストライド、距離などのプリフェッチ情報を記憶し得る。プログラム実行中に、ロード命令が識別された場合(たとえば、特定の例において)、プリフェッチ機構は、ロード命令の将来のインスタンスのためにデータ値(たとえば、ロードデータ)がプリフェッチされる必要があるかもしれないアドレスを計算するために(たとえば、そこに記憶されたプリフェッチ情報に基づいて)、プリフェッチテーブルにアクセスし得る。次いで、プリフェッチ機構は、ロード命令の将来のインスタンスのためのロードデータをプリフェッチし、それをデータキャッシュ(または、他のメモリ構造)に配置することができる。したがって、プログラム実行中にロード命令の将来のインスタンスが識別されると、対応するロードデータがすでにデータキャッシュ内で利用可能となり、したがって、キャッシュミスが回避され得る。
【０００５】
特定のロード命令がプリフェッチの候補であるかどうかを識別すること(たとえば、対応するプリフェッチ情報がプリフェッチテーブルに記憶されているかどうかを識別すること)は、従来、ロード命令のアドレスまたはPC値に基づいている。したがって、特定のPC値を有するロード命令のプリフェッチ情報は、プリフェッチテーブルの対応するエントリに記憶され得、エントリは、ロード命令のPC値を使用してインデックス付けされ、アクセスされ得る。
【０００６】
しかしながら、ロード命令のアドレスまたはPC値は、プリフェッチ機構によって容易に利用可能ではないか、または使用するのが便利ではない場合がある。これは、処理システムの従来の設計では、プリフェッチ機構が候補ロード命令のためのデータをプリフェッチするためにロード/ストアユニットを使用することを可能にするために、データをフェッチするために使用されるロード/ストアユニットの近くにプリフェッチ機構が物理的に配置され得るためである。具体的には、プリフェッチテーブル(PC値によってインデックス付けされ、アクセスされる)は、ロード/ストアユニットの近くに配置され得る。命令(ロード命令を含む)のPC値は、命令をフェッチする命令フェッチユニットから利用可能であり得る。命令フェッチユニットは、命令キャッシュのより近くに物理的に配置され得る。命令フェッチユニットおよびロード/ストアユニットまたはプリフェッチテーブルの位置は、処理システムが統合された半導体ダイまたはチップ上で、かなりの距離だけ離れていてもよい。したがって、プリフェッチ動作が実行され得る候補ロード命令を識別するためにPC値に依存するプリフェッチ機構は、命令のPC値に容易にアクセスできない場合がある。プリフェッチ機構にPC値へのアクセスを提供するために、処理システムのフロントエンド(たとえば、命令フェッチユニットを備える)から処理システムのバックエンド(たとえば、ロード/ストアユニット、プリフェッチ機構などを備える)にPC値を搬送するために長いワイヤまたはネットを特別に設ける必要がある場合がある。長いワイヤは遅延を招き、電力を消費する。長いワイヤをフロントエンドからバックエンドにルーティングすることはまた、設計の課題と、それに伴うコストおよび複雑さを招く。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
したがって、従来のプリフェッチ機構に見られる上述の制限を回避することが望ましい。
【課題を解決するための手段】
【０００８】
本発明の例示的な態様は、少なくともロード命令の命令符号化に基づいてプリフェッチ動作の候補ロード命令を識別するためのシステムおよび方法を対象とする。ハッシュ符号化ブロックは、ロード命令の少なくとも1つまたは複数のフィールドの関数に基づいて識別子を形成するためにプロセッサに設けられ、1つまたは複数のフィールドはロード命令の完全なアドレスまたはプログラムカウンタ(PC)値を除外する。識別子によってインデックス付けされたプリフェッチテーブルを含むプリフェッチ機構は、識別子に基づいて、ロード命令がロードデータをプリフェッチするための候補ロード命令であるかどうかを決定するように構成される。関数は、1つまたは複数のフィールドの1つまたは複数のビットのハッシュ、連結、またはそれらの組合せである。フィールドは、ベースレジスタ、宛先レジスタ、即時オフセット、オフセットレジスタ、あるいはロード命令の命令符号化の他のビットのうちの1つまたは複数を備える。いくつかの態様では、識別子は、ロード命令のPC値のビットのサブセットの関数にさらに基づき得る。
【０００９】
たとえば、例示的な態様は、データプリフェッチの方法に関し、本方法は、ロード命令の少なくとも1つまたは複数のフィールドの関数に基づいて識別子を形成するステップであって、1つまたは複数のフィールドはロード命令の完全なアドレスまたはプログラムカウンタ(PC)値を除外する、ステップと、識別子に基づいて、ロード命令がロードデータをプリフェッチするための候補ロード命令であるかどうかを決定するステップとを備える。
【００１０】
別の例示的な態様は、ロード命令の少なくとも1つまたは複数のフィールドの関数に基づいて識別子を形成するように構成されたハッシュ符号化ブロックであって、1つまたは複数のフィールドはロード命令の完全なアドレスまたはプログラムカウンタ(PC)値を除外する、ハッシュ符号化ブロックと、識別子に基づいて、ロード命令がデータプリフェッチのための候補ロード命令であるかどうかを決定するように構成されたプリフェッチ機構とを備える装置とを対象とする。
【００１１】
別の例示的な態様は、ロード命令の少なくとも1つまたは複数のフィールドの関数に基づいて識別子を形成するための手段であって、1つまたは複数のフィールドはロード命令の完全なアドレスまたはプログラムカウンタ(PC)値を除外する、手段と、識別子に基づいて、ロード命令がロードデータをプリフェッチするための候補ロード命令であるかどうかを決定するための手段とを備える装置を対象とする。
【００１２】
別の例示的な態様は、プロセッサによって実行されると、プロセッサに、データプリフェッチのための動作を実行させる、プロセッサによって実行可能な命令を備える非一時的コンピュータ可読記憶媒体を対象とし、非一時的コンピュータ可読記憶媒体は、ロード命令の少なくとも1つまたは複数のフィールドの関数に基づいて識別子を形成するためのコードであって、1つまたは複数のフィールドはロード命令の完全なアドレスまたはプログラムカウンタ(PC)値を除外する、コードと、識別子に基づいて、ロード命令がロードデータをプリフェッチするための候補ロード命令であるかどうかを決定するためのコードとを備える。
【００１３】
添付の図面は、本発明の態様の説明を補助するために提示され、態様の説明のためのみに提供され、本発明の限定ではない。
【図面の簡単な説明】
【００１４】
【図１】従来の処理システムを示す図である。
【図２】本開示の態様による、プリフェッチ機構を備える例示的な処理システムを示す図である。
【図３】例示的な態様による、命令を処理する方法を表すフローチャートである。
【図４】本開示の態様が有利に使用され得る例示的なコンピューティングデバイスを示す図である。
【発明を実施するための形態】
【００１５】
本発明の態様は、以下の説明、および本発明の特定の態様に関する関連図面に開示されている。本発明の範囲から逸脱することなく、代替態様が考案され得る。さらに、本発明のよく知られている要素は、本発明の関連する詳細を不明瞭にしないように、詳細には記載されないか、または省略される。
【００１６】
「例示的」という用語は、本明細書では、「例、事例、または例示としての役割を果たす」ことを意味するために使用される。本明細書に「例示的」と記載された任意の態様は、必ずしも他の態様よりも好ましいまたは有利であると解釈されるべきではない。同様に、「本発明の態様」という用語は、本発明のすべての態様が議論された特徴、利点、または動作モードを含むことを必要としない。
【００１７】
本明細書で使用する用語は、特定の態様のみを説明する目的のためのものであり、本発明の態様の限定であることを意図しない。本明細書で使用する単数形「a」、「an」、および「the」は、コンテキストがはっきりと別段に指示しない限り、複数形も含むことが意図される。さらに、「備える(comprises)」、「備えている(comprising)」、「含む(includes)」、および/または「含んでいる(including)」という用語は、本明細書で使用されるとき、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を明示するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことが理解されよう。
【００１８】
さらに、多くの態様は、たとえば、コンピューティングデバイスの要素によって実行される行為のシーケンスに関して記述される。本明細書に記載された様々な行為は、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、1つまたは複数のプロセッサによって実行されるプログラム命令によって、あるいはその両方の組合せによって実行され得ることが認識されるであろう。さらに、本明細書に記載された行為のこれらのシーケンスは、実行時に、関連するプロセッサに本明細書に記載された機能を実行させる、コンピュータ命令の対応するセットを記憶した任意の形態のコンピュータ可読記憶媒体内に完全に具体化されていると考えられ得る。したがって、本発明の様々な態様は、いくつかの異なる形態において具体化されてもよく、そのすべてが特許請求される主題の範囲内にあると考えられている。さらに、本明細書に記載された態様のそれぞれについて、任意のそのような態様の対応する形態は、たとえば、記載された行為を実行する「ように構成された論理」として本明細書に記載され得る。
【００１９】
本開示の例示的な態様では、候補ロード命令を識別するためのアドレスまたはプログラムカウンタ(PC)値に依存するプリフェッチ機構に関連付けられる上述の問題が軽減される。むしろ、候補ロード命令を識別するための例示的な代替識別子が形成され、識別子はロード命令の完全なアドレスまたはPC値を備えない。代わりに、識別子は、ロード命令の符号化から(少なくとも部分的に)形成され得る。たとえば、ベースレジスタ、宛先レジスタ、即時オフセット値、オフセットレジスタなどのロード命令の1つまたは複数のフィールドは、識別子を作成するために使用され得る。場合によっては、識別子を生成するためにPC値のビットが使用されないが、他の場合には、識別子を作成するために、命令の1つまたは複数のフィールドに加えてサブセット(たとえば、PC値の小さな部分)を使用することも可能である。1つまたは複数のフィールドのハッシュ関数(および、適用可能であれば、PC値のビットのサブセット)は、識別子が候補ロード命令に関連付けられ、また候補ロード命令を識別できるようにするために、識別子を作成するために使用され得る。ハッシュは、連結、排他的論理和(XOR)関数、または識別子を形成するために使用されるビットの他の任意の組合せであり得る。
【００２０】
例示的なプリフェッチ機構は、ロード命令のPC値のみではなく、命令符号化に基づいて代替識別子を使用することによって、候補ロード命令を識別するためのPC値のみに依存することに関連付けられる長い経路および遅延を回避することができる。例示的なプリフェッチ機構は、例示的な識別子を使用して候補ロード命令を識別することに基づいてプリフェッチ動作を開始し、実行することができる。
【００２１】
例示的な態様はプリフェッチに関して説明されているが、他のアプリケーションでは、命令の符号化(たとえば、命令のPC値のみではなく、命令の1つまたは複数のフィールドの関数)から形成される例示的な識別子が使用され得ることが理解されよう。(たとえば、アプリケーションによっては、プログラムにおいてエラー、フォルト、または例外を引き起こす命令を追跡する場合がある。追跡された情報は、例外ハンドラなどの是正措置が実施されるべきかを決定する際に有用であり得る。それらの完全なアドレスまたはPCの値だけに基づいて命令を識別するのではなく、命令の符号化から形成された識別子もまた、これらのアプリケーションにおいて使用され得る。)
【００２２】
次に図1を参照すると、メモリ103に結合されたプロセッサ101を有する従来の処理システム100が示されている。この議論のために、プロセッサ101の関連する部分のみが示されているが、プロセッサ101は、任意の従来の汎用プロセッサまたは専用プロセッサであってもよいことが理解されよう。メモリ103は、命令キャッシュ、データキャッシュ、L1、L2、L3キャッシュなどの複数レベルのキャッシュ、およびダイナミックランダムアクセスメモリ(DRAM)などのバッキングストレージまたはメインメモリなどの1つまたは複数のメモリ構造を含むことができる。メモリ103のうちの一部または全部は、プロセッサ101と同じチップ上に統合されてもよく、別個のチップまたはブロック上に統合されてもよく、あるいはそれらの任意の組合せであってもよい。
【００２３】
この議論のために、プロセッサ101は、命令フェッチユニット(IU)102、ディスパッチユニット104、ロード/ストアユニット(SU)106、およびプリフェッチテーブル108を備えるように示されている。命令フェッチユニット102は、プロセッサ101の実行パイプラインまたは実行エンジン(明示されていない)において実行されるべき(たとえば、メモリ103の一部であってもよく、明示されていない別の構造の一部であってもよい命令キャッシュから)クロックの各サイクルで1つまたは複数の命令をフェッチするように構成される。命令フェッチユニット102は、それらのアドレスまたはプログラムカウンタ(PC)値に基づいて命令をフェッチする。したがって、プロセッサ101の実行エンジンのフロントエンドを形成する命令フェッチユニット102は、命令のPC値にアクセスする。命令フェッチユニット102は、命令キャッシュと命令フェッチユニット102との間のワイヤ長および関連付けられる遅延を低減するために、プロセッサ101が統合された半導体ダイまたは集積回路の設計またはレイアウトにおいて、命令キャッシュの近くに物理的に配置され得る。
【００２４】
ディスパッチユニット104は、命令フェッチユニット102からフェッチされた命令を受信し、ディスパッチのための命令をステージすることができる。ディスパッチユニット104は、命令が保持され、ハザードがもしあれば、命令が実行エンジンにディスパッチされる前に(レジスタリネーミングによって)解決される、リザベーションステーション(RSV)を備えることができる。
【００２５】
ロード/ストアユニット106は、ロード/ストア命令を実行するように構成されたプロセッサ101の実行エンジンの一部であり得る。ロード/ストアユニット106は、ロード/ストア命令を受信し、ロード/ストア命令を処理するために、1つまたは複数のキャッシュルックアップ、サービスミス、必要に応じてアクセスメインメモリなどの動作を実行することができる。したがって、ロード/ストアユニット106は、ロード/ストア命令の処理においてバックエンドとして機能することができる。効率および速度を向上させるために、ロード/ストアユニット106は、プロセッサ101が統合された半導体ダイまたは集積回路の設計またはレイアウトにおいて、データキャッシュおよび他のバッキングメモリ構造の近くに物理的に配置され得る。したがって、ロード/ストアユニット106を命令フェッチユニット102から物理的にかなりの距離だけ分離することが可能である。
【００２６】
プリフェッチテーブル108は、候補ロード命令を識別することに基づいてデータをプリフェッチするためのプリフェッチ機構の一部であり得る。プリフェッチテーブル108は、候補ロード命令のためのベースアドレス、ストライド、距離などのプリフェッチ情報を備え得る。特定の例では、候補ロード命令が識別される場合、候補ロード命令の1つまたは複数の将来のインスタンスのデータは、プリフェッチ情報を使用してプリフェッチされ得る。候補ロード命令のデータは、バッキングメモリ構造からプリフェッチされ、データキャッシュ(または、たとえばレジスタファイルなどの他のオンチップメモリ構造)内に配置され得る。プリフェッチ機構は、候補ロード命令のためのプリフェッチデータをフェッチするためにロード/ストアユニット106を使用し得、したがって、プリフェッチテーブル108はロード/ストアユニット106の近くに物理的に配置され得る。プリフェッチテーブル108は、命令のPC値を使用してインデックス付けされ得るコンテンツアドレス可能メモリ(CAM)として実装され得る。ロード命令のプリフェッチ情報がプリフェッチテーブル108に存在するかどうかを決定するべくプリフェッチテーブル108をルックアップするために、ロード/ストアユニット106によって受信されたロード命令のPC値が使用され得る。プリフェッチテーブル108のエントリ内にロード命令のプリフェッチ情報が存在する場合、プリフェッチテーブル内にヒットがあり、ロード命令はプリフェッチのための候補ロード命令として扱われる。ロード命令が候補ロード命令であると決定することによって、ロード命令のPC値に対するヒットを引き起こしたプリフェッチテーブル108のエントリから取得されたプリフェッチ情報を使用して、データをプリフェッチするためのプリフェッチ動作を開始させることができる。
【００２７】
したがって、プリフェッチ機構は、データをプリフェッチするための候補ロード命令を識別するために、命令フェッチユニット102によってフェッチされた命令のPC値に依存する。処理エンジンまたはプロセッサ101において実行されるような、例示的なロード命令(命令符号化、またはアセンブリコード「PC 0x100 LDR R5, [R2, #0x200]」を伴う)の処理に関連するステップが図1に示されている。ロード命令の命令符号化は、レジスタからのロード(load-from-a-register)を表す「LDR」を含む。ロード命令LDRは、アドレスまたは0x100のPC値を有する。ロード命令LDRは、ロード命令の図示された例では、即値フィールド「0x200」によって与えられるオフセット値が付加された(図示しない、プロセッサ101のレジスタファイルの)レジスタR2において指定されたアドレスから値をロードするために使用される。PC 0x100におけるロード命令LDRの異なる例では、即値フィールドは異なるオフセット値(認識され得るように、ロード命令の異なる例においてデータ値がプリフェッチされるアドレスのストライドを制御することができる)を有することができる。
【００２８】
図示されるように、PC値0x100、ならびに命令LDR R5, [R2, #0x200]のフィールドの残りは、ディスパッチユニット104に送信され、そこからロード/ストアユニット106に送信される。ロード命令LDRは、基本レジスタR2の値を読み出し、その値に即時オフセット値0x200を加算し、R2と0x200のアドレスの和に等しいアドレスにあるデータをフェッチし、フェッチされたデータをレジスタファイルの宛先レジスタR5にロードすることによって、ロード/ストアユニット106において実行される。
【００２９】
PC 0x100におけるロード命令LDRがプリフェッチのための候補ロード命令であるかどうか、すなわち、プリフェッチテーブル108がPC 0x100におけるロード命令LDRのためのプリフェッチ情報を備えるかどうかを決定するために、プリフェッチテーブル108には、命令フェッチユニット102から渡されたPC 0x100の値が与えられている。
【００３０】
命令フェッチユニット102とロード/ストアユニット106/プリフェッチテーブル108との間の物理的な距離は非常に大きくなり得る。命令のためのPC値全体(たとえば、上記の例では0x100)を表すために使用されるビット数は、かなり大きい(たとえば、従来の実装形態では64ビット幅)場合があり、これは、対応する数のワイヤが、命令フェッチユニット102からプリフェッチテーブル108に0x100のPC値全体を搬送する際に使用され、電力消費、ルーティングの複雑さ、コスト等の関連する増加をもたらすことを意味する。
【００３１】
次に図2を参照すると、例示的な処理システム200が示される。処理システム200は、いくつかの態様において従来の処理システム100と同様であり、処理システム100および200の同様の構成要素を識別するために、同様の参照番号が使用されている。したがって、処理システム200はまた、メモリ203(図1に関して説明したメモリ103と同様であり得る)と、メモリ203と通信するプロセッサ201とを含む。プロセッサ201はまた、たとえばメモリ203の命令キャッシュからフェッチされ得る命令を実行するための実行エンジンを含む。プロセッサ201の実行エンジンの関連する詳細のみが示されており、これらは、命令フェッチユニット202(図1の命令フェッチユニット102と同様である)、ディスパッチユニット204(図1のディスパッチユニット104と同様である)、およびロード/ストアユニット206(図1のロード/ストアユニット106と同様である)を含む。プロセッサ201の実行エンジンはまた、以下でさらに説明するハッシュ符号化ブロック210およびプリフェッチテーブル212を含む。
【００３２】
プロセッサ201において、プリフェッチ機構は、プリフェッチのための候補ロード命令を識別するための命令のPC値に依存する必要はない。むしろ、例示的な代替識別子は候補ロード命令を識別するために形成され、識別子は、ロード命令の完全なアドレスまたはPC値を含まなくてもよい(ただし、任意の態様では、識別子を作成する際にPC値のビットのサブセットも使用され得る)。例示的な識別子は、少なくともロード命令の符号化から形成される。たとえば、ベースレジスタ、宛先レジスタ、即時オフセット値、オフセットレジスタなどのロード命令の1つまたは複数のフィールドは、代替識別子を作成するために使用される。
【００３３】
上記で図1を参照して説明したのと同じロード命令を考慮して、例示的な識別子に関連する態様が示される。図2に示されるように、命令フェッチユニット202によって、命令符号化またはアセンブリコード「PC 0x100 LDR R5, [R2, #0x200]」を有するロード命令LDRが受信される。しかしながら、ロード命令の実行において、ロード命令LDRのPC値0x100全体がディスパッチユニット204に提供されない。PC値0x100全体もまた、ロード/ストアユニット206に提供されない。むしろ、図示される例では、命令符号化LDR R5, [R2, #0x200]だけがディスパッチユニット204およびロード/ストアユニット206に提供される。ディスパッチユニット204およびロード/ストアユニット206は、ロード命令を実行するためにPC値0x100を必要としないので、ロード命令の実行は、ロード/ストアユニット206において従来の方法で進行する(たとえば、レジスタR2の値を読み出し、その値に0x200を加算し、R2と0x200のアドレスの和に等しいアドレスにあるデータをフェッチすることによって)。
【００３４】
図示されていないが、本開示の範囲内で、識別子を形成するための上述の命令フィールドに加えて、PC値のビットのサブセットも任意で使用され得る代替の態様が可能である。ビットのサブセットは、PC値の小さい数または小さい部分であり得る。たとえば、識別子を形成する際のロード命令の符号化に加えて、PC値の64ビットのうち4つ(たとえば、PC[5:2])が使用され得る。
【００３５】
したがって、プロセッサ201によって使用されるプリフェッチ機構は、PC値全体を供給されない場合がある。むしろ、プロセッサ201のプリフェッチ機構は、ロード命令LDR R5, [R2, #0x200]の命令符号化の少なくともいくつかのビットを受信し得る。ロード命令LDR R5, [R2, #0x200]に対する命令符号化は、レジスタフィールドR5およびR2、ならびに即値オフセットフィールド0x200を含む1つまたは複数のフィールドを備える。本開示の例示的な態様では、これらのフィールドのビットの少なくとも1つの組合せが、PC値0x100にあるロード命令LDR R5, [R2, #0x200]に特有であると見なされる。したがって、ロード命令の1つまたは複数のフィールドのビットの少なくとも1つの組合せが、PC値0x100においてロード命令LDRを識別するために使用される。任意で、ロード命令を識別する際に、ロード命令の1つまたは複数のフィールドのビットの組合せとともに、PC値0x100のビットのすべてのビットではないが小さいサブセットも使用され得る。前述のように、PC値は、たとえば64ビットを備え得る。しかしながら、命令の符号化に使用されるビットの数(たとえば、命令のオペレーションコードまたは演算コード)、およびレジスタフィールドR5およびR2などの1つまたは複数のフィールド、ならびにロード命令LDR R5, [R2, #0x200]の即値オフセットフィールドは20ビット以下の低さであり得る。さらに、いくつかの従来の態様においても、命令の符号化のいくつかのビット数(たとえば、20ビット)およびロード命令の1つまたは複数のフィールドのビットが、ロード/ストアユニット206がロードデータをフェッチするアドレス値を計算することを可能にするためにロード/ストアユニット206に提供され得る点に留意されたい。
【００３６】
したがって、ハッシュ符号化ブロック210は、命令の符号化の少なくとも1つまたは複数のフィールドの組合せであるハッシュ関数を実装するように構成される。ハッシュ関数は、たとえば、連結、排他的論理和(XOR)関数、あるいは1つまたは複数のフィールドの少なくともいくつかのビットの任意の他の任意の組合せ、および任意で命令のPC値のビットのサブセットであり得る。図示された例では、ハッシュ符号化ブロック210は、レジスタフィールドR5およびR2の少なくともいくつかのビット、および即値またはオフセットフィールド0x200のハッシュ関数を作成し得る。ハッシュ符号化ブロック210の出力は識別子であり、これはロード命令LDRの1つまたは複数のフィールドの組合せであり、任意でPC値0x100を有する。
【００３７】
場合によっては、ハッシュ符号化ブロック210において形成される識別子は、PC 0x100においてロード命令LDRの固有の識別子であり得る。一般に、ハッシュ符号化ブロック210において形成される識別子は、プリフェッチ情報がプリフェッチテーブル212に記憶され得る様々な候補ロード命令を区別することができる。したがって、識別子は、ヒットがあるかどうか、すなわち、プリフェッチテーブル212はプリフェッチ情報(たとえば、ロード命令に対応するデータをプリフェッチするためのアドレスを計算するために使用され得るベースアドレス、ストライド、距離などのうちの1つまたは複数)を備えるかどうかを決定するために、プリフェッチテーブル212をインデックス付けするために使用され得る。このように、任意のハッシュ関数または符号化、あるいは宛先レジスタ、ベースレジスタ、即値、またはオフセットレジスタ(たとえば、上記の例ではオフセット値を提供する即値ではなく、オフセット値を指定し得るレジスタ)のうちの1つまたは複数などのプリフェッチするための候補ロード命令の少なくとも1つまたは複数のフィールドの組合せ、および任意で、PC値のビットのサブセットが、プリフェッチ情報がロード命令のプリフェッチテーブル212内に存在するかどうかを識別するために使用され得る。プリフェッチ情報がロード命令のプリフェッチテーブル212内に存在すると決定すると、プリフェッチ情報を使用して計算されたアドレスにおいて1つまたは複数のデータ値に対する対応するプリフェッチ動作をトリガすることができる。
【００３８】
したがって、一例では、ハッシュ符号化ブロック210によって提供される識別子について、プリフェッチテーブル212内にヒットがある可能性がある。たとえば、ロード命令LDRのR5、R2、および0x200のフィールドのうちの1つの少なくともいくつかのビットで形成された識別子は、プリフェッチテーブル212がロード命令LDRに対応するプリフェッチ情報を備えることを明らかにし得る。したがって、ロード命令LDRは、プリフェッチするための候補ロード命令として識別され得る。この候補ロード命令の1つまたは複数のデータ値は、一例では、ベースレジスタR2によって提供されるアドレスにストライド値を加算することによって形成されたアドレスからプリフェッチされ得る。これらの1つまたは複数のデータ値は、プリフェッチされ、データキャッシュ(図示せず)にロードされ得る。場合によっては、プリフェッチアルゴリズムが投機的であるため、計算が正しくない可能性がある。プリフェッチアルゴリズムの精度を向上させるための技法は、当該技術分野において知られており、この議論の焦点ではない。例示的な態様では、(たとえば、プログラムの実行中に)ロード/ストアユニット206によって受信されたロード命令が、プリフェッチするための候補ロード命令として識別されるたびに、データをプリフェッチするためにアドレスを計算するために、プリフェッチテーブル212からの対応するプリフェッチ情報が使用され得、対応するプリフェッチ動作が開始され得る。
【００３９】
上述したように、プリフェッチテーブル212は、コンテンツアドレス可能メモリ(CAM)として実装され得る。ロード/ストアユニット206は、ストライドなどのプリフェッチ情報を決定するために、命令符号化LDR R5, [R2, #0x200]をハッシュ符号化テーブル210に提供することと、少なくともフィールドR5、R2、および0x200(および、任意で、PC値0x100のビットのサブセット)に基づいて識別子を取得することと、識別子を使用してプリフェッチテーブル212内のCAMにアクセスすることとに基づいて、プリフェッチテーブル212にアクセスすることができる。このように、ロード命令のPC値0x100のすべてのビットが、候補ロード命令を識別するために、またはプリフェッチされたデータを検索するために使用される必要はない。したがって、上記のプリフェッチ動作のためにPC値のすべてのビットを使用することに関連付けられる遅延および電力消費が軽減され得る。
【００４０】
他の任意の動作のための命令を識別する際に、PC値の代わりに、ハッシュ関数あるいは命令符号化の1つまたは複数のフィールドの組合せによって形成された識別子が使用され得ることも諒解されよう。このように、例示的な態様は、プリフェッチ動作に限定されない。
【００４１】
例示的な態様は、本明細書に開示されたプロセス、機能、および/またはアルゴリズムを実行するための様々な方法を含むことが諒解されよう。たとえば、図3に示されるように、方法300は、本明細書に開示された例示的な態様による命令処理の方法である。たとえば、方法300は、(たとえば、図2を参照して説明した候補ロード命令LDRの)データプリフェッチの方法に関する。
【００４２】
ブロック302に示されるように、方法300は、ロード命令の少なくとも1つまたは複数のフィールドの関数に基づいて識別子を形成するステップであって、1つまたは複数のフィールドはロード命令の完全なアドレスまたはプログラムカウンタ(PC)値を除外する、ステップを備える。たとえば、ブロック302は、ベースレジスタ(たとえば、レジスタR2)、宛先レジスタ(たとえば、レジスタR5)、即時オフセット(たとえば、即値0x200)、オフセットレジスタ、または図2のハッシュ符号化ブロック210におけるロード命令LDR R5, [R2, #0x200]の命令符号化の他のビットなどの、少なくとも1つまたは複数のフィールドの1つまたは複数のビットのハッシュ、連結、またはそれらの組合せを形成することに関する。任意の態様では、識別子は、上述のように、ロード命令LDRのPC値のビットのサブセットの関数からさらに形成され得る。
【００４３】
ブロック304において、方法300は、識別子に基づいて、ロード命令がロードデータをプリフェッチするための候補ロード命令であるかどうかを決定するステップを備える。たとえば、ブロック304は、識別子を使用して、プリフェッチテーブル212内にヒットがあるかどうか、すなわち、プリフェッチテーブル212が、ロード命令に対応するプリフェッチ情報を備えるエントリを有するかどうかを、決定することに関し得る。プリフェッチ情報は、ロードデータをプリフェッチするためのベースアドレス、ストライド、または距離のうちの1つまたは複数を含むことができる。プリフェッチテーブル212内にヒットがある場合、プリフェッチテーブルに記憶されたプリフェッチ情報に基づいてロードデータをプリフェッチするための1つまたは複数のアドレスが計算され得、1つまたは複数のアドレスから1つまたは複数のデータ値がプリフェッチされ、データキャッシュにロードされ得る。
【００４４】
次に図4を参照すると、例示的な態様に従って構成されたコンピューティングデバイス400の特定の例示的な態様のブロック図が示されている。コンピューティングデバイス400は、図2を参照して説明したプロセッサ201を含む(この表現においては、分かりやすくするために、ハッシュ符号化ブロック210およびプリフェッチテーブル212に対応する例示的な構造を表すブロックのみが示されている)。プロセッサ201は、いくつかの態様では、図3の方法300を実行するように構成され得る。図4に示されるように、プロセッサ201は、前述したように、メモリ203と通信し得る。別個に示されていないが、1つまたは複数のキャッシュあるいは他のメモリ構造もまた、コンピューティングデバイス400に含まれ得る。
【００４５】
図4はまた、プロセッサ201およびディスプレイ428に結合されたディスプレイコントローラ426を示す。コーダ/デコーダ(コーデック)434(たとえば、オーディオおよび/または音声コーデック)は、プロセッサ201に結合することができる。(モデムを含んでもよい)ワイヤレスコントローラ440などの他の構成要素も示されている。スピーカー436およびマイクロフォン438は、コーデック434に結合することができる。図4は、ワイヤレスコントローラ440をワイヤレスアンテナ442に結合することができることも示している。特定の態様では、プロセッサ201、ディスプレイコントローラ426、メモリ203、コーデック434、およびワイヤレスコントローラ440は、システムインパッケージデバイスまたはシステムオンチップデバイス422に含まれる。
【００４６】
特定の態様では、入力デバイス430および電源444は、システムオンチップデバイス422に結合される。さらに、ある特定の態様では、図4に示すように、ディスプレイ428、入力デバイス430、スピーカー436、マイクロフォン438、ワイヤレスアンテナ442、および電源444は、システムオンチップデバイス422の外部に位置する。ただし、ディスプレイ428、入力デバイス430、スピーカー436、マイクロフォン438、ワイヤレスアンテナ442、および電源444の各々は、インターフェースまたはコントローラのような、システムオンチップデバイス422の構成要素に結合することができる。
【００４７】
図4はワイヤレス通信デバイスを示しているが、プロセッサ201およびメモリ203はまた、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテイメントユニット、ナビゲーションデバイス、携帯情報端末(PDA)、通信デバイス、固定位置データユニット、コンピュータ、または他の同様の電子デバイスに統合され得る点に留意されたい。さらに、コンピューティングデバイス400の少なくとも1つまたは複数の例示的な態様は、少なくとも1つの半導体ダイに統合され得る。
【００４８】
当業者であれば、情報および信号は、様々な異なる技術および技法のいずれかを使用して表され得ることを諒解するであろう。たとえば、上記の説明を通して参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場または磁性粒子、光場または光学粒子、あるいはそれらの組合せによって表され得る。
【００４９】
さらに、当業者は、本明細書に開示された態様に関連して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装され得ることを諒解するであろう。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明してきた。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、具体的な適用例および全体的なシステムに課された設計制約に依存する。当業者は、特定のアプリケーションごとに様々な方法で説明した機能を実装することができるが、そのような実装の決定は本発明の範囲から逸脱するものと解釈されるべきではない。
【００５０】
本明細書に開示された態様に関連して説明された方法、シーケンス、および/またはアルゴリズムは、ハードウェア、プロセッサによって実行されるソフトウェアモジュール、またはその2つの組合せにおいて直接的に具体化され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体内に存在してもよい。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。あるいは、記憶媒体は、プロセッサに一体化され得る。
【００５１】
したがって、本発明のある態様は、候補ロード命令の1つまたは複数のフィールドの組合せに基づいて、プリフェッチ動作のための候補ロード命令を決定するための方法を具体化するコンピュータ可読媒体を含むことができる。したがって、本発明は図示された例に限定されず、本明細書に記載された機能を実行するための任意の手段が本発明の態様に含まれる。
【００５２】
前述の開示は、本発明の例示的な態様を示しているが、添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなしに、本明細書に様々な変更および修正が行われ得る点に留意されたい。本明細書に記載された本発明の態様に従う方法クレームの機能、ステップ、および/または行為を、任意の特定の順序で実施する必要はない。さらに、本発明の要素は、単数形で記載され、特許請求される場合があるが、単数形への制限が明示的に言及されない限り、複数形が意図される。
【符号の説明】
【００５３】
100  処理システム
101  プロセッサ
102  命令フェッチユニット(IU)
103  メモリ
104  ディスパッチユニット
106  ロード/ストアユニット(SU)
108  プリフェッチテーブル
200  処理システム
201  プロセッサ
202  命令フェッチユニット
203  メモリ
204  ディスパッチユニット
206  ロード/ストアユニット
210  ハッシュ符号化ブロック
212  プリフェッチテーブル
300  方法
400  コンピューティングデバイス
422  システムオンチップデバイス
426  ディスプレイコントローラ
428  ディスプレイ
430  入力デバイス
434  コーダ/デコーダ(コーデック)
436  スピーカー
438  マイクロフォン
440  ワイヤレスコントローラ
442  ワイヤレスアンテナ
444  電源
【図１】
2018528532.tif 000003
【図２】
2018528532.tif 000004
【図３】
2018528532.tif 000005
【図４】
2018528532.tif 000006
【手続補正書】
【提出日】平成30年2月15日(2018.2.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データプリフェッチの方法であって、
ロード命令の少なくとも1つまたは複数のフィールドの関数に基づいて識別子を形成するステップであって、前記1つまたは複数のフィールドが前記ロード命令の完全なアドレスまたはプログラムカウンタ(PC)値を除外する、ステップと、
前記識別子に基づいて、前記ロード命令がロードデータをプリフェッチするための候補ロード命令であるかどうかを決定するステップと
を備える、方法。
【請求項２】
前記関数が、前記少なくとも1つまたは複数のフィールドの1つまたは複数のビットのハッシュ、連結、またはそれらの組合せである、請求項1に記載の方法。
【請求項３】
前記1つまたは複数のフィールドが、ベースレジスタ、宛先レジスタ、即時オフセット、オフセットレジスタ、あるいは前記ロード命令の命令符号化の他のビットのうちの1つまたは複数を備える、請求項1に記載の方法。
【請求項４】
前記ロード命令がロードデータをプリフェッチするための候補ロード命令であると決定された場合、プリフェッチテーブルに記憶されたプリフェッチ情報に基づいてロードデータをプリフェッチするための1つまたは複数のアドレスを計算するステップをさらに備える、請求項1に記載の方法。
【請求項５】
前記プリフェッチ情報が、ロードデータをプリフェッチするためのベースアドレス、ストライド、または距離のうちの1つまたは複数を備える、請求項4に記載の方法。
【請求項６】
前記1つまたは複数のアドレスから1つまたは複数のデータ値をプリフェッチし、前記1つまたは複数のデータ値をデータキャッシュにロードするステップをさらに備える、請求項4に記載の方法。
【請求項７】
前記識別子に基づいて、前記プリフェッチテーブルに記憶された前記プリフェッチ情報にアクセスするステップであって、前記プリフェッチテーブルが、前記識別子によってインデックス付けされたコンテンツアドレス可能メモリ(CAM)を備える、請求項5に記載の方法。
【請求項８】
前記ロード命令の前記PC値のビットのサブセットの関数に基づいて前記識別子を形成するステップをさらに備える、請求項1に記載の方法。
【請求項９】
ロード命令の少なくとも1つまたは複数のフィールドの関数に基づいて識別子を形成するように構成されたハッシュ符号化ブロックであって、前記1つまたは複数のフィールドが前記ロード命令の完全なアドレスまたはプログラムカウンタ(PC)値を除外する、ハッシュ符号化ブロックと、
前記識別子に基づいて、前記ロード命令が、データプリフェッチのための候補ロード命令であるかどうかを決定するように構成されたプリフェッチ機構と
を備える、装置。
【請求項１０】
前記関数が、前記少なくとも1つまたは複数のフィールドの1つまたは複数のビットのハッシュ、連結、またはそれらの組合せである、請求項9に記載の装置。
【請求項１１】
前記1つまたは複数のフィールドが、ベースレジスタ、宛先レジスタ、即時オフセット、オフセットレジスタ、あるいは前記ロード命令の命令符号化の他のビットのうちの1つまたは複数を備える、請求項9に記載の装置。
【請求項１２】
データプリフェッチのための候補ロード命令のためのプリフェッチ情報を記憶するように構成されたプリフェッチテーブルをさらに備え、
前記プリフェッチ情報が、データプリフェッチのためのベースアドレス、ストライド、または距離のうちの1つまたは複数を備える、請求項9に記載の装置。
【請求項１３】
前記プリフェッチテーブルが、前記識別子によってインデックス付けされたコンテンツアドレス可能メモリ(CAM)を備え、前記ロード命令の前記プリフェッチ情報が、前記識別子に対応するエントリに記憶される、請求項12に記載の装置。
【請求項１４】
請求項1から8のいずれか一項に記載の方法を実行するための手段を備える装置。
【請求項１５】
請求項1から8のいずれか一項に記載の方法を実行するための命令を備える非一時的コンピュータ可読記憶媒体。
【国際調査報告】
2018528532.tif 000007
2018528532.tif 000008