メモリコンシステンシモデル memory consistency model

Slides:



Advertisements
Similar presentations
第3回 並列計算機のアーキテクチャと 並列処理の実際
Advertisements

第2回 プロセス管理 ジョブ、プロセスとは? プロセスの状態遷移 プロセス制御ブロック スケジューリング.
情報理工学系研究科 コンピュータ科学専攻 上嶋裕樹
情報検索概説II 第8回 パソコン組み立てと記憶装置 1999/11/25.
計算機工学III オペレーティングシステム #14 ファイル: より進んだファイルシステム 2006/07/21 津邑 公暁
07. 値予測 五島 正裕.
Chapter11-4(前半) 加藤健.
メモリコンシステンシモデル memory consistency model
記 憶 管 理(1) オペレーティングシステム 第9回.
LZ圧縮回路の設計とハード・ソフト 最適分割の検討 電子情報デザイン学科 高性能計算研究室 4回生 中山 和也 2009/2/27.
プログラミング基礎I(再) 山元進.
マルチコア時代の 並列プログラミング ~ロックとメモリオーダリング~
計算機システムⅡ 主記憶装置とALU,レジスタの制御
クラスタコンピューティングの 並列環境と性能
5.チューリングマシンと計算.
5.チューリングマシンと計算.
オペレーティングシステム 第5回 プロセスの相互排除
オペレーティングシステムJ/K 2004年10月7日
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
高性能コンピューティング論Ⅰ ほんだ ひろき 本多 弘樹
第6章 トランザクション管理 6.1 トランザクションの概念 6.2 同時実行制御 6.3 障害回復.
高性能コンピューティング論Ⅰ ほんだ ひろき 本多 弘樹
小型デバイスからのデータアクセス 情報処理系論 第5回.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
並列分散プログラミング.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
CSP記述によるモデル設計と ツールによる検証
Ibaraki Univ. Dept of Electrical & Electronic Eng.
CONCURRENT PROGRAMMING
現金に替わる電子マネーの実装 200702894 大城 翔太 木下研究室.
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
単一システムイメージを 提供するための仮想マシンモニタ
大規模アドホックネットワークにおける 階層的な名前解決法
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
Occam言語による マルチプリエンプティブシステムの 実装と検証
Lazy Release Consistency
全体ミーティング 金田憲二.
MPIを用いた最適な分散処理 情報論理工学研究室 角 仁志
勉強会その5    2016/6/15 マルチコア/マルチプロセッサ キャッシュコヒーレンス 10 8分35秒.
梅澤威志 隣の芝は茶色いか 梅澤威志
リモートホストの異常を検知するための GPUとの直接通信機構
アルゴリズムとプログラミング (Algorithms and Programming)
Advanced Computer Architecture
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
通信機構合わせた最適化をおこなう並列化ンパイラ
実行時情報を用いて通信を最適化するPCクラスタ上の並列化コンパイラ
メモリ投機を支援する CMPキャッシュコヒーレンスプロトコルの検討
08. メモリ非曖昧化 五島 正裕.
慶應義塾大学理工学部 天野英晴 共有メモリ型計算機  慶應義塾大学理工学部 天野英晴
そろそろvolatileについて一言いっておくか
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
09. メモリ・ディスアンビギュエーション 五島 正裕.
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
アルゴリズムとプログラミング (Algorithms and Programming)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 9 回.
マイグレーションを支援する分散集合オブジェクト
第4回 メモリ管理 主記憶(メインメモリ)の管理 固定区画方式と可変区画方式 空き領域の管理 スワッピング.
5.チューリングマシンと計算.
SpectreとMeltdown ITソリューション塾・第27期 2018年3月20日 株式会社アプライド・マーケティング 大越 章司
オペレーティングシステムJ/K (並行プロセスと並行プログラミング)
コンピュータアーキテクチャ 第 9 回.
MPIを用いた並列処理計算 情報論理工学研究室 金久 英之
SMP/マルチコアに対応した 型付きアセンブリ言語
BSPモデルを用いた 最小スパニング木 情報論理工学研究室 02-1-47-134 小林洋亮.
3 分散システムのフォールトトレランス 分散システム Distributed Systems
アーキテクチャパラメータを利用した並列GCの性能予測
Presentation transcript:

メモリコンシステンシモデル memory consistency model

メモリコンシステンシモデル 問題の所在: 複数PE(命令列)のコンピュータでは プログラムの意図と違う結果となりうる 同一PEでの異なるメモリロケーションへの複数アクセス命令 >命令発行順序はプログラムに記述された順とは限らない   ∵データ依存が無いから >プログラム記述順で発行さても完了がその順とは限らない    read完了:値を読み終える write完了:書き込んだ値を他のPEが観察できる あるPEでの異なるメモリロケーションへの複数write命令の結果は,他のPEで異なる順に観察することがありうる (write atomicityが無い場合) プログラムの意図と違う結果となりうる

メモリコンシステンシモデル メモリコンシステンシモデル: メモリアクセス命令の実行完了の順序変更(リオーダリング)にどのような制限を前提とするか(どのような順序変更が行われうると覚悟しなければいけないか)を定める メモリアクセスのリオーダリングを制限するほど →直感的にプログラムを理解しやすい →プログラムの最適化や並列化の可能性が低減 同一メモリロケーションへのアクセス命令に関しては 同一PE内では命令間にデータ依存があるので発行/完了の順序が逆転することはない キャッシュコヒーレンスメカニズムにより複数write命令による変数の値の更新が全PEで同一に観察される

キャッシュコヒーレンシ(cache coherency) 分散キャッシュ:各PEにローカルキャッシュ →同一変数(メモリロケーション)の複数キャッシュ上で存在することを許すと → キャッシュコヒーレンシ問題が発生 PE1 PE2 PE3 PE4 PE1 PE2 PE3 PE4 主 記 憶 $ 主 記 憶 $ 主 記 憶 $ 主 記 憶 $ $ $ $ $ 相互結合ネットワーク 相互結合ネットワーク 主記憶

キャッシュコヒーレンシ 分散キャッシュの問題点 y=x*2 →PE1 z=x+1 →PE3 x=x*3 →PE1 zz=x+1 →PE3 0.同一の変数が複数のキャッシュ上にコピー可能とする PE1 PE2 PE3 PE4 $ $ $ $ 相互結合ネットワーク x:3

キャッシュコヒーレンシ 分散キャッシュの問題点 1.PE1がxをread read miss 主記憶からPE1のキャッシュ 上にxをコピー read(x) PE1 PE2 PE3 PE4 x:3 $ $ $ 相互結合ネットワーク x:3

キャッシュコヒーレンシ 分散キャッシュの問題点 2.PE3がxをread read miss 主記憶からPE3のキャッシュ 上にxをコピー read(x) PE1 PE2 PE3 PE4 x:3 $ x:3 $ 相互結合ネットワーク x:3

キャッシュコヒーレンシ 分散キャッシュの問題点 3.PE1がxに書き込み write hit PE1のキャッシュだけを書換える 4.PE3が再度xをread read hit  xの古い値をreadしてしまう! write(x) read(x) PE1 PE2 PE3 PE4 x:9 x:3 $ x:3 $ 相互結合ネットワーク x:3

キャッシュコヒーレンシ コヒーレンシが保たれている: (1)あるプロセッサでのwriteの結果が他のプロセッサからも観察できる 書き換え方式(write-update) write(x) read(x) PE1 PE2 PE3 PE4 x:9 x:3 $ x:3 x:9 $ 相互結合ネットワーク x:3 x:9

キャッシュコヒーレンシ コヒーレンシが保たれている: (1)あるプロセッサでのwriteの結果が他のプロセッサからも観察できる 無効化方式(write-invalidate) write(x) read(x) PE1 PE2 PE3 PE4 x:9 x:3 $ x:3 x:9 x:? $ 相互結合ネットワーク x:3 x:9

キャッシュコヒーレンシ コヒーレンシが保たれている: (2)複数のwriteの順序が全てのプロセッサで同一に観察できる(write atomicityが有る) write(x=9) write(x=5) PE1 PE2 PE3 PE4 x:9 x:3 x:5 $ x:5 x:3 x:9 x:3 x:5 x:9 $ 相互結合ネットワーク x:3 x:5 x:9

キャッシュコヒーレンシ 通常,キャッシュコヒーレンシを保つようハードウェアを構成する 共有メモリ+共有バスでのスヌープ(のぞき見方式)キャッシュ 分散共有メモリでのデレクトリ方式(登録簿方式)キャッシュ コヒーレンスが保たれているとは同一変数へのwriteに関して: PEでのwriteの結果が他のPEでも観察できる 複数のwriteの結果が全てのプロセッサで同一順序に観察できる(最後のwriteが一意に決まる)

Sequential consistency (SC) 並列プログラムにおける各PEのプログラムの命令記述順序を保持したまま,全PEのプログラムをマージして一つの逐次プログラムとする場合,そのようなプログラムは複数考えられる. これらのプログラムを,「先行する命令が完了してから次の命令を実行する(writeはatomicに実行)」,というように逐次実行した結果の集合をAとする(命令列が複数あるので結果も複数). 元の並列プログラムを並列実行した結果が必ずAの集合の要素となる場合,そのような実行をSequential Consistencyな実行とする.またそのように実行するシステムをSequential Consistencyなシステムとする.

Sequential consistency (SC) a=1,b=2に初期化 PE1:  PE2: a=10; print b; b=20; print a; print b; print a; a=10; b=20; a=10; b=20; print b; print a; 全マージプログラム print b; a=10; print a; b=20; print b; a=10; b=20; print a; a=10; print b; print a; b=20; a=10; print b; b=20; print a;

Sequential consistency (SC) print b, print aはこの順序を維持するとする SCでは結果(4)はありえない a=1,b=2に初期化 PE1:  PE2: a=10; print b; b=20; print a; 実行結果 (1) (2) (3) (4) 2 2 20 20 1 10 10 1 print b; print a; a=10; b=20; print b; a=10; print a; b=20; print b; a=10; b=20; print a; a=10; print b; print a; b=20; a=10; print b; b=20; print a; a=10; b=20; print b; print a;

Sequential consistency (SC) 直感に合う 制限がきつすぎる コード最適化がほとんどできない メモリアクセスレイテンシを隠蔽できない 並列プログラムの意味を保つためにはそこまで制限をきつくする必要はない SCの制限を緩和したコンシステンシモデルの必要性

TSO,PC SCの制限を以下のように緩和したモデル 1)Total Store Ordering (TSO) あるプロセッサでのWriteが完了とは,他の全プロセッサで,そのWriteされた値のReadが可能な状態になること. TSO,PC SCの制限を以下のように緩和したモデル 各PEにおいて,read は,先行するwriteの完了を待たずに,完了可能とする (write間/read間の実行順序は保たれる)  1)Total Store Ordering (TSO) writeはSCと同様アトミックに実行  2)Processor Consistency (PC) TSOと同様だが,さらにwriteはアトミックではないとする 先行するwriteがキャッシュミスした際などのレイテンシを隠蔽可能.ストアバッファの利用. あるプロセッサでのReadが完了とは,他のプロセッサで,そのReadする値のWriteが不可能な状態になること.

TSO,PC read が,先行するwriteの完了を待たずに完了可能とすると・・・ a=flag=0に初期化 PE1: PE2: write間およびread(printはreadと同じ)間の実行順序が保たれるのでSCと同じ結果 a=flag=0に初期化 PE1:         PE2: a=1; while(flag==0) ; flag=1; print a;

TSO,PC read が,先行するwriteの完了を待たずに完了可能とすると・・・ a=1,b=2に初期化 PE1: PE2: write間およびread(printはreadと同じ)間の実行順序が保たれるのでSCと同じ結果 a=1,b=2に初期化 PE1:  PE2: a=10; print b; b=20; print a;

TSO,PC read が,先行するwriteの完了を待たずに完了可能とすると・・・ print b; a=1,b=2に初期化 SCでは「2,10」「1,20」「10,20」「20,10」はあっても  「1,2」や「2,1」のプリントはありえない TSOとPCではreadの完了がwriteの完了を待たなくて良いため, 「1,2」や「2,1」の結果もありうる a=1,b=2に初期化 PE1:  PE2: a=10; b=20; print b; print a; print b; print a; a=10; b=20;

TSO,PC read が,先行するwriteの完了を待たずに完了可能とすると・・・ a=b=0に初期化 PE1: PE2: PE3: PCではwriteがatomicでないため,aが0とプリントされる可能性もある PCでは,PE2にはa=1が伝わっていてもPE3には伝わっていない可能性あり a=b=0に初期化 PE1: PE2: PE3: a=1; while(a==0); while(b==0); b=1; print a;

TSO,PC TSO,PCでSCを保証するには同期メカニズムが必要 readが,先行するwriteの完了を待つようにする 例)メモリバリア命令 writeのatomicityを保証する(PCの場合) PSO(Partial Store Ordering, Sun Sparc) writeが,先行するwriteの完了を待たずに完了可能

WC,RC さらに制限を以下のように緩和したモデル readもwriteも,先行するreadやwriteの完了を待たずに完了することができる  1)Weak Consistency(WC) 2)Release Consistency(RC)

WC Weak Consistency プログラム中に「同期命令」を挿入する. 同期命令は,それより先に記述されているreadやwriteの完了後でなければ発行できない 同期命令より後に記述されているreadやwriteは,その同期命令完了後でなければ発行できない 同期命令間のreadやwriteは任意にリオーダリングできる 同期命令自体はSCを満たさなければならない

WC Weak Consistency a=b=flag=0に初期化 PE1: PE2: a=1; e=100; 二つのprintの順番は入れ替えられる可能性があるので「1,2」または「2,1」とプリントされうる.a,bとも0とプリントされることは無い a=b=flag=0に初期化 PE1:          PE2: a=1; e=100; b=2; while(flag==0(sync)); flag=1(sync); print a; c=d; print b;

WC Weak Consistency a=b=flag=0に初期化 PE1: PE2: a=1; e=100; c=d;はflag=1;が終了してから出ないと実行できない.この二つの命令は特に順序関係は必要ないのに... 同様にwhileはe=100;が完了してから出ないと実行できない.特に順序関係は必要ないのに...そこで a=b=flag=0に初期化 PE1:          PE2: a=1; e=100; b=2; while(flag==0(sync)); flag=1(sync); print a; c=d; print b;

RC Release Consistency 同期命令を「獲得命令」と「解放命令」の二つに分ける 獲得命令の後に記述されているreadやwrite命令は獲得命令完了後でなければ発行できない 獲得命令は,それより前に記述されているreadやwriteの完了を待つ必要は無い 解放命令は,それより前に記述されているreadやwrite命令の完了後でなければ発行できない 解放命令後に記述されているreadやwriteは解放命令の完了を待つ必要は無い 獲得命令はreadに対応させ,解放命令はwriteに対応させ,これらはPCに従う それ以外は任意にリオーダリング可能

RC Release Consistency a=b=flag=0に初期化 PE1: PE2: a=1; e=100; c=d;はflag=1;の完了を待たずに発行可能 while;はe=100;の完了を待たずに発行可能 a=b=flag=0に初期化 PE1:          PE2: a=1; e=100; b=2; acq(L); flag=1; while(flag==0); rel(L); print a; c=d; print b;

ERC,LRC Eager Release Consistency Lazy Release Consistency 解放命令より前に記述されているwrite命令の結果は,解放命令を実行した時点でコピーを持っているプロセッサに一括して送付される writeの粒度を大きくできる Lazy Release Consistency 解放命令より前に記述されているwrite命令の結果は,その解放命令に対応する獲得命令が実行された時点でそれを実行したプロセッサにのみ一括して送付される writeによるトラフィックを軽減することができる どちらもソフトウェアDSMで利用される

ERC,LRC ERC PE1 PE2 PE3 PE4 x x aq(L) x= 書込みがあっても何もしない rl(L) 無効化 無駄な通信 read miss/page copy =x rl(L)

ERC,LRC ERC LRC PE1 PE2 PE3 PE4 PE1 PE2 PE3 PE4 x x x aq(L) aq(L) x x= rl(L) rl(L) 何もしない 無効化 aq(L) aq(L) =x =x read miss/page copy rl(L) rl(L)

ERC,LRC ロックマネージャ ERC P0 P1 P2 P3 x x aq(L) x= rl(L) aq(L) =x rl(L)