Index
/
Reload
Edit on
2006-08-11
このコメントを修正します。
内容を修正した後で投稿時のパスワードを入力してください。
現在、コメントを削除する機能がありません。
コメントを削除したい場合には、 コメント欄を空欄にしておいてください (管理人が後で削除します)。
お名前:
E-mail or URL:
Password:
コメント:
うんのさんのコメント[19]へ: http://uhideyuki.sakura.ne.jp/uDiary/?date=20060922 のうんのさんのblogを拝見させていただきました。 ただコメント[15]の私のお願い(うんのさんは御自身の global visibility order の定義をスタンダードだと考えられてますが、その出典を明らかにして欲しい)への回答にはなっていないと思います。 ですが blog に「TSO 等のメモリ・モデルは、global visible order に関する規則です。にも関わらず、例えば、load がいつの時点で global visible になるのか、そもそも、global visible とはなんなのか?という記述なしに、TSO の説明が始まっているように見えます。なぜなら、TSO メモリ・モデル全体が、global visible order を定義するからです。」という言葉があり、うんのさんが global visibility order = memory model と信じられているのは分かりました。 そう疑ってはいたのですが「SPARC の用語定義においては、Memory order と global visiblility order とは別の概念です(コメント[13])」とか「(a),(b) は明らかにあやまってますね(同[13])」とか言ううんのさんの言葉に躓いて、global visibility order = memory model という結論に至れませんでした。 続いてうんのさんは blog の中で「特定のインプリメントに依存しないようにglobal visible order を定義する方法は、これしか無いように思われます。」とおっしゃいます。それならインプリメントにもメモリモデルにも依存しない global visible order の定義があるとすると、その方がスマートだとは思われませんか。 その後、blog の中で例を引きながら以下のような説明をされていますが、 1. Memory model によって決まる memory ordering に従ってメモリ操作の順序付けられる。 2. メモリ操作のうちプロセッサの外部に出て行くメモリ操作は、外部から観測できる。 3. 外部からの観測で global visibility order が決まる。 4. 残ったメモリ操作(ここでは local load)は、memory ordering rule を再適用して順序を決める。 1. と 4. は一致しないかも知れませんが両方とも memory odering rule に従うわけで、幾分トートロジカルです。4. の替わりに「load はその値の供給した store より後」という束縛を加えれば、メモリモデルへ依存せずに global visibility order が定義できます。 ところで以下のような思考実験をした場合、私は memory model による global visibility order の定義に違和感を感じます。 --- TSO に良く似た別のメモリモデル "Pseudo TSO" があるとします。 1. 後続 store は先行 store を追い越せない。 2. アドレスの異なる後続 load は先行 store を追い越せる。 3. load は load を原則追い越せないが、4. のような local load を通常の load が追い越してもよい。 4. 同じメモリアドレスへ store → load があった場合、load は store から直接データを貰える(メモリに読みに行かない)が store が完了するまで待つ必要がある。 Pseudo TSO は条件によって load → load の追い越しを認めるのが True TSO と違う所です。ですが、True TSO と Pseudo TSO は両方 self-consisntecy で、他のプロセッサから観測したメモリ操作はまったく同じになります。 では 1:store [X] → 2:load [X] → 3:load[Y] のコードを二つのメモリモデルで実行して、3: → 1: となるような追い抜きが起こった場合はどうでしょう。Memory order として True TSO の場合は 2: → 3: → 1: になり、Pseudo TSO の場合は 3: → 1: → 2: になりますよね。 問題は global visibility order で、うんのさんの解釈では True TSO の場合は 2: → 3: → 1: で Pseudo TSO の場合は 3: → 1: → 2: という異なる結果になります。 この結果にうんのさんが違和感を感じられないのだとしたら、あとは authorized された global visibility order の定義を探す旅に出るか、堂堂巡りの議論を繰り返すだけになると思います。 --- コメントが長大になりすぎるのはスパム対策的にまずいので、次のコメント[23] に続けます。
Powered by
くっつき BBS