私はCでマルチスレッドプログラムを書いています.1つのコアが定期的にリンクされたリストの先頭からアイテムを取得し、他のコアがリストの後ろにアイテムを追加します(スレッドセーフのためにCASマジックを使用し、他の誰かがそれを提供してくれました) . リストの先頭からアイテムを取得するコアが次のアイテムのプリフェッチを開始するだけで、別のコアのキャッシュにあるはずの次のアイテムのプリフェッチを開始すると、私のプログラムはより高速に実行されるようです。
現在、Debian Linux で gcc を使用してコンパイルしている AMD Opteron 6168 をターゲットにしています。私が見つけることができるのは、 -O3 を使用してコンパイラが挿入したプリフェッチを有効にすること(ループの場合だと思います)と、PREFETCHWのようなAMDプリフェッチ命令名についての言及だけです。
私が求めているものの参照を見つける方法、またはそのようなステートメントをおそらくアセンブリのブロックとして C に挿入する方法がわかりませんか?