Weak Memory Consistency Modelとか最初に言い出した奴は罪重すぎだろ…
Weak Memory Consistency Modelを導入することによって短縮できた処理時間とこれに起因するバグを解決するために費やされた時間のトータルを比較した論文を誰か書くべき。
現代においてはWeak Memory Consistency Model が何か説明できない奴はマルチスレッドプログラムを書くべきではないとかいう話題を書こうとしたのだけど、x86のWCって「キャッシュ不可かつWC」という意味のようで「これで高速化できるが謎のバグを呼ぶぜ」みたいなことが書けなかったのでやる気を削がれた。
ほぼちゃんと順序を守るx86は偉い。が、しかし、x2apicのドキュメント読むと、(http://www.intel.com/Assets/PDF/manual/318148.pdf)
To allow for efficient access to the APIC registers in x2APIC mode, the serializing
semantics of WRMSR are relaxed when writing to the APIC registers.(APICレジスタへのアクセス効率をよくするために、APICのレジスタにWRMSRしたときの順序付け規則は緩められとるよ)
とか書いてあってIntelでも手を抜くことがあるらしい。
あとこれってつまり、Intel社内でAPICレジスタへのアクセスがボトルネックになるケースがあったということなんだろうけど、どういう状況なんだろうか。10Gイーサとか使ってたら、そんな感じになるのかなぁ…全然想像付かない。
(ちなみに普通のAPICはメモリマップされたレジスタで、キャッシュ不可領域に置くべし、と、されている。x86ではキャッシュ不可領域はきちんと順序付けられる)