単一レベル記憶
出典: フリー百科事典『ウィキペディア(Wikipedia)』
単一レベル記憶 (たんいつれべるきおく、SLS; Single-level store) は、一つのコンピュータが使っている記憶装置全てを、アプリケーションソフトウェアに対して主記憶装置と補助記憶装置の区別を意識させずに、ただ一つの巨大なアドレス空間で管理する仮想記憶のメモリ管理技術である。 入出力が非常に高速であるなどの特長がある。 単一レベル記憶は、Multics、IBM System/38 および System i (以前の AS/400、iSeries) などで採用されている。
目次 |
[編集] 概要
単一レベル記憶 (SLS) の仮想記憶によるメモリ管理での記憶装置のアドレス空間は、一定の大きさのページと呼ばれる単位 (IBM System i では4KB) で区分されている。 あるページは、主記憶装置上にあるかもしれないし、補助記憶装置上にあるかもしれない。 あるページ (データ) が主記憶装置 (メインメモリ) と補助記憶装置 (磁気ディスク装置など) のどちらに存在するかについては、アプリケーションソフトウェアは意識することが無い (知る必要は無く、また知ることはできない) 。 ページ (データ) の現在の場所が主記憶装置と補助記憶装置のどちらであるかは、アプリケーションソフトウェアにとっては重要なことでは無いのである。 あるページが主記憶装置と補助記憶装置のどちらに存在するかについては、単一レベル記憶を担うシステムコンポーネントが管理している。 このシステムコンポーネントが、ページの割り当てを主記憶装置および補助記憶装置上で管理して、アプリケーションソフトウェアを含めたプロセスに対して利用できるようにする、責任を担っている。 ページへのアクセスが発生した際、そのページが
- 主記憶装置上に存在する場合は即座にそのページは利用することができる。
- 補助記憶装置上に存在する場合はページフォールトが発生して、システムコンポーネントが補助記憶装置上のページを主記憶装置上に展開して利用できるようにする。
単一レベル記憶ではシステムに接続されている全ての記憶装置をカバーできるような大きなアドレス空間が必要となる (32ビットアドレスのシステムでは全部で4GBのアドレスを指定できるが多くの場合これでは不十分である) [1]。 IBM System/38 と初期の AS/400 (System i) では48ビットアドレスを使用していたため充分に大きいアドレス空間を使うことができた。 なお AS/400 はその後アドレス空間が拡張され、2006年現在では64ビットアドレスを使用している[2]。
[編集] 特長とIBMの実装
IBM System/38 や System i (AS/400、iSeries) など単一レベル記憶 (SLS) の仮想記憶を採用しているシステムは、実行性能が高いという特長がある。 この特長は、UNIX や Linux など他のシステムでの仮想記憶と大きく異なる点である。 単一レベル記憶を採用しているシステムでは、複数の補助記憶装置 (磁気ディスク装置など) を並列して利用することができる。 例えば System/38 および System i の実装では、全てのオブジェクトを全ての補助記憶装置に分散して配置し、オブジェクトの格納および検索を極めて高速に行っている。 その結果 System/38 と System i では、補助記憶装置の領域が不足することは滅多に無い。 単一レベル記憶を採用しているシステムはまた実行時に、CPU、主記憶装置、補助記憶装置の間で資源を互いに自由に置き換え合うことができ、性能上のボトルネックを解決する。
System i では、そのオペレーティングシステム (OS) である i5/OS (System/38の場合はCPF) より低水準のソフトウェア層 (TIMI;「技術に依存しないマシンインタフェース」の下の層) である SLIC (System License Internal Code) と呼ばれるソフトウェアが単一レベル記憶を実現している。 単一レベル記憶を提供しているのは SLIC であり、i5/OS ではない。 つまり SLIC はあるデータが主記憶装置上に存在するかどうかを知っているが、i5/OS は単一レベル記憶に関与していないため知らない。
System/38 および System i での単一レベル記憶の実装では、マルチプロセスにおけるプロセス切り換え時の命令数がとても少なく、そのためプロセス切り換えは非常に高速である。 この特長のため System/38 と System i は、多数のユーザを同時にサポートする場合や、多くのトランザクションを処理する場合 (トランザクション処理) において、高い性能を実現する。
ファイル操作においては、従来のシステムはファイルのオープンやクローズを多数行うため、余分なディスク操作が発生し、システム全体のパフォーマンスを低下させていたが、System/38 と System i ではその場でファイルを処理するため余分なオーバーヘッドが発生しない[3]。
System/38 と System i での単一レベル記憶では、ページフォールトは2種類ある。 データベースフォールトと非データベースフォールトである。
- データベースフォールトは、関係データベースオブジェクトに関連するページが現在主記憶装置上に存在しない際に発生する。System/38 と System i ではシステムの中核部分に関係データベース管理システム (RDBMS) を統合しており、関係データベースオブジェクトとして表 (テーブル) 、ビュー、索引 (インデクス) などがある。
- 非データベースフォールトは、関係データベース以外のオブジェクトに関連するページが現在主記憶装置上に存在しない際に発生する。
[編集] 歴史
IBM による System/38 および System i (AS/400、iSeries) の単一レベル記憶 (SLS) の仮想記憶の設計は、もともとは新しいコンピュータ・アーキテクチャの過渡期の実装を、全て固体素子の記憶装置を使って開発するために1960年代に考案された。 当時は磁気ディスク装置は、いずれ時代遅れになり、何らかの固体素子の記憶装置にとって代わられるであろうと考えられていた。 しかし当時の予想とは異なり2006年現在も、磁気ディスク装置は非常に広く使われている。 System/38 と System i の単一レベル記憶の設計は、システムに現在利用している記憶装置の種類を意識させないものであった。 IBM が1980年代後半に AS/400 (後の System i) のシステムを販売する際、IBM の人々は AS/400 は自分に磁気ディスク装置が付属していることを知らないと述べた。
[編集] 脚注
[編集] 関連項目
[編集] 参考文献
- フランク・ソルティス (著) 、日本アイ・ビー・エム(株) AS/400製品事業部 (翻訳/監修) 、『Inside the AS/400 : featuring the AS/400e series : 日本語版 第2版』、インフォ・クリエイツ、1998年、ISBN 4-900741-88-4、第8章 単一レベル記憶 (SLS)