単一レベル記憶

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

単一レベル記憶(たんいつレベルきおく、: Single-level store, Single-level storage, SLS)は、コンピュータが使っている記憶装置について、アプリケーションソフトウェアに対して主記憶装置補助記憶装置の区別を意識させずに、ただ一つの巨大なアドレス空間で管理する仮想記憶メモリ管理技術である。

入出力が非常に高速、プログラム実行の際に磁気ディスク装置から主記憶装置へのロードが不要、ユーザー (やオペレータ) から見て、磁気ディスク装置の管理が単純になる(たとえば、通常の管理業務では必須となるファイルシステムによるフォーマット等を必要とせず、単に新しいディスクを接続すればシステムの使える資源が増える、といったように)、などの特長がある。

単一レベル記憶は、MulticsIBMSystem/38AS/400 (およびその後継システムの eServer iSeriesSystem iPower Systems i Edition)などで採用されている。

概要[編集]

単一レベル記憶 (SLS) の仮想記憶によるメモリ管理での記憶装置アドレス空間は、一定の大きさのページと呼ばれる単位 (IBM AS/400 では4KB) で区分されている。

あるページは、主記憶装置上にあるかもしれないし、補助記憶装置上にあるかもしれない。あるページ (データ) が主記憶装置 (メインメモリ) と補助記憶装置 (磁気ディスク装置など) のどちらに存在するかについては、アプリケーションソフトウェアは意識することが無い (知る必要は無く、また知ることはできない) 。ページ (データ) の現在の場所が主記憶装置と補助記憶装置のどちらであるかは、アプリケーションソフトウェアにとっては重要なことではないのである。

あるページが主記憶装置と補助記憶装置のどちらに存在するかについては、単一レベル記憶を担うシステムコンポーネントが管理している。このシステムコンポーネントが、ページの割り当てを主記憶装置および補助記憶装置上で管理して、アプリケーションソフトウェアを含めたプロセスに対して利用できるようにする責任を担っている。

ページへのアクセスが発生した際、そのページが

  • 主記憶装置上に存在する場合は即座にそのページは利用することができる。
  • 補助記憶装置上に存在する場合はページフォールトが発生して、システムコンポーネントが補助記憶装置上のページを主記憶装置上に展開して利用できるようにする。

単一レベル記憶ではシステムに接続されている全ての記憶装置をカバーできるような大きなアドレス空間が必要となる (32ビットアドレスのシステムでは全部で4GBのアドレスを指定できるが多くの場合これでは不十分である) [1]

IBM System/38 と初期の AS/400 では48ビットアドレスを使用していたため充分に大きいアドレス空間を使うことができた。

なお AS/400 はその後アドレス空間が拡張され、2006年現在では64ビットアドレスを使用している[2]

特長とIBMの実装[編集]

IBM System/38AS/400 (およびその後継システムの、eServer iSeriesSystem iPower Systems i Edition)など単一レベル記憶 (SLS) の仮想記憶を採用しているシステムは、実行性能が高いという特長がある。

この特長は、UNIXLinux など他のシステムでの仮想記憶と大きく異なる点である。単一レベル記憶を採用しているシステムでは、複数の補助記憶装置 (磁気ディスク装置など) を並列して利用することができる。例えば System/38 の実装では、全てのオブジェクトを全ての補助記憶装置に分散して配置し、オブジェクトの格納および検索を極めて高速に行っている。その結果 System/38 では、補助記憶装置の領域が不足することはめったにない。

単一レベル記憶を採用しているシステムはまた実行時に、CPU主記憶装置補助記憶装置の間で資源を互いに自由に置き換え合うことができ、性能上のボトルネックを解決する。

System/38(およびその後継システム)では、そのオペレーティングシステム(OS)であるCPF(および後継のOS/400i5/OSIBM i)より低水準の、ソフトウェア層 (TIMI; Technology Independent Machine Interface「技術に依存しないマシンインタフェース」の下の層) である SLIC (System License Internal Code) と呼ばれるソフトウェアが単一レベル記憶を実現している。単一レベル記憶を提供しているのは SLIC であり、OS ではない。つまり SLIC はあるデータが主記憶装置上に存在するかどうかを知っているが、OS は単一レベル記憶に関与していないため知らない。

System/38 と AS/400 (およびその後継システム)での単一レベル記憶の実装では、マルチプロセスにおけるプロセス切り換え時の命令数がとても少なく、そのためプロセス切り換えは非常に高速である。この特長のため System/38 と AS/400 (およびその後継システム)は、多数のユーザを同時にサポートする場合や、多くのトランザクションを処理する場合 (トランザクション処理) において、高い性能を実現する。

ファイル操作においては、従来のシステムはファイルのオープンやクローズを多数行うため、余分なディスク操作が発生し、システム全体のパフォーマンスを低下させていたが、System/38 と AS/400 (およびその後継システム)ではその場でファイルを処理するため余分なオーバーヘッドが発生しない[3]

System/38 と AS/400 (およびその後継システム)での単一レベル記憶では、ページフォールトは2種類ある。データベースフォールトと非データベースフォールトである。

  • データベースフォールトは、関係データベースオブジェクトに関連するページが現在主記憶装置上に存在しない際に発生する。System/38 と AS/400 ではシステムの中核部分に関係データベース管理システム (RDBMS) を統合しており、関係データベースオブジェクトとして (テーブル) 、ビュー索引 (インデクス) などがある。
  • 非データベースフォールトは、関係データベース以外のオブジェクトに関連するページが現在主記憶装置上に存在しない際に発生する。

歴史[編集]

IBM による System/38AS/400 (およびその後継システムの eServer iSeriesSystem iPower Systems i Edition)の単一レベル記憶 (SLS) の仮想記憶の設計は、もともとは新しいコンピュータ・アーキテクチャの過渡期の実装を、全て固体素子の記憶装置を使って開発するために1960年代に考案された。これは、磁気ディスク装置は、そう遠くないうちに時代遅れになり、何らかの固体素子の記憶装置にとって代わられるであろうという予想にもとづいたものである(この予想は、わずかに半世紀ほどの誤差で、Flash SSDにより徐々に現実のものとなりつつある)。System/38 と AS/400 (およびその後継システム)の単一レベル記憶の設計は、システムに現在利用している記憶装置の種類を意識させないものであった。

IBM が1980年代後半に AS/400 のシステムを販売する際、IBM の人々は「AS/400 は自分に磁気ディスク装置が付属していることを知らない」と述べた。

脚注[編集]

[ヘルプ]
  1. ^ フランク・ソルティスほか (1998) 、p.232
  2. ^ フランク・ソルティスほか (1998) 、p.233
  3. ^ フランク・ソルティスほか (1998) 、p.246

関連項目[編集]

参考文献[編集]

外部リンク[編集]