2017-03-23 5 views
1

ハードウェアプリフェッチャは連続した仮想アドレスで動作しますか、または連続したハードウェアアドレスで動作していますか?複数のページにまたがる大きなバイト配列がある場合を想像してみてください。仮想アドレス空間では、バイトは連続していますが、実際には、ページはハードウェア内の分離したページに割り当てられます。私は、プリフェッチャが次のページに属するキャッシュラインを持ち込む前にTLBを使って適切な変換を行うことができることを願っています。ハードウェアアドレス空間または仮想アドレス空間でキャッシュプリフェッチが実行されていますか?

これはそうですか? これを確認した情報が見つかりませんでした。

私は主にx86のために求めているが、任意の洞察力は、私はAMDプロセッサーのためにこれを答えることはできませんが、私は、Intelのもののためにそれに答えることができ

+0

通常、キャッシュラインは仮想アドレスページより小さいサイズではありませんか?これは、キャッシュラインが仮想ページの境界を横切らないので疑問に思うでしょう。 –

+0

@ChristopherOezbekいいえ、プリフェッチする可能性があります – harold

+0

@haroldプリフェッチがキャッシュライン上で動作していませんか? –

答えて

0

をいただければ幸いです。

私が知る限り、ハードウェアプリフェッチャは、現在のインテルプロセッサ上のページ境界を越えてキャッシュラインをプリフェッチするべきではありません。インテルのIntel® 64 and IA-32 Architectures Optimization Reference Manualから

、セクション7.5.2、ハードウェアプリフェッチ

自動ハードウェア・プリフェッチは、前のデータのミスに基づいて統一の最後のレベルのキャッシュにキャッシュラインをもたらすことができます。プリフェッチストリームの前に2つのキャッシュラインをプリフェッチしようとします。ハードウェアのプリフェッチャの特徴は以下のとおりです。

  • [...]それは4Kバイトのページ境界を越えてプリフェッチしません
  • 。プログラムは、ハードウェアプリフェッチャーが新しいページからプリフェッチを開始する前に、新しいページのデマンドロードを開始する必要があります。段落の上

は "統一最後のレベルのキャッシュ" について話しているが、物事はL1dの土地ではない方が良いです。

2.3.5.4、データのプリフェッチ

データL1データ・キャッシュへのプリフェッチ

データ・プリフェッチは、次の条件が満たされた場合にロード操作によってトリガーされます。

  • [...]

  • プリフェッチされたデータは、それを引き起こしたロード命令と同じ4Kバイトのページ内にあります。

またはL2で:L2キャッシュおよび最終レベル・キャッシュにメモリから

次の2つのハードウェアプリフェッチャフェッチデータ:

空間プリフェッチャ:[...]

ストリーマ:このプリフェッチャは、L1キャッシュからのアドレスの昇順および降順の読み取り要求を監視します。モニターされた読み取り要求には、ロード操作とストア操作によって開始されたL1 DCache要求と、ハードウェアプリフェッチャーによって開始されたL1 DCache要求、およびコードフェッチのためのL1 ICache要求が含まれます。順方向ストリームまたは逆方向ストリームの要求が検出されると、予想されるキャッシュラインがプリフェッチされる。プリフェッチされたキャッシュラインは、同じ4Kページ内になければなりません。

ただし、プロセッサがページングデータをプリフェッチすることがあります。インテルのIntel® 64 and IA-32 Architectures Software Developer Manualsから、ボリューム3A、4.10.2.3、TLBの使用の詳細:

プロセッサはプリフェッチのために、実際に実行で発生することはない投機的実行の結果であるアクセスに必要な翻訳をキャッシュすることができますコードパス。

ボリューム3A、4.10.3.1、ページング構造ためキャッシュ:

投機の結果であるプリフェッチするために必要な翻訳のためにページング構造キャッシュおよびアクセスのためのエントリを作成することができるプロセッサ実行されたコードパスでは決して実際には実行されません。古いマイクロアーキテクチャで

、PREFETCHデータ変換索引バッファ(DTLB)を引き起こす:私はあなたが、ハードウェアのプリフェッチについて尋ね、知っていますが、データのために(ない命令)ソフトウェア・プリフェッチを使用することができるはず

ミスはなくなるだろう。 Nehalem、Westmere、Sandy Bridge、および新しいマイクロアーキテクチャ、Intel Core 2プロセッサ、およびIntel Atomプロセッサに基づくプロセッサでは、DTLBミスを引き起こすPREFETCHは、ページ境界を越えてフェッチされます( )。

関連する問題