Index / Reload
IA64でなくて恐縮ですが、他RISCのI/Oアクセスなんかだとストアバッファのフラッシュにはストア→メモリバリア→ロードといったシーケンスを使ったと思いますもっともストアもロードもキャッシュされない領域でしたが釈迦に説法ですね^^;;
> furukawa さんIA-64 上で、別のアーキのメモリモデルをエミュレーションする際に問題になっています。例えばローカル CPU が「ストア」→「ストアバッファ・フラッシュ」→「CPUカウンタを読む」、リモート CPU が「CPUカウンタを読む」→「ロード」を実行した時、2 つの CPU のカウンタが同時刻ならローカル CPU のストア値とリモート CPU のロード値が一致することが保証したいのです。# CPU カウンタは当然同期している前提です。
どういう状況で必要になるのかちょっと想像つきませんでしたが、割り込みハンドラの中とかでしょうか。
IA64でなくて恐縮ですが、他RISCのI/Oアクセスなんかだとストアバッファのフラッシュには
ストア→メモリバリア→ロード
といったシーケンスを使ったと思います
もっともストアもロードもキャッシュされない領域でしたが
釈迦に説法ですね^^;;
> furukawa さん
IA-64 上で、別のアーキのメモリモデルをエミュレーションする際に問題になっています。
例えばローカル CPU が「ストア」→「ストアバッファ・フラッシュ」→「CPUカウンタを読む」、リモート CPU が「CPUカウンタを読む」→「ロード」を実行した時、2 つの CPU のカウンタが同時刻ならローカル CPU のストア値とリモート CPU のロード値が一致することが保証したいのです。
# CPU カウンタは当然同期している前提です。
どういう状況で必要になるのかちょっと想像つきませんでしたが、
割り込みハンドラの中とかでしょうか。