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

Slides:



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

情報理工学系研究科 コンピュータ科学専攻 上嶋裕樹
メモリコンシステンシモデル memory consistency model
計算機工学III オペレーティングシステム #14 ファイル: より進んだファイルシステム 2006/07/21 津邑 公暁
Chapter11-4(前半) 加藤健.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
計算機システムⅡ キャッシュと仮想記憶 和田俊和.
第6回 仮想記憶とページング ページング ページ取り出し方式 ページ置き換え方式 中間テスト(40分)
記 憶 管 理(1) オペレーティングシステム 第9回.
計算機工学III オペレーティングシステム #9 主記憶管理:ページング 2006/06/09 津邑 公暁
計算機システムⅡ 主記憶装置とALU,レジスタの制御
オペレーティングシステム 第11回 仮想記憶管理(2)
オペレーティングシステムJ/K 2004年10月7日
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
第6章 トランザクション管理 6.1 トランザクションの概念 6.2 同時実行制御 6.3 障害回復.
Disco: Running Commodity Operating Systems on Scalable Multiprocessors
小型デバイスからのデータアクセス 情報処理系論 第5回.
モバイルエージェントの応用 概要 モーバイルエージェントの応用分野 AgentSpaceシステム エージェント移動 応用:ソフトウェアの配信
並列分散プログラミング.
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
Ibaraki Univ. Dept of Electrical & Electronic Eng.
4章 メモリ管理.
CONCURRENT PROGRAMMING
現金に替わる電子マネーの実装 200702894 大城 翔太 木下研究室.
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
専門演習Ⅰ 国際経済学部 国際産業情報学科 2年 石川 愛
単一システムイメージを 提供するための仮想マシンモニタ
GXP・Phoenixによる 大規模並列情報処理
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
Occam言語による マルチプリエンプティブシステムの 実装と検証
型付きアセンブリ言語を用いた安全なカーネル拡張
Lazy Release Consistency
全体ミーティング 金田憲二.
MPIを用いた最適な分散処理 情報論理工学研究室 角 仁志
勉強会その5    2016/6/15 マルチコア/マルチプロセッサ キャッシュコヒーレンス 10 8分35秒.
梅澤威志 隣の芝は茶色いか 梅澤威志
リモートホストの異常を検知するための GPUとの直接通信機構
アルゴリズムとプログラミング (Algorithms and Programming)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
単一システムイメージを 提供するための仮想マシンモニタ
オペレーティングシステムJ/K (仮想記憶管理)
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
通信機構合わせた最適化をおこなう並列化ンパイラ
実行時情報を用いて通信を最適化するPCクラスタ上の並列化コンパイラ
メモリ投機を支援する CMPキャッシュコヒーレンスプロトコルの検討
慶應義塾大学理工学部 天野英晴 共有メモリ型計算機  慶應義塾大学理工学部 天野英晴
そろそろvolatileについて一言いっておくか
オペレーティングシステムJ/K 2004年11月15日2時限目
リカバリ 東大生研 情報融合研究センタ 喜連川優.
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
明星大学 情報学科 2012年度前期     情報技術Ⅰ   第1回
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 9 回.
第4回 メモリ管理 主記憶(メインメモリ)の管理 固定区画方式と可変区画方式 空き領域の管理 スワッピング.
Mondriaan Memory Protection の調査
VMリダイレクト攻撃を防ぐための 安全なリモート管理機構
オペレーティングシステムJ/K (並行プロセスと並行プログラミング)
コンピュータアーキテクチャ 第 9 回.
MPIを用いた並列処理計算 情報論理工学研究室 金久 英之
SMP/マルチコアに対応した 型付きアセンブリ言語
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
アーキテクチャパラメータを利用した並列GCの性能予測
明星大学 情報学科 2014年度前期     情報技術Ⅰ   第1回
Ibaraki Univ. Dept of Electrical & Electronic Eng.
情報システム基盤学基礎1 コンピュータアーキテクチャ編
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)

ERC,LRC 前出の例題 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どちらでも動作する

ERC,LRC 前出の例題 a=b=flag=0に初期化 PE1: PE2: a=1; e=100; b=2; while(flag==0); flag=1; acq(L); rel(L); print a; c=d; print b; LRCでは動作しない

ソフトウェア分散共有メモリ  SDSM: Software Distributed Shared Memory

分散共有メモリ 各PEに物理的に分散しているメモリを,プログラムからはひとつの共有メモリ(単一アドレス空間)として見せる技術 ハードウェアのキャッシュコヒーレンスによるもの CC-NUMAなどハードウェア自体が分散共有メモリタイプ ソフトウェアによるもの クラスタなどハードウェアは分散メモリタイプ 共有変数モデルでプログラミング可能 →メッセージパッシングの必要なし

ソフトウェア分散共有メモリ 各PEに物理的に分散したメモリ上で仮想的に共有メモリを提供 1980年代中期からシステムが出始める データの所在やアクセスの仕方を考慮する必要なし 1980年代中期からシステムが出始める 性能が上がらず普及せず 昨今のクラスタコンピューティングブームで見直されている 仮想記憶システムを利用(page-based DSM) Shared Virtual Memory(SVM) ページ単位(~4Kbyte)でコンシステンシ(一貫性)制御 アクセスデータがローカルメモリ上にない場合 → ページフォルト発生 他ノードかディスクから必要なページをフェッチ

ソフトウェア分散共有メモリ ページ転送機構:ページ共有と一貫性制御(無効化) ページ要求 無効化 PE1 PE2 PE3 read ミス x,y,z read(x) read(x) write(y)

ソフトウェア分散共有メモリ ページ転送機構:ページ共有と一貫性制御(一括書戻) ページ要求 書き戻し PE1 PE2 PE3 read ミス x,y,z read(x) read(x) write(y) write(x) sync

ソフトウェア分散共有メモリ コンシステンシ制御の単位が粗粒度のための利点 欠点 空間的局所性を利用可能 コンシステンシ制御オーバーヘッドが相対的に小さい 欠点 フォールスシェアリング(false sharing)による性能低下 異なるPEが異なる変数へ頻繁にアクセスする際,その変数群が同じページにマップされていると,PEがそのページを取り合う diff作成によるmultiple-writerプロトコルで対処できる

ソフトウェア分散共有メモリ false sharing 無効化 PE1 PE2 PE3 x,y write(x) write(y)

ソフトウェア分散共有メモリ IVY @Yale TreadMarks @Rice APOLLO AEGIS (DOMAIN/OS) 最初のソフトウェアDSM シーケンシャルコンシステンシを実装. TreadMarks @Rice LRCとMultiple-Writerを実装し性能を向上 APOLLO AEGIS (DOMAIN/OS) ネットワークワイドでのオブジェクト(ファイル)管理 単一階層記憶(ファイルを仮想記憶空間にマップ) ネットワークワイドでのデマンドページング Munin, JIAJIA, SCASH, Shasta, Midway, etc... メモリコンシステンシモデルの違い ページ配置(home based or not),ページ粒度

Multiple-Writer Protocol 同一ページへ複数PEが同時期に書込みできる PEは書き込みを始める際にページの元の状態をTwinとしてコピーを保存しておく 書き込みを行なった後,次の同期時点でTwinと書き込みを行ったページの差分(diff)を求める そのページを要求する他のノードにdiffを渡す そのページを要求するノードはdiffを集めページに反映させてからそのページにアクセスする diffの集積とページへの反映方法 diff分散方式:ページ要求時に各プロセッサからdiffを集め回る(Tread Marks) home based: 各ページのホームを決めておいて同期時にそこへ集積する(JIAJIA)

Multiple-Writer Protocol home based ページ要求 P0 P1 P2 write ミス home x,y,z write(x) twin作成

Multiple-Writer Protocol home based ページ要求 P0 P1 P2 write ミス home x,y,z write(y) twin作成

Multiple-Writer Protocol home based P0 P1 P2 home x,y,z diff作成 diff作成

高性能コンピューティング論Ⅰ 高性能コンピューティングのキーテクノロジである並列処理に関して,その原理と利用技術(主にソフトウエア)の視点から解説