竹下世界塔の計算機よもやま話

アクセスカウンタ

zoom RSS SPARCのメモリオーダリング

<<   作成日時 : 2009/05/03 22:58   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

 例えばサイクル数のかかる除算命令の結果をストアした後で、次の計算のためのデータをロードするとしよう。このストアするデータの場所とロードするデータの場所は別々の場所だとする。つまり、依存関係はない。
 通常のプログラム実行順序だとストアが完了しなければロードを始めることができない。もしアウトオブオーダー実行のプロセッサで後続のロード命令を先行させても、この順序では追い越すことができず、性能を発揮できない。アウトオブオーダーでも命令実行完了時は命令の発行順序を守らなければならないからだ。
 このような制限を解消したものがSPARCのメモリモデルである。特権レジスタのPSTATE.MMで設定できる。

・SO(Strong Ordering) ロード/ストアは命令発行順を守る。暗黙に指定される。(ノンキャッシャブル空間など)
・TSO(Total Store Ordering)ロード同士は順序を守る。ストア同士は順序を守り、ストアはロードを追い越さない。
・PSO(Partial Store Ordering)ロード同士は順序を守る。
・RMO(Relax Memory Ordering)ロード/ストアとも順序は守らない。

 先の例で、プロセッサのメモリモデルがTSOに設定されていた場合、除算命令の結果ストア完了を待たずに次命令のロードを実行できる。
 依存関係のあるロード/ストアでは動作が保証されないため、MEMBAR命令を使って先行するストアやロードが完了するのを待つ。
 RMOモード用に書かれたソフトは修正なしてPSOモードで動作する。PSOモード用に書かれたソフトは修正なしでTSOモードで動作する。
 SPARCV8/V9で実装が必須なのはTSOモードであり、PSO,RMO(V9)は実装依存である。
 富士通のSPARC64 VI,VII,VIIIではTSOモードしかサポートしていない。おそらく実装と検証が面倒くさい割には性能向上が少ない、または標準OSであるSolarisがPSO/RMO用に書かれていないからだろう。PSO/RMOで性能を出すためにはそれ用にコードを書かなければならないからだ。
 TSO/PSOについてはSPARC V8でも定義されていた。元々はマルチプロセッサ間の通信の性能向上のためのものだった。

SPARC V8 仕様書 http://www.sparc.org/standards/V8.pdf
SPARC V9 仕様書 http://www.sparc.org/standards/SPARCV9.pdf

このようなモードは他のプロセッサでもサポートされているはずなのだが、勉強不足でまだ見つけていない。

5/4追記
ヘネパタ日本語第四版に解説があった。p.267「リラックスコンシステンシモデル:基本」でTSO,PSOに関する記述がある。シーケンシャルコンシステンシとはStrongOrderingのこと。
これらはメモリコンシステンシモデルと呼ぶのが一般的なようだ。
PowerPCはRMOに相当するモデルを持っているらしい。
参考:http://www.u-aizu.ac.jp/~minyi/course/paraarch2003/amano-3-2.pdfの前半

コンピュータアーキテクチャ 定量的アプローチ 第4版 (IT Architects’ Archive)コンピュータアーキテクチャ 定量的アプローチ 第4版 (IT Architects’ Archive)
中條 拓伯 吉瀬 謙二

翔泳社 2008-02-21
売り上げランキング : 112129

Amazonで詳しく見る
by G-Tools


テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




SPARCのメモリオーダリング 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる