4章 メモリ管理.

Slides:



Advertisements
Similar presentations
第2回 プロセス管理 ジョブ、プロセスとは? プロセスの状態遷移 プロセス制御ブロック スケジューリング.
Advertisements

メモリコンシステンシモデル memory consistency model
Chapter11-4(前半) 加藤健.
メモリコンシステンシモデル memory consistency model
Ibaraki Univ. Dept of Electrical & Electronic Eng.
最新ファイルの提供を保証する代理FTPサーバの開発
第6回 仮想記憶とページング ページング ページ取り出し方式 ページ置き換え方式 中間テスト(40分)
記 憶 管 理(1) オペレーティングシステム 第9回.
計算機工学III オペレーティングシステム #9 主記憶管理:ページング 2006/06/09 津邑 公暁
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
基本情報技術概論(第12回) 埼玉大学 理工学研究科 堀山 貴史
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
計算機システム概論・4回目 本日のトピック:メモリの管理と仮想記憶 メモリ管理におけるOSの役割 メモリの割当方法について
オペレーティングシステム 第11回 仮想記憶管理(2)
第6章 トランザクション管理 6.1 トランザクションの概念 6.2 同時実行制御 6.3 障害回復.
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
App. A アセンブラ、リンカ、 SPIMシミュレータ
Disco: Running Commodity Operating Systems on Scalable Multiprocessors
小型デバイスからのデータアクセス 情報処理系論 第5回.
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
オペレーティングシステム (割り込み処理)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
問2.9 割り込みB 割り込みA 割り込みC (msec) 開始 停止 終了 走行レベル4 走行レベル3
割 込 み(1) オペレーティングシステム No.5.
オペレーティングシステム i386アーキテクチャ(2)
帯域外リモート管理の継続を 実現可能なVMマイグレーション手法
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
第9回 プロセスの協調と排他制御 並行プロセスと資源の競合 競合問題 セマフォ 不可分命令の実装 プロセス間通信 PV命令
メモリ管理 4.3, 4.4 章 さだ.
1章 並列OS概論.
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
型付きアセンブリ言語を用いた安全なカーネル拡張
Lazy Release Consistency
分散IDSの実行環境の分離 による安全性の向上
VM専用仮想メモリとの連携による VMマイグレーションの高速化
2章 プロセス管理と スケジューリング.
仮想メモリを用いた VMマイグレーションの高速化
オペレーティングシステム イントロダクション
複数ホストに分割されたメモリを用いる仮想マシンの監視機構
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
Ibaraki Univ. Dept of Electrical & Electronic Eng.
オペレーティングシステムJ/K (仮想記憶管理)
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
ゲーム開発モデルの基礎.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第6回 システムプログラミング概要 プロセスの生成 担当:青木義満
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
計算機工学III オペレーティングシステム #4 並行プロセス:排他制御基礎 2006/04/28 津邑 公暁
Intel SGXを用いた仮想マシンの 安全な監視機構
複数ホストにまたがって動作する仮想マシンの障害対策
オペレーティングシステムJ/K 2004年11月15日2時限目
組込みシステムとは コンピュータ制御システム?
仮想環境を用いた 侵入検知システムの安全な構成法
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
コンピュータアーキテクチャ 第 9 回.
実装について 前田俊行.
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
Mondriaan Memory Protection の調査
6.5 セマフォ セマフォ(semaphore): 複数のタスク(もしくはスレッド)が「同期」または「相互排除」の制御のために取得(acquire)・リリース(release)できるカーネルオブジェクトの総称.
コンピュータアーキテクチャ 第 9 回.
強制パススルー機構を用いた VMの安全な帯域外リモート管理
SMP/マルチコアに対応した 型付きアセンブリ言語
異種セグメント端末による 分散型仮想LAN構築機構の設計と実装
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
複数ホストにまたがるVMの 高速かつ柔軟な 部分マイグレーション
複数ホストにまたがるVMの メモリ使用状況に着目した高速化
ネットワーク・プログラミング プロセスとファイルシステム管理.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Presentation transcript:

4章 メモリ管理

4.メモリ管理 概論 TLBコヒーレンス制御 高速化技法 メモリコンシステンシモデル 分散共有メモリシステム ページを基盤としたシステム 共有変数を基盤としたシステム NUMAマルチプロセッサにおけるメモリ管理 キャッシュおよびDSMとの相違 検討課題 ソフトウェア技術 実現例

4.メモリ管理:概論 検討課題 UMAアーキテクチャ NUMAアーキテクチャ NORMAアーキテクチャ メモリアクセスの高速化 キャッシング技法 コヒーレンス制御 ページ表:TLB コード/データ NUMAアーキテクチャ メモリアクセスの不均一性を考慮 ローカル/リモートメモリ NORMAアーキテクチャ

TLBコヒーレンス制御 TLBコヒーレンス問題 データのキャッシング データ: 仮想 → 実アドレスのマッピング情報 データ: 仮想 → 実アドレスのマッピング情報 オリジナル(キャッシング元): ページ表 キャッシング先:TLB(Translation Lookaside Buffer)

プロセッサ0 プロセッサ1 TLB TLB メモリ 図4.1 TLBコヒーレンス タスクAの論理アドレス空間 スレッド スレッド ページ フレーム 2 スレッド ページ フレーム 2 TLB TLB ①ページ9をフレーム2にマッピング タスクAの論理アドレス空間 ページフレーム2 ページフレーム1 ページフレーム0 ②間違ったアクセス ページ9 ページ1 ページ0 変更後 の対応 変更前 の対応 メモリ 図4.1 TLBコヒーレンス

TLBコヒーレンス問題:考慮すべき問題点 ハードウェアアーキテクチャ ページ表 → TLBへのローディング TLB → ページ表への書き込み ハードウェアが行っているか否か? コヒーレンスを保証する範囲 強いコヒーレンス保証 処理中でもコヒーレンスを保証 弱いコヒーレンス保証 処理完了後のコヒーレンスを保証 処理中のコヒーレンスは保証していない.

TLBコヒーレンス制御 ページ情報変更の分類 (1)安全な変更(safe change) (2)危険な変更(unsafe change) 変更が生じても,すぐに対処する必要がない変更 後で,OSで対処できる. 例 ページ保護レベルが上がる(緩和)場合 Read-only  →  read-write メモリへページがロードされる場合 Invalid → valid (2)危険な変更(unsafe change) 変更が生じたら,すぐにコヒーレンスを保つ必要がある変更 ページ保護レベルが下がる場合 Read-write → read-only ページがページアウトされる場合 Valid  → invalid

TLBコヒーレンスアルゴリズム シュートダウン(TLB shootdown)アルゴリズム 修正シュートダウン(modified shootdown)アルゴリズム Read-locked TLBs Validation

シュートダウンアルゴリズム(1/4) プロセッサ0 プロセッサ1,2 ①準備を依頼 イニシエータ レスポンダ ②準備OK ③ページ表を変更 メモリ ページ表 図4.4 シュートダウンアルゴリズム概要

図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 シュートダウンアルゴリズム

シュートダウンアルゴリズム(2/4) 利点 欠点 完全なコヒーレンスを保証 イニシエータが起動中のコヒーレンスを保証(レスポンダをアイドルにする) 欠点 同期のオーバヘッド大 イニシエータ: 全レスポンダのアイドル確認後,ページ表エントリを変更 レスポンダ → イニシエータの処理時間が増大 レスポンダ: ページ表変更(イニシエータ)完了まで,繁忙待機 プロセッサ間通信(割込み)レベルが低いハードウェア上では,割込み受信が遅れる.

シュートダウンアルゴリズム(3/4) シュートダウンアルゴリズムがサポートするマシンの特徴 プロセッサ シュートダウンアルゴリズムがサポートするマシンの特徴 TLBエントリからPTEへの書込みがハードウェアで行われる. (例)PTE内の参照ビット設定の時 PTE全体を対応するTLBエントリで上書きする. TLB MPU エントリ ヒット 上書き (ハードウェア) メモリ       参照ビット エントリ ページ表 図4.2 ハードウェアによるページ表の上書き

シュートダウンアルゴリズム(4/4) シュートダウンアルゴリズムの必要性 直観的方法 シュートダウン: 全レスポンダをアイドルにした後,PTEを変更. 直観的方法 イニシエータのPTE変更後,レスポンダがTLBを無効化 イニシエータ レスポンダ (プロセッサ間割込み) TLBの無効化要求 PTEを変更 自エントリを無効化 応答待ち 自エントリを無効化

図 直観的方法の例(ページ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)

修正シュートダウン(modfied shootdown)(1/3) RP3上のMachで採用 RP3の特徴(TLBコヒーレンス制御の観点) ページ表の変更は,ハードウェアで暗黙的には行わない. ソフトウェアで行う. TLBミスヒット時のページ表からのローディング ページ参照ビットの設定 修正シュートダウンアルゴリズムの特徴 同期のオーバヘッドを軽減 イニシエータ: 全レスポンダからの応答を待つだけ レスポンダ: 自TLBの無効化後,直ちに走れる.

図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 修正シュートダウンアルゴリズム

修正シュートダウン(modfied shootdown)(2/3) 修正シュートダウンアルゴリズムが保証する範囲 イニシエータの処理完了後のコヒーレンスを保証 イニシエータの処理途中では,コヒーレンスを保証していない. イニシエータ レスポンダ ← 当該TLBエントリへアクセス    (古い情報へアクセス) PTEを変更  →

修正シュートダウン(modfied shootdown)(3/3) 「危険な変更」でもほとんどの場合,問題なし ページアウトする場合 Valid/invalidビット: valid  →  invalid 処理 ①TLBコヒーレンス処理       ↓ ②実際にページを追い出す. イニシエータ レスポンダ ← 当該TLBエントリへアクセス    (validなのでメモリへアクセス) 当該ページはまだメモリにある. PTEを変更  → valid  → invalid 処理完了 ページを追い出す.

高速化技法 技法の分類 処理の軽減 アクセス時間の高速化 アクセス時間の隠蔽 先行評価(eager evaluation) 予め処理しておく. プリフェッチ 予測が必要 遅延評価(lazy evaluation) 処理が本当に必要になったときに行う. コピーオンリファレンス,コピーオンライト アクセス時間の高速化 キャッシング技法 アクセス時間の隠蔽 アクセス処理のパイプライン化 マルチスレッドアーキテクチャ

高速化技法:コピーオンリファレンス Copy-on-reference アクセス(参照,リファレンス)が生じた時に実際にコード/データを移動させる. NORMAまたは分散システムのプロセス移送に適用 Accentカーネル(Mach OSの元になった)で適用

高速化技法:コピーオンライト Copy-on-write 使用する状況 UNIXの場合 Mach OSのメッセージ通信機構にも多用 オリジナルのオブジェクトからオブジェクトを生成 その後,上記2つのオブジェクトが独立(すなわち,共有なし)に動作. UNIXの場合 Forkシステムコールで子プロセスを生成 図4.7参照 Mach OSのメッセージ通信機構にも多用

図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 コピーオンライトを用いた仮想アドレス空間のコピー

高速化技法:マップオンリファレンス メモリマップ要求時ではなく,実際に参照された時点で処理 適用例 メモリマップドファイル メモリマップドI/O

分散共有メモリ(DSM:Distributed Shared Memory) 分散共有メモリ(DSM)とは? 物理的に分散されているメモリを,ユーザには共有メモリにみせる仕掛け 図4.13 実現レベル ハードウェア:NUMA ソフトウェア 対象:NORMA,分散システム IVY, Shiva, Munin, Midway, ThreadMarks ユーザ 共有メモリ メモリ MPU1 ノード1 メモリ MPU2 ノード2 メモリ MPUN ノードN ・・・ 図4.13 DSMの概念

DSM:設計時に考慮すべきこと(1/2) 管理対象の粒度 ユーザへの共有空間は,分割(DSMブロック)されて各ノードに配置 初期は,ページ単位 DSMブロックサイズは大 利点:管理対象数(DSMブロック数)が小さくなる. 欠点:フォールシャエアリング(false sharing)の可能性が大きくなる. False sharing:図4.14 DSMブロックサイズが小 上記と逆

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 フォールスシェアリング

DSM:設計時に考慮すべきこと(2/2) メモリコンシステンシモデル スケーラビリティ 非均一性(heterogeneity) 性能と使いやすさのトレードオフ Strict consistency model ユーザが慣れ親しんだモデル 各ノードでのステップごとの同期が必要. スケーラビリティ ノード数が増えても,性能低下させない. 非均一性(heterogeneity) ノードの非均質にも対処 例 データの表現方法が異なる場合は,データ変換が必要.

DSM:実現時に考慮すべきこと(1/3) 実現レベル 書込みアクセス検出機構 カーネル空間 ユーザ空間 利点:メモリハードウェアの提供機構をフルに活用できる. 欠点:多大な労力 ユーザ空間 上記と逆 実現がOSに依存: 何をユーザ空間に提供しているか? 書込みアクセス検出機構 コヒーレンス制御のために,書込みをソフトウェアに通知する機構が必要 a)ハードウェアサポートを利用する方法 アクセス保護違反を利用 ページ属性をリードオンリに設定 ページフォールトを捕まえる. 利点 コンパイラを修正する必要なし. 欠点 DSMブロックがページと大きい. フォールスシェアリングが生じる可能性が大 システムコールを用いる回数が多くなる. b)ソフトウェアによる方法 書込みアクセスコードの直後に,コヒーレンス制御ルーチンを呼び出す. 利点,欠点: a)と逆

DSM:実現時に考慮すべきこと(2/3) キャッシュコヒーレンス制御 ブロック書き換えアルゴリズム 1)書込み時無効化方式(write invalidate) 書込み時,他コピーを無効化 2)書込み時更新方式(write update) 書込み時,他コピーを更新 ブロック書き換えアルゴリズム キャッシングしてくるローカルメモリが一杯の時,どれかを追い出す必要あり(犠牲ブロック) ページングシステムでは,LRU(Least Recently Used)が採用. キャッシュの状態,優先度とLRUの組合せ.

DSM:実現時に考慮すべきこと(3/3) 管理情報の管理方式 スラッシング キャッシング情報の管理方法 1)集中管理方式 2)分散管理方式 論理的に一か所に集中 2)分散管理方式 自ノードの情報 スラッシング DSMブロックのピンポン現象を防止 コンパイラによるフォールスシェアリングの抑制 データ属性に適したコヒーレンス制御の採用

DSM:ページを基盤としたシステム(1/2) DSMブロック=ページ 共有メモリ型マルチプロセッサのキャッシュと類似 対応関係 ローカルメモリ:キャッシュ DSMブロック(ページ):キャッシュライン 概念図:図4.15(a) ノード上にないページアクセス処理:図4.15(b) ページを持ってくる方法 移動(migration) 複製(replication)

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

(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

DSM:ページを基盤としたシステム(2/2) ー書込み時無効化方式を用いたコヒーレンスプロトコル例(1/3)ー 各ページの状態 読出し専用(R) ページ表エントリ属性: リードオンリ 各ノードに複数あってもよい. 読書き可能(W) ページ表エントリ属性: リードライト システムで1つのみ(所有者のみ) 各ページごとに所有者を設ける. 最後に書込みを行ったノードが所有者

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

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

NUMAマルチプロセッサのメモリ管理 メモリの活用方法:図4.23 キャッシング技法におけるNUMA,キャッシュ,DSMとの相違 a)キャッシングなし b)キャッシングあり キャッシング技法におけるNUMA,キャッシュ,DSMとの相違 表4.1 キャッシュとの大きな相違 キャッシュは,管理対象が小さい(キャッシュライン) DSMとの大きな相違 DSMは,キャッシングは永久的に適用. NUMAはリモートアクセス可能,ソフトウェアで制御可能 NUMAで主に考慮すべきこと 管理対象がページと大きい(キャッシュとの違い) ページの凍結,解除方策が必要(キャッシュ,DSMとの違い)

(1)メモリをキャッシュとして使用しない場合 ページ0 ページ1 ページ2 ページ3 仮想アドレス空間 ページ0 ページ1 ページ2 ページ3 プロセッサ メモリ プロセッサ メモリ 多対1マッピング 相 互 結 合 網 (1)メモリをキャッシュとして使用しない場合 仮想アドレス空間 ページ0 ページ1 ページ2 ページ3 プロセッサ メモリ プロセッサ メモリ 多対多マッピング キャッシュとして使用(全部,一部) キャッシュとして使用(全部,一部) 相 互 結 合 網 (2)メモリをキャッシュとして使用する場合 図4.23 メモリの活用方法

表4.1 キャッシュ,DSM,およびNUMAの比較 DSM NUMA キャッシュブロック ページ 不可 可能 オンデマンド, プリフェッチ 表4.1 キャッシュ,DSM,およびNUMAの比較 ハードウェアャッシュ(コヒーレントキャッシュ) DSM NUMA 管理対象 キャッシュブロック ページ リモートアクセスの可否 不可 可能 キャッシング時期 オンデマンド, プリフェッチ ソフトウェアで制御可能 キャッシング方法 (コピー,移動) コピー 制御適用時間 永久

NUMAマルチプロセッサのメモリ管理 ー実現例(1/2)ー 対象マシン:図4.24 メモリの活用方法 グローバルメモリ:通常のメモリ ローカルメモリ:キャッシュ キャッシュコヒーレンス制御方式 ライトバック方式 書込み時無効化方式 仮想ページの状態 読出し専用(Read-Only, RO) 複数のローカルメモリに存在する可能性あり. 内要は複数間で全て一致 局所書込み可能(Local-Writable, LW) 1つのローカルメモリにのみ存在 グローバルメモリと内容一致 大域書込み可能(Global-Writable, GW) ローカルメモリにはコピーなし. グローバルメモリにのみ存在 方策の決定 ローカルメモリにキャッシング(LOCAL) グローバルメモリにだけおく(GLOBAL)

NUMAマルチプロセッサのメモリ管理 ー実現例(2/2)ー MMU ローカル メモリ プロセッサ MMU ローカル メモリ ・・・ グローバル メモリ グローバル メモリ 図2.24 対象マシン:IBM ACE マルチプロセッサワークステーション

表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に加えて,当該物理ページを解放する.

以上