緩和された書き込みから読み出し
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/29 18:38 UTC 版)
「一貫性モデル (ソフトウェア)」の記事における「緩和された書き込みから読み出し」の解説
ハードウェアレベルで性能を向上させるためのアプローチとして、書き込みの後に読み出しを行うプログラム順序(PO)を緩和することで、書き込み操作のレイテンシーを効果的に隠すことができる。この種の緩和は、プロセッサからの以前の書き込みに対して、後続の読み取りの順序を緩和するという最適化に依存している。この緩和のために、XXXのようないくつかのプログラムは、逐次一貫性(SC)の結果を出すことができないかもしれない。一方、YYYのようなプログラムは、残りのプログラム順序制約が適用されているため、一貫した結果が得られることが期待される。 3つのモデルが該当する。IBM 370モデルは、最も厳格なモデルである。読み取りは、異なるアドレスへの先の書き込みの前に完了することができるが、すべてのプロセッサが書き込みを見ていない限り、書き込みの値を返すことは禁止されている。SPARC V8のTSO(total store ordering model)モデルは、IBM 370モデルを部分的に緩和したもので、同じ場所への他の書き込みに対して、自分のプロセッサの書き込みの値を返すことができる。前述のモデルと同様に、これもすべてのプロセッサが書き込みを見ていない限り、書き込みの値を返すことはできない。プロセッサ一貫性モデル(PC)は、3つのモデルの中で最も緩和されたモデルであり、両方の制約を緩和して、他のプロセッサから見えるようになる前であっても、以前の書き込みよりも先に読み取りが完了できるようにしている。 例Aでは、IBM 370ではwrite(A)が完了するまでread(A)が発行されないため、この結果はIBM 370でのみ可能である。一方、TSOやPCでは、1つのプロセッサでフラグの書き込みが完了する前にフラグの読み出しが可能なため、この結果が得られる。 例Bでは、P2がP3に表示される前に書き込みの値を返すことができるため、PCでのみ可能となる。これは、他の2つのモデルでは不可能である。 上記のモデルでは、順序の一貫性を確保するために、セーフティネットやフェンスを用いて手動で制約をかけています。IBM370モデルでは、操作の間に手動で配置される特殊な直列化命令があります。これらの命令は、メモリ命令や分岐などの非メモリ命令で構成される。一方、TSOモデルやプロセッサ一貫性(PC)モデルではセーフティネットが用意されてないが、プログラマはリードモディファイ・ライトオペレーションを使用して、書き込みとそれに続く読み出しの間でプログラムの順序が維持されているように見せることができる。TSOの場合、すでにR-modify-Wの一部となっているRまたはWをR-modify-Wに置き換えれば、プログラム順序(PO)が維持されているように見えるが、これにはR-modify-WのWが読み取り値を返す「ダミー」であることが必要である。PCについても同様に、リードがライトに置き換えられたり、すでにR-modify-Wの一部になっていたりしても、プログラム順序(PO)は維持される。 しかし、この緩和だけを行使しても、コンパイラ最適化はできない。コンパイラ最適化には、プログラム順序(PO)内の任意の2つの操作を並べ替えることができる完全な柔軟性が必要なので、リードに対するライトの並べ替え機能は、この場合には十分に役立たない。 事例 Aプロセッサー1プロセッサー2A = flag1 = flag2 = 0 flag1 = 1 flag2 = 1 A = 1 A = 2 reg1 = A reg3 = A reg2 = flag2 reg4 = flag1 reg1 = 1; reg3 = 2, reg2 = reg4 = 0 事例 Bプロセッサー1プロセッサー2プロセッサー3A = B = 0 A = 1 if (A == 1) B = 1 if (B == 1) reg1 = A B = 1, reg1 = 0
※この「緩和された書き込みから読み出し」の解説は、「一貫性モデル (ソフトウェア)」の解説の一部です。
「緩和された書き込みから読み出し」を含む「一貫性モデル (ソフトウェア)」の記事については、「一貫性モデル (ソフトウェア)」の概要を参照ください。
- 緩和された書き込みから読み出しのページへのリンク