メモリ・アーキテクチャ3

メモリ・アーキテクチャ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から高速&大容量の記憶装置が存在
するように見せ掛ける・・・「仮想的」
• 高速性・・・キャッシュメモリ
• 大容量性・・・仮想記憶
• 仮想記憶・・・セグメント方式,ページ方式