- 983 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 22:56:43 ]
- 前々スレくらいでvolatile厨を繁殖させた者です。
この話題って、あの時のフラグ変化の検出の話題と凄く似ていると思う。 あの時は単なるフラグで、1ビットでも変化している事を検出できれば 良かったから、不必要にややこしくしそうで触れなかったんだけど。 前の時のポイントは、 1. メモリから読み込んだ値を利用(計算)した結果を書き込むのではなく、 完全に新規な値をメモリに書き込む。 2. 更新前の古い値を他のプロセッサがキャッシュの関係で読み込んでも、 伝搬されて更新された値を近いうちに読み込めればよい。 という前提において、 必ずしも同期を取らなくても動作に支障はないが、最適化による レジスタへの張り付きを防止するためにvolatileは必要となる。 今回も似たようなもので、更新前のメモリの内容に依存しないので、 ワード境界に整列されたワード単位のメモリ転送命令がアトミックに 行われるかどうかを確認するだけで解決できるんじゃないの?
|

|