Index
/
Reload
Edit on
2006-08-11
このコメントを修正します。
内容を修正した後で投稿時のパスワードを入力してください。
現在、コメントを削除する機能がありません。
コメントを削除したい場合には、 コメント欄を空欄にしておいてください (管理人が後で削除します)。
お名前:
E-mail or URL:
Password:
コメント:
こんにちは。覚えていていただけたようで、嬉しいです。 >命令順序 1. store [X] 2. load [X] 3. load [Y] >実行順序 2. load [X] 3. load [Y] 1. store [X] > >となっているだけで、2. と 3. の順序は変わっていないということでしょうか? そうです。ただ、「実行順序」という呼び方は微妙、というか、危険な感じがしますが。 Out-of-order マシンは、「実行」順序は次の制約を守っているかぎりどんな風に変えてもよい: ・実行しているプロセッサ自身からみると、実行順序は、命令順序と同じに見えなくてはならず(self-consistency)、 ・グローバル(または他プロセッサ)からみると、TSO を守っている必要がある という考え方の上に成り立っています。 で、グローバルから見たとき load [X] 3. load [Y] 1. store [X] となるのは、TSO 違反でもなんでもありませんよ、というわけです。 実は、最近、身近でもこの件に関して誤解されてしまっているのを目撃したばかりで、個人的にホットな話題だったため、つい反応してしまいました。 なお、「このタイプのロード→ロードの追い抜きは発生する。」という誤解は、実用的にも問題があるかもしれません。 なぜなら、3. load [Y] の直前に「フェンス命令」をおくのであれば、 Membar #StoreLoad (SPARC V9 の場合)であるべきなのですが、 ロード→ロード追い越しと考えてしまうとこれがわからなくなりますから。 んで、なんでもかんでも「最強」のフェンス命令を置くはめになってしまうと>"余計に入れたり"
Powered by
くっつき BBS