Download presentation
Presentation is loading. Please wait.
1
4章 メモリ管理
2
4.メモリ管理 概論 TLBコヒーレンス制御 高速化技法 メモリコンシステンシモデル 分散共有メモリシステム
ページを基盤としたシステム 共有変数を基盤としたシステム NUMAマルチプロセッサにおけるメモリ管理 キャッシュおよびDSMとの相違 検討課題 ソフトウェア技術 実現例
3
4.メモリ管理:概論 検討課題 UMAアーキテクチャ NUMAアーキテクチャ NORMAアーキテクチャ メモリアクセスの高速化
キャッシング技法 コヒーレンス制御 ページ表:TLB コード/データ NUMAアーキテクチャ メモリアクセスの不均一性を考慮 ローカル/リモートメモリ NORMAアーキテクチャ
4
TLBコヒーレンス制御 TLBコヒーレンス問題 データのキャッシング データ: 仮想 → 実アドレスのマッピング情報
データ: 仮想 → 実アドレスのマッピング情報 オリジナル(キャッシング元): ページ表 キャッシング先:TLB(Translation Lookaside Buffer)
5
プロセッサ0 プロセッサ1 TLB TLB メモリ 図4.1 TLBコヒーレンス タスクAの論理アドレス空間 スレッド スレッド
ページ フレーム 2 スレッド ページ フレーム 2 TLB TLB ①ページ9をフレーム2にマッピング タスクAの論理アドレス空間 ページフレーム2 ページフレーム1 ページフレーム0 ②間違ったアクセス ページ9 ページ1 ページ0 変更後 の対応 変更前 の対応 メモリ 図4.1 TLBコヒーレンス
6
TLBコヒーレンス問題:考慮すべき問題点
ハードウェアアーキテクチャ ページ表 → TLBへのローディング TLB → ページ表への書き込み ハードウェアが行っているか否か? コヒーレンスを保証する範囲 強いコヒーレンス保証 処理中でもコヒーレンスを保証 弱いコヒーレンス保証 処理完了後のコヒーレンスを保証 処理中のコヒーレンスは保証していない.
7
TLBコヒーレンス制御 ページ情報変更の分類 (1)安全な変更(safe change) (2)危険な変更(unsafe change)
変更が生じても,すぐに対処する必要がない変更 後で,OSで対処できる. 例 ページ保護レベルが上がる(緩和)場合 Read-only → read-write メモリへページがロードされる場合 Invalid → valid (2)危険な変更(unsafe change) 変更が生じたら,すぐにコヒーレンスを保つ必要がある変更 ページ保護レベルが下がる場合 Read-write → read-only ページがページアウトされる場合 Valid → invalid
8
TLBコヒーレンスアルゴリズム シュートダウン(TLB shootdown)アルゴリズム 修正シュートダウン(modified shootdown)アルゴリズム Read-locked TLBs Validation
9
シュートダウンアルゴリズム(1/4) プロセッサ0 プロセッサ1,2 ①準備を依頼 イニシエータ レスポンダ ②準備OK ③ページ表を変更
メモリ ページ表 図4.4 シュートダウンアルゴリズム概要
10
図4.5 シュートダウンアルゴリズム イニシエータ レスポンダ ・割込み禁止 ・active[self]:=0 ・ページ表のロック
・レスポンダにTLB無効化を通知(メッセージのキューイング) ・レスポンダに割り込み通知 ・自TLBの無効化 全レスポンダrがactive[r] = 0 になるまで繁忙待機(ロック変数上) ページ表変更 ページ表のアンロック 割込みレベルを元に戻す ・割込み ・割込み禁止 ・active[self]:=0 ページ表がアンロックされるまで繁忙待機(ロック変数上) ・無効化通知をキューから削除 ・自TLBの無効化 ・active[self] := 1 ; ・割込みレベルを元に戻す ・割込み ・割込み禁止 ・active[self]:=0 ページ表がアンロックされるまで繁忙待機(ロック変数上) ・無効化通知をキューから削除 ・自TLBの無効化 ・active[self] := 1 ; ・割込みレベルを元に戻す 図4.5 シュートダウンアルゴリズム
11
シュートダウンアルゴリズム(2/4) 利点 欠点 完全なコヒーレンスを保証
イニシエータが起動中のコヒーレンスを保証(レスポンダをアイドルにする) 欠点 同期のオーバヘッド大 イニシエータ: 全レスポンダのアイドル確認後,ページ表エントリを変更 レスポンダ → イニシエータの処理時間が増大 レスポンダ: ページ表変更(イニシエータ)完了まで,繁忙待機 プロセッサ間通信(割込み)レベルが低いハードウェア上では,割込み受信が遅れる.
12
シュートダウンアルゴリズム(3/4) シュートダウンアルゴリズムがサポートするマシンの特徴
プロセッサ シュートダウンアルゴリズムがサポートするマシンの特徴 TLBエントリからPTEへの書込みがハードウェアで行われる. (例)PTE内の参照ビット設定の時 PTE全体を対応するTLBエントリで上書きする. TLB MPU エントリ ヒット 上書き (ハードウェア) メモリ 参照ビット エントリ ページ表 図4.2 ハードウェアによるページ表の上書き
13
シュートダウンアルゴリズム(4/4) シュートダウンアルゴリズムの必要性 直観的方法
シュートダウン: 全レスポンダをアイドルにした後,PTEを変更. 直観的方法 イニシエータのPTE変更後,レスポンダがTLBを無効化 イニシエータ レスポンダ (プロセッサ間割込み) TLBの無効化要求 PTEを変更 自エントリを無効化 応答待ち 自エントリを無効化
14
図 直観的方法の例(ページ5をread-writeからへread-only)
イニシエータ レスポンダ ページ 番号 ページ 番号 保護属性 保護属性 タスクAの スレッド1 タスクAの スレッド1 5 r/w 5 r/w ②ヒット TLB TLB ③上書き ①変更 r/w → r 5 保護属性 ページ 番号 タスクAのページ表 ページ表の保護属性 ① r/w → r ③ r → w (元に戻る) 図 直観的方法の例(ページ5をread-writeからへread-only)
15
修正シュートダウン(modfied shootdown)(1/3)
RP3上のMachで採用 RP3の特徴(TLBコヒーレンス制御の観点) ページ表の変更は,ハードウェアで暗黙的には行わない. ソフトウェアで行う. TLBミスヒット時のページ表からのローディング ページ参照ビットの設定 修正シュートダウンアルゴリズムの特徴 同期のオーバヘッドを軽減 イニシエータ: 全レスポンダからの応答を待つだけ レスポンダ: 自TLBの無効化後,直ちに走れる.
16
図4.6 修正シュートダウンアルゴリズム イニシエータ レスポンダ ・ページ表のロック ・ページ表変更
・レスポンダにTLB無効化を通知(メッセージのキューイング) ・各レスポンダについてtmp]r]:=Fetch&Add(request[r], 1) ・レスポンダに割込み通知 ・自TLBの無効化 全レスポンダrが update[r] > tmp[r] になるまで繁忙待機 ・無効化要求の削除 ・ページ表のアンロック ・割込み ・割込み禁止 ・t := reqests[self]: ・無効化要求の検索 ・自TLBの無効化 ・updates[self] := t ; ・割込みレベルを元に戻す ・割込み ・割込み禁止 ・t := reqests[self]: ・無効化要求の検索 ・自TLBの無効化 ・updates[self] := t ; ・割込みレベルを元に戻す 図4.6 修正シュートダウンアルゴリズム
17
修正シュートダウン(modfied shootdown)(2/3)
修正シュートダウンアルゴリズムが保証する範囲 イニシエータの処理完了後のコヒーレンスを保証 イニシエータの処理途中では,コヒーレンスを保証していない. イニシエータ レスポンダ ← 当該TLBエントリへアクセス (古い情報へアクセス) PTEを変更 →
18
修正シュートダウン(modfied shootdown)(3/3)
「危険な変更」でもほとんどの場合,問題なし ページアウトする場合 Valid/invalidビット: valid → invalid 処理 ①TLBコヒーレンス処理 ↓ ②実際にページを追い出す. イニシエータ レスポンダ ← 当該TLBエントリへアクセス (validなのでメモリへアクセス) 当該ページはまだメモリにある. PTEを変更 → valid → invalid 処理完了 ページを追い出す.
19
高速化技法 技法の分類 処理の軽減 アクセス時間の高速化 アクセス時間の隠蔽 先行評価(eager evaluation)
予め処理しておく. プリフェッチ 予測が必要 遅延評価(lazy evaluation) 処理が本当に必要になったときに行う. コピーオンリファレンス,コピーオンライト アクセス時間の高速化 キャッシング技法 アクセス時間の隠蔽 アクセス処理のパイプライン化 マルチスレッドアーキテクチャ
20
高速化技法:コピーオンリファレンス Copy-on-reference
アクセス(参照,リファレンス)が生じた時に実際にコード/データを移動させる. NORMAまたは分散システムのプロセス移送に適用 Accentカーネル(Mach OSの元になった)で適用
21
高速化技法:コピーオンライト Copy-on-write 使用する状況 UNIXの場合 Mach OSのメッセージ通信機構にも多用
オリジナルのオブジェクトからオブジェクトを生成 その後,上記2つのオブジェクトが独立(すなわち,共有なし)に動作. UNIXの場合 Forkシステムコールで子プロセスを生成 図4.7参照 Mach OSのメッセージ通信機構にも多用
22
図4.7 コピーオンライトを用いた仮想アドレス空間のコピー
親プロセス 仮想アドレス空間 子プロセス 仮想アドレス空間 メモリ スタックP データP テキスト スタックC スタックP データC データP テキスト スタックC データC テキスト (2)コピー (1)作成 ページ表 ページ表 (2)コピー 親プロセス (1)コピーオンライトを行わない場合 親プロセス 仮想アドレス空間 子プロセス 仮想アドレス空間 メモリ スタックP データP テキスト スタックC スタックP データC データP テキスト スタックC データC テキスト (1)fork (2)作成 ページ表 R/W (3) (7) R/W→R→R/W R ページ表 R/W (7) R→R/W R (5)ページ フォールト (4)書込み アクセス (6)コピー (7)変更 保護ビット 保護ビット (1)コピーオンライトを行なう場合 図4.7 コピーオンライトを用いた仮想アドレス空間のコピー
23
高速化技法:マップオンリファレンス メモリマップ要求時ではなく,実際に参照された時点で処理 適用例 メモリマップドファイル
メモリマップドI/O
24
分散共有メモリ(DSM:Distributed Shared Memory)
分散共有メモリ(DSM)とは? 物理的に分散されているメモリを,ユーザには共有メモリにみせる仕掛け 図4.13 実現レベル ハードウェア:NUMA ソフトウェア 対象:NORMA,分散システム IVY, Shiva, Munin, Midway, ThreadMarks ユーザ 共有メモリ メモリ MPU1 ノード1 メモリ MPU2 ノード2 メモリ MPUN ノードN ・・・ 図4.13 DSMの概念
25
DSM:設計時に考慮すべきこと(1/2) 管理対象の粒度 ユーザへの共有空間は,分割(DSMブロック)されて各ノードに配置
初期は,ページ単位 DSMブロックサイズは大 利点:管理対象数(DSMブロック数)が小さくなる. 欠点:フォールシャエアリング(false sharing)の可能性が大きくなる. False sharing:図4.14 DSMブロックサイズが小 上記と逆
26
a C C b a, b, c a, b, c ノード1 ノード2 メモリ メモリ MPU1 MPU2 プロセス1 プロセス2
コヒーレンス制御 (1)異なるブロックへの割当て ノード1 ノード2 メモリ メモリ ブロック ブロック ピンポン現象 a, b, c a, b, c MPU1 MPU2 プロセス1 プロセス2 コヒーレンス制御 (2)同一ブロックへの割当て(フォールスシェアリング) 図4.14 フォールスシェアリング
27
DSM:設計時に考慮すべきこと(2/2) メモリコンシステンシモデル スケーラビリティ 非均一性(heterogeneity)
性能と使いやすさのトレードオフ Strict consistency model ユーザが慣れ親しんだモデル 各ノードでのステップごとの同期が必要. スケーラビリティ ノード数が増えても,性能低下させない. 非均一性(heterogeneity) ノードの非均質にも対処 例 データの表現方法が異なる場合は,データ変換が必要.
28
DSM:実現時に考慮すべきこと(1/3) 実現レベル 書込みアクセス検出機構 カーネル空間 ユーザ空間
利点:メモリハードウェアの提供機構をフルに活用できる. 欠点:多大な労力 ユーザ空間 上記と逆 実現がOSに依存: 何をユーザ空間に提供しているか? 書込みアクセス検出機構 コヒーレンス制御のために,書込みをソフトウェアに通知する機構が必要 a)ハードウェアサポートを利用する方法 アクセス保護違反を利用 ページ属性をリードオンリに設定 ページフォールトを捕まえる. 利点 コンパイラを修正する必要なし. 欠点 DSMブロックがページと大きい. フォールスシェアリングが生じる可能性が大 システムコールを用いる回数が多くなる. b)ソフトウェアによる方法 書込みアクセスコードの直後に,コヒーレンス制御ルーチンを呼び出す. 利点,欠点: a)と逆
29
DSM:実現時に考慮すべきこと(2/3) キャッシュコヒーレンス制御 ブロック書き換えアルゴリズム
1)書込み時無効化方式(write invalidate) 書込み時,他コピーを無効化 2)書込み時更新方式(write update) 書込み時,他コピーを更新 ブロック書き換えアルゴリズム キャッシングしてくるローカルメモリが一杯の時,どれかを追い出す必要あり(犠牲ブロック) ページングシステムでは,LRU(Least Recently Used)が採用. キャッシュの状態,優先度とLRUの組合せ.
30
DSM:実現時に考慮すべきこと(3/3) 管理情報の管理方式 スラッシング キャッシング情報の管理方法 1)集中管理方式 2)分散管理方式
論理的に一か所に集中 2)分散管理方式 自ノードの情報 スラッシング DSMブロックのピンポン現象を防止 コンパイラによるフォールスシェアリングの抑制 データ属性に適したコヒーレンス制御の採用
31
DSM:ページを基盤としたシステム(1/2)
DSMブロック=ページ 共有メモリ型マルチプロセッサのキャッシュと類似 対応関係 ローカルメモリ:キャッシュ DSMブロック(ページ):キャッシュライン 概念図:図4.15(a) ノード上にないページアクセス処理:図4.15(b) ページを持ってくる方法 移動(migration) 複製(replication)
32
2 1 3 ページ 0 1 2 3 メモリ MPU0 ノード0 メモリ MPU1 ノード1 ノード2 メモリ MPU2 ネットワーク
大域仮想アドレス空間 ページ 0 1 2 3 メモリ MPU0 ノード0 2 メモリ MPU1 ノード1 ノード2 1 3 メモリ MPU2 ネットワーク (a)概念図 図4.15 ページを基盤としたDSM
33
(b)ノード1上でのページ0アクセス時の処理
ユーザ プロセス (2)ページフォールト (1)アドレス変換の ためのアクセス ページ表 i 1 2 v 3 (5)再開 (3)ノード2からページ0をもらい,マッピングする. (4)エントリ0の i を v に変更 有効/無効ビット (Valid/ Invalid ) bit (b)ノード1上でのページ0アクセス時の処理 図4.15 ページを基盤としたDSM
34
DSM:ページを基盤としたシステム(2/2) ー書込み時無効化方式を用いたコヒーレンスプロトコル例(1/3)ー
各ページの状態 読出し専用(R) ページ表エントリ属性: リードオンリ 各ノードに複数あってもよい. 読書き可能(W) ページ表エントリ属性: リードライト システムで1つのみ(所有者のみ) 各ページごとに所有者を設ける. 最後に書込みを行ったノードが所有者
35
DSM:ページを基盤としたシステム(2/2) ー書込み時無効化方式を用いたコヒーレンスプロトコル例(2/3)ー
状況(図4.16) プロセッサ1が所有者 Rの状態,プロセッサ2にコピーなし(状態S1) Rの状態,プロセッサ2にコピーあり(状態S2) Wの状態(状態S3) プロセッサ2が所有者 Rの状態,プロセッサ1にコピーあり(状態S4) Rの状態,プロセッサ1にコピーなし(状態S5) Wの状態(状態S6) リード/ライトアクセス時の処理 図4.16
36
DSM:ページを基盤としたシステム(2/2)ー書込み時無効化方式を用いたコヒーレンスプロトコル例(3/3)ー
図4.16 各ページの状態と動作12) プロセスAが読出しアクセス プロセッサ1 プロセッサ2 R :ページ プロセスAが書込みアクセス プロセッサ1 プロセッサ2 状態 A R 所有者 A :プロセス A R 所有者 S1 読出し 1.ページの状態を Wにする. 2.書込み 1.コピーの無効化を依頼 2.ページの状態を Wにする. 3.書込み A R 所有者 A R 所有者 S2 読出し A W 所有者 A W 所有者 S3 読出し 書込み 1.コピーの無効化を依頼 2.所有権の獲得 3.ページの状態を Wにする. 4.書込み A R 所有者 A R 所有者 S4 読出し 1.コピーを依頼 2.ページの状態を Rにする. 3.読み出し 1.コピーの無効化を依頼 2.所有権の獲得 3.ページを送信してもらう. 4.ページの状態をWにする. 5.書込み S5 A R 所有者 A R 所有者 1.ページの状態を Rにするよう依頼 2.コピーを依頼 3.ページの状態を Rにする. 4.読み出し 1.コピーの無効化を依頼 2.所有権の獲得 3.ページを送信してもらう. 4.ページの状態をWにする. 5.書込み A W 所有者 A W 所有者 S6
37
NUMAマルチプロセッサのメモリ管理 メモリの活用方法:図4.23 キャッシング技法におけるNUMA,キャッシュ,DSMとの相違
a)キャッシングなし b)キャッシングあり キャッシング技法におけるNUMA,キャッシュ,DSMとの相違 表4.1 キャッシュとの大きな相違 キャッシュは,管理対象が小さい(キャッシュライン) DSMとの大きな相違 DSMは,キャッシングは永久的に適用. NUMAはリモートアクセス可能,ソフトウェアで制御可能 NUMAで主に考慮すべきこと 管理対象がページと大きい(キャッシュとの違い) ページの凍結,解除方策が必要(キャッシュ,DSMとの違い)
38
(1)メモリをキャッシュとして使用しない場合 ページ0 ページ1 ページ2 ページ3
仮想アドレス空間 ページ0 ページ1 ページ2 ページ3 プロセッサ メモリ プロセッサ メモリ 多対1マッピング 相 互 結 合 網 (1)メモリをキャッシュとして使用しない場合 仮想アドレス空間 ページ0 ページ1 ページ2 ページ3 プロセッサ メモリ プロセッサ メモリ 多対多マッピング キャッシュとして使用(全部,一部) キャッシュとして使用(全部,一部) 相 互 結 合 網 (2)メモリをキャッシュとして使用する場合 図4.23 メモリの活用方法
39
表4.1 キャッシュ,DSM,およびNUMAの比較 DSM NUMA キャッシュブロック ページ 不可 可能 オンデマンド, プリフェッチ
表4.1 キャッシュ,DSM,およびNUMAの比較 ハードウェアャッシュ(コヒーレントキャッシュ) DSM NUMA 管理対象 キャッシュブロック ページ リモートアクセスの可否 不可 可能 キャッシング時期 オンデマンド, プリフェッチ ソフトウェアで制御可能 キャッシング方法 (コピー,移動) コピー 制御適用時間 永久
40
NUMAマルチプロセッサのメモリ管理 ー実現例(1/2)ー
対象マシン:図4.24 メモリの活用方法 グローバルメモリ:通常のメモリ ローカルメモリ:キャッシュ キャッシュコヒーレンス制御方式 ライトバック方式 書込み時無効化方式 仮想ページの状態 読出し専用(Read-Only, RO) 複数のローカルメモリに存在する可能性あり. 内要は複数間で全て一致 局所書込み可能(Local-Writable, LW) 1つのローカルメモリにのみ存在 グローバルメモリと内容一致 大域書込み可能(Global-Writable, GW) ローカルメモリにはコピーなし. グローバルメモリにのみ存在 方策の決定 ローカルメモリにキャッシング(LOCAL) グローバルメモリにだけおく(GLOBAL)
41
NUMAマルチプロセッサのメモリ管理 ー実現例(2/2)ー
MMU ローカル メモリ プロセッサ MMU ローカル メモリ ・・・ グローバル メモリ グローバル メモリ 図2.24 対象マシン:IBM ACE マルチプロセッサワークステーション
42
表4.2 ページの処理 RO GW LW LOCAL GLOBAL RO GW LW LOCAL GLOBAL 方策決定 仮想ページの状態
表4.2 ページの処理 (1)読出しアクセス時 方策決定 仮想ページの状態 RO GW LW 自ノードにある場合 他ノードにある場合 LOCAL ローカルへコピー 全てをunmap 何もせず 他のものをSync&flush GLOBAL 全てをflush 自分のものをSync&flush (2)書込みアクセス時 方策決定 仮想ページの状態 RO GW LW 自ノードにある場合 他ノードにある場合 LOCAL 全てをflush ローカルへコピー 全てをunmap 何もせず 他のものをSync&flush GLOBAL 自分のものをSync&flush 上段:ローカルメモリに現在ある仮想ページへの対処法 中段:ローカルメモリにキャッシングするか否か 下段:仮想ページの状態遷移先 sync:ローカルメモリ内の当該ページをグローバルメモリへ書き出す. unmap:仮想ページのローカルメモリへのマッピングを無効化する. flush:unmapに加えて,当該物理ページを解放する.
43
以上
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.