メモリ・アーキテクチャ3 仮想記憶 「計算機アーキテクチャ」(第15回目) 今井慈郎(imai@eng.kagawa-u.ac.jp) 仮想記憶とは • コンピュータ上に実装されている主記憶よりも大 きな記憶領域を仮想的に提供する仕組み • メモリ空間の一部をハードディスク装置等の大容 量外部記憶にマッピングし実装したメモリ量以上 のメモリ空間を利用できる環境をユーザに提供 • 実装したメモリ: 実記憶 • 見掛け上のメモリ:仮想記憶(「仮想メモリ」など の語源) 実記憶と仮想記憶 • 仮想的に与えられたアドレス:仮想アドレス (virtual address)または論理アドレス(logical address). • 実記憶上で有効なアドレス:物理アドレス (physical address)または実アドレス(real address). • 仮想アドレスの範囲:仮想アドレス空間 • 物理アドレスの範囲:物理アドレス空間 仮想記憶の効果 • 仮想アドレス空間は,動的アドレス変換機構 (DAT : Dynamic Address Translation) というハー ドウェアによって物理アドレスに変換 • 実際にこれを行うハードウェア(LSI):MMU (Memory Management Unit) • プログラマは,仮想アドレス空間上でプログラム を組むことになる. • プログラムやデータが主記憶上に存在するのか どうかを意識する必要はない. • 主記憶のメモリサイズなどの(物理的)制約から 解放 仮想記憶の状況 • 最近,OSが仮想記憶機能を提供(一部のアプリは 自前でも機能を提供する場合もある). • ハードウェア補助がなくとも仮想記憶実装は可能. しかし,極めて煩雑な管理が必要で非実用的 • DAT(動的アドレス変換)機能を有するMMUを持 たない計算機上での実装は,現在存在せず • 仮想記憶の概念:1957年発表.マンチェスター大 学がAtlas用に1961年に開発したのが世界初 • 1965年にMITが開発したMultics以降,本格的に 採用され始めた. 仮想記憶の実装 No1 • 仮想記憶は,大きく分けて ■ セグメント セグメント方式 セグメント方式 ■ ページング ページング方式 ページング方式 の二種類が存在. • 例として,MC68000システム(16ビット,内部32ビッ トの著名マイクロプロセサ.個人的にも大ファン:-) では,68451(セグメント方式)と,68851(ページン グ方式)という2種類のMMUが準備されていた. 仮想記憶の実装No2(セグメント方式) • セグメント方式:仮想記憶を実現する方式の1つ. • プログラムやデータをセグメントという「可変な」大 きさのまとまりで管理 • OSは,必要なプログラムやデータを主記憶上に 読み込み(ロールイン),セグメントを単位として管 理 • 読み込む際に,空き領域が足りないときは,不要 なセグメントを補助記憶装置に退避(ロールアウト) して必要な空き領域を準備 仮想記憶の実装No2(セグメント方式) • 各セグメントは,セグメントテーブルで管理され, セグメント番号とセグメントの開始アドレスを保管 • 各セグメントに属するプログラムやデータの実アド レスは,セグメントテーブル内の開始アドレスとそ こからの相対アドレスから算出 • セグメントは,実記憶上に連続した領域として割り 当てられる.セグメントの大きさが可変長なため, 場合によっては,実記憶上には空き領域の合計 が十分あるのに連続領域が空いていないことが ある フラグメンテーション 仮想記憶の実装No2(セグメント方式) • セグメント方式のバリエーションとして,ページング 方式と組み合わせた ページ化セグメンテーション がある. 仮想記憶の実装No3(ページング方式) • ページング方式:仮想記憶を実現する方式の1つ. • 物理メモリ空間と論理メモリ空間を一定サイズの ページと呼ばれる単位に分割して管理 • 論理メモリ空間から物理メモリへの対応づけはペー ジテーブルと呼ばれる構造体で実現(この構造体 はOSが管理) • 物理メモリに未対応の論理メモリ空間を参照した 場合,「ページフォルト」という例外が発生 • この時,OS側の例外処理ルーチンに制御が移行 仮想記憶の実装No3(ページング方式) • OS側の管理によって適宜対応したページを論理 メモリ空間に対応する二次記憶等から実メモリ(物 理メモリ)に読み込み,ページテーブルを更新し, そのページを参照した命令の実行に戻る. • これを実現するハードウエア:メモリ管理ユニット (MMU) • MMU内には,トランスレーション・ルックアサイド・ バッファ(Translation Lookaside Buffer:TLB)と呼 ばれる一種のキャッシュがあり,ユニット内部では この対応表に基づいてアドレスの対応づけを行う. 仮想記憶の実装No3(ページング方式) このテーブルから参照出来なかった場合,TLBミスと 呼ぶ.このときの処理はMMUの設計によって異なり, • (例)MMU内にはTLBのみを持ちTLBミスにより即 時に例外を起こし,OSがページテーブルを引いて TLBに追加することによってTLBミスを解決するアー キテクチャ • (例)MMUの機能強化がなされ,TLBミス時にMMU 自身が与えられた物理アドレスにあるページテーブ ルを参照するアーキテクチャ(OSの助けを借りなが らMMUがTLBミスを解決) などが提供. MMUの実装 No1 • メモリ管理ユニット(Memory Management Unit,MMU) は,コンピュータのハードウェア部品のひとつであり, CPUの要求するメモリアクセスを処理 • 主な機能としては 1)仮想アドレスを物理アドレスに変換する機能(すな わち仮想記憶管理), 2)メモリ保護機能, 3)キャッシュ制御機能, 4)バス調停機能, 5)バンク切り替え機能-8ビットシステムなど簡易版に採用, などがある. MMUの実装 No2 • 多くのMMUでは,一般的にメモリ空間(アドレス空間)はペー ジに分割. ページサイズ:2^N.多くの場合,数Kバイト. • CPUが出力するアドレス下位Nビット(ページ内オフセット)は 仮想→物理の変換(mapping)においては変化せず.一方, CPUが出力するアドレス上位ビットは仮想ページ番号となる. • MMUの有するページテーブルは,配列構造になっており, 仮想ページ番号がそのインデックスになっている. • 各ページテーブルエントリ(PTE)は仮想ページ番号(その PTEのインデックス)に対応した物理ページ番号を格納 • この物理ページ番号とページ内オフセットを組み合わせて完 全な物理アドレスを生成. MMUの実装 No3 PTEには,含まれる情報: • そのページに以前書込みがあったかどうか・・① • 最後にアクセスされたのはいつか・・② • 特権レベルごとのアクセス権・・(特権モードでの読み/ 書き/実行,ユーザモードでの読み/書き/実行の可/不可を設 定) • そのページにアクセスした時キャッシュメモリに内容 をコピーするか否か ①は書換え時にバックアップするかどうかを, ②は書換えアルゴリズムをLRUにする際に使用 ページフォールト(page fault)No1 1. ある仮想ページにアクセス・・物理メモリ(RAM)に未対応 2. その場合,MMUは「ページフォールト」を発生.CPUに通知 3. OSはその通知を受けて,空き物理ページを検索し,その物 理ページを示すようPTEの内容を書き換える. 4. ページフォールト処理から元のプログラムに復帰するとフォー ルトを発生させた命令を再度実行.今度はPTEが物理ペー ジを指示.正常に処理が続行. 5. もし,空きメモリがない場合,使用中のページから(書換えア ルゴリズムにより)物理ページを選択.その内容をディスク に退避.そのページを使用(必要ならばディスクから内容を 復帰) ・・・ これをページング方式と呼ぶ. ページフォールト(page fault)No2 • • • ページテーブル自体もメモリ上に存在.PTEがメモ リ上に存在しない場合あり. その場合も,ページフォールトを利用し,OSとMMU が協力して新たにページテーブルを割り当てる. 時としてソフトウェアのバグにより, 「ページフォー ルト」が発生する場合もある. ページフォールトによるシステム管理 ■ プログラムによる不正アクセスの防護: • • • • あるプログラムが許可されていない領域にアクセス MMUのメモリ保護機能がページフォールトを発生. OSがアクセス権を与えない設定とすることで,一般 プログラムから非許可メモリ領域への不正なアクセ スを防御可能. 一般に,OSは,プログラム(プロセス)ごとに別の仮 想アドレス空間を用意. ページフォールトによるシステム管理 ■ MMUはメモリのフラグメンテーションに対しても有 効: • メモリブロックの「アロケート」と「解放」が繰り返され る. • フリーなメモリは十分あっても,連続する大きなブロッ クをアロケートできなくなる・・・フラグメンテーション • 仮想記憶では,こまぎれな物理ページを集めて連 続な仮想空間をつくることができる. 代表的なCPUでのMMU機能 • マイクロプロセッサの初期の設計では,MMUは独立 した集積回路・・M68000やZ80など • その後のCPUであるMC68030やZ280ではマイクロ プロセッサ内にMMUを内蔵 • 最近はほとんどページング方式.しかし,x86アーキ テクチャではセグメント方式も提供(堅持) 代表的なCPUでのMMU機能 • PA-RISCでは,ハッシュ・ページ・テーブルと呼ばれ るより複雑な構造でアドレス変換を実行 • IA-64は一般的なページング方式とPAライクなハッ シュ方式とIA-32モードでのセグメント方式の3つの方 式をサポート • MIPSアーキテクチャではMMUはあるもののページ テーブルは規定されず.・・OSが直接TLBを変更 メモリ保護機能 No1 • メモリ保護機能とはコンピュータにおいてプログ ラムが暴走しても,他のプロセスのプログラムが 読み書きしているメモリ領域を破壊(不正書込み してデータを改竄)することがないように保護する 機能. • 通常,ハードウェア(MMU)とOSが協調して,多 重仮想記憶などを用いてメモリを保護 メモリ保護機能 No2(セグメント方式) • セグメント方式では,各プロセスには,セグメントと呼ばれ るメモリのかたまりをいくつか割り当てられて動作 • 割り当てられたセグメント以外のメモリには,アクセスでき ない. • セグメントはハードウェアのレジスタによって定義され,ア クセス可能なメモリアドレスの範囲を限定 • データを許されている範囲外に読もうとしたときや書き込 もうとしたときに例外が発生する. メモリ保護機能 No3(ページング方式) • ページング方式では,メモリはページと呼ばれる小さな断 片に分割. • 仮想記憶機構を使い,ページは任意の物理メモリに対応 付けられるか,保護状態であることがフラグで示される. • ページング方式では連続した仮想記憶空間をばらばらな 物理メモリ空間に対応付ける. • 各プロセスはページテーブルを持っていて,アクセス可能 なアドレスに物理メモリをマップする.但し,ページテーブ ルはプロセスからは見えない. • ページテーブルを使うことによって,新たなメモリをプロセ スに割り当てる必要が生じたときには,適当な物理メモリ を持ってきて新しいページとして割り当て可能. メモリ保護機能 No3(ページング方式) • ページテーブルは仮想アドレスをインデックスとした配列 データの形式が一般的 • 各エントリの形式はそれを管理するMMUによって決めら れており,対応する物理メモリのアドレスの他にアクセス 権などを設定 • アクセス権としては,アクセス可能な特権レベルとアクセ スの種別(読み込み,書き込み,実行など)の組み合わ せで表現 • これによりMMUは当該ページへのアクセスが妥当であ るかどうかを判断 • 不正なアクセスと判断された場合,例外(illegal access) が発生 ・・・ OSが対応 メモリ保護機能 No4(保護キー) • 保護キー機構では,メモリはある一定のサイズ のかたまりに分割(例えば,2Kバイト).各分割 領域に保護キー(protection key)と呼ばれる数値 が対応 • 各プロセスにも1つの保護キーを割り当てる • メモリにアクセスする際,ハードウェアは現在の プロセスの保護キーとアクセスしようとしているメ モリの保護キーとが合致しているか,をチェック • もし合致していない場合,例外を発生 • この機構はシステム/360アーキテクチャで採用 メモリ保護機能 No4(保護キー) • IA-32アーキテクチャのように,ページング方式と セグメント方式を同時に使用している場合,セグ メントは物理メモリに直接マップせず,リニアアド レス空間にマップされ,リニアアドレス空間から物 理アドレス空間へのマッピングをページング方式 で行う.・・・2段階マッピング • もちろん,ページングを使わずにセグメント方式 だけを使うことも可能.両方を使用した場合,ど ちらにもアクセス権の設定機能があるため,注意 が必要. まとめ • 記憶の階層構造 • 参照の局所性 • CPUから高速&大容量の記憶装置が存在 するように見せ掛ける・・・「仮想的」 • 高速性・・・キャッシュメモリ • 大容量性・・・仮想記憶 • 仮想記憶・・・セグメント方式,ページ方式
© Copyright 2024 Paperzz