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

最終更新日 2019年10月11日

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

【再録】コンピュータアーキテクチャの話(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(明示的プリフェッチ)という呼び方もあるようです。


キャンペーン情報
マウスコンピューター
冬のボーナスセール icon
期間限定で大幅値引き!最大60,000円OFF!!(一部モデルのみ)
(11月20日迄)
DELL
・シングルデーセール
モバイルノート、ゲーミングPCほか、クーポンで最大20%Off
(キャンペーン実施中)
ドスパラ
・最大20%ポイント還元 ドスパラ27周年祭
特価パソコンをはじめ、お買得なパソコンパーツ、周辺機器を多数ご用意
(11月7日迄)
パソコン工房
・Windows 10乗り換え応援セール×総額3億円分早い者勝ち!
BTOパソコンやPCパーツ・周辺機器などがお得な価格
(11月26日迄)

CPUのプリフェッチ



マウスコンピューター/G-Tune