5

Intel開発者マニュアルで次の段落を見つけました。

チャパー「SSE3、SSSE3、SSE4、および AESNI を使用したプログラミング」より

ストリーミング ロードは、副作用のある I/O デバイスにマップされたメモリ アドレスを参照する場合や、これらのデバイスへの読み取りが破壊的な場合に使用しないでください。これは、MOVNTDQA が本質的に投機的であるためです。

誰でもこの質問を明確にすることができますか?

OpenGLでマッピングされたバッファオブジェクトに何らかのSSEアセンブリを適用しようと考えているので質問しているのですが、その破壊的な言葉が怖いです。この主題はマップド メモリに適用されますか? 実際、glMapBuffer 呼び出しの背後にあるものはわかりません。

グラフィックカードが破壊されることはないと思いますが(:)、確かにその言葉はよく聞こえません。

4

1 に答える 1

5

ここでの破壊的とは、デバイスがそのキューから次のアイテムを読み取るためのメモリ マップされた方法を提示する場合など、1 回しか実行できない読み取りを指します。その場合、その場所からもう一度読み取ると、2 番目の結果が得られます。MOVNTDQA は投機的であるため、これは不適切です。そのため、分岐の予測ミスにより命令が最終的にスキップされた場合でも、フェッチが実行される可能性があります。最初のフェッチからのデータは、ハードウェアに実際の害はありませんが、取り返しのつかないほど破壊されます。

MMIO レジスタではなく、別のデバイスの通常の RAM にアクセスしようとしているだけなので、心配する必要はありません。

于 2011-11-05T00:20:46.307 に答える