ハードウェアプリフェッチ、ソフトウェアプリフェッチとは?

最終更新日 2023年09月07日

ハードウェアプリフェッチ、ソフトウェアプリフェッチとは何か

【再録】コンピュータアーキテクチャの話(9) キャッシュの構造や働き(上級編) - データの局所性とプリフェッチ | マイナビニュース には、以下のとおり書かれています。(この記事の公開年月日は2019年4月12日)
プリフェッチには、ハードウェアが勝手に推測してやるものと、プリフェッチ命令という専用の命令を設けて、ソフトウェアがその命令を発行してデータをキャッシュに読み込む方法があり、最近の高性能プロセサでは、これらの両方をサポートしているのが普通である。
同記事では、ハードウェア・プリフェッチ、ソフトウェア・プリフェッチ、それぞれの例を解説しています。

例えば、CPU が処理で利用するためにメインメモリの某アドレスにあるデータをキャッシュに読み込み、その某アドレス付近にあるデータは次の処理で利用する可能性があると判断しキャッシュに読み込んでおく、これはハードウェア・プリフェッチの一例だそうです。

CPU がループ処理をする場合、ループ開始時点で今回ではなく次のループで利用するデータがメインメモリにあるならキャッシュに読み込んでおく、これはソフトウェア・プリフェッチの一例だそうです。

ハードウェア・プリフェッチにとっては複雑すぎて推測できず、このようなプリフェッチを行えないので、ソフトウェア・プリフェッチの出番となるそうです。

ASCII.jp:キャッシュの実装方式から見える AMDとインテルの置かれた状況 (2/3)|ロードマップでわかる!当世プロセッサー事情 には、以下のとおり書かれています。(この記事の公開年月日は2010年11月15日)
 余談であるが、x86 CPUではImplicit Prefetchを「Hardware Prefetch」、Explicit Prefetchは「Software Prefetch」と呼ぶのが一般的である。Implicit Prefetchはキャッシュコントローラー(および演算パイプライン中のPrefetcher)がハードウェア的に実行するからHardware Prefetch。対するImplicit Prefetchは、プリフェッチ命令、つまりソフトウェアで実行するからSoftware Prefetchというわけだ。
x86 CPU とは、インテルが開発した命令セット x86 に対応している CPU です。

ハードウェア・プリフェッチやソフトウェア・プリフェッチは、x86 CPU では一般的な呼び方となっているようであり、Implicit Prefetch(暗黙のプリフェッチ)や Explicit Prefetch(明示的プリフェッチ)という呼び方もあるようです。


キャンペーン情報(PR)
マウスコンピューター
・オータムセール
最大50,000円OFF
(10月9日迄)
DELL
・今週のおすすめ製品
対象製品が特別価格でお買い得
(キャンペーン実施中)
パソコン工房
・決算セール
セール対象BTOパソコン最大55,000円OFF
(10月1日迄)

CPUのプリフェッチ



デル株式会社