連載
» 2010年02月01日 00時00分 公開

【問題6】 高速化技術「パイプライン制御」について“組み込み力”向上! ETEC対策ドリル(6)

セグメンテーション方式とページング方式の仮想記憶の仕組みについて解説。さらに、パイプライン制御に関する演習を出題する。

[近森満(株式会社サートプロ 代表取締役社長/JASA ETEC運営事務局),@IT MONOist]

【問題5】の解答

 前回の宿題【問題5】は、ページング方式の「仮想記憶」に関する問題でした。

 仮想記憶は、MPUが実際に搭載したメモリより見かけ上大きな空間を利用できるようにするための仕組みです。

 今回も問題の解答に続いて、仮想記憶の仕組みについて解説します。この機会にしっかりと理解しておきましょう。

 それでは、解答を発表します!


問題5

ページング方式の仮想記憶に関する次の記述のうち、正しいものはどれか?

ア.ページテーブル上で物理ページ番号を参照したときに、
   対応する論理ページ番号が見つからなければ、必要なページがメモリ上に存在しないことになる。
イ.ページフォールトが発生すると、補助記憶装置上のページを特定して
   メモリに書き込むページアウトが行われる。
ウ.MMU(メモリ管理ユニット)は、ページテーブル上の論理ページ番号と物理ページ番号を基に、
   論理アドレスを物理アドレスに変換する。
エ.スワップするページを特定するアルゴリズムには、
   最初に読み込んだページを最初にスワップ対象として選択するNRUなどがある。

答え. (←クリック)


【問題5】の補足

 以外の記述には誤りがあります。

 は、「ページテーブル上で物理ページ番号を参照したときに、対応する論理ページ番号が見つからなければ」が誤りです。ページテーブル上で論理ページ番号を参照したときに、対応する物理番号が見つからなければ、必要なページがメモリ上に存在しないことになります。

 は、「補助記憶装置上のページを特定してメモリに書き込む」が誤りです。ページアウトでは、メモリ上のページを特定して補助記憶装置上に書き込みます。

 は、「最初に読み込んだページを最初にスワップ対象として選択するNRU」が誤りです。最初に読み込んだページを最初にスワップ対象として選択するのは、FIFO(First In, First Out)方式です。

見かけ上大きなメモリ空間を利用する仕組み

 MPUは、プログラムをメモリ(主記憶装置)にロードして実行しますが、ソフトウェアが多機能になるとプログラムのサイズも大きくなり、コンピュータに搭載したメモリ容量を上回ることがあります。ただし、プログラムの実行時間を短く区切ってみると、単位時間当たりにメモリ上にロードしておかなければならない部分は、プログラムのごく一部です。そのため、プログラムを複数のブロックに分割し、実行に必要な部分をメモリ上にロードして、残りを補助記憶装置に保存しておき、必要になったときに随時メモリ上のブロックと入れ替えるという仕組みが考えられました。これが仮想記憶です。

 仮想記憶を用いることで、実際のメモリ容量より見かけ上大きな空間を利用できるようになります。このとき、MPUが参照する見かけ上のアドレス空間を「論理アドレス空間」、実際のメモリのアドレス空間を「物理アドレス空間」といいます。

 また、仮想記憶はプログラムをどのように分割するかで、「セグメンテーション方式」と「ページング方式」に大きく分けられます。

セグメンテーション方式の仮想記憶

 セグメンテーション方式の仮想記憶では、プログラムをルーチン、タスク、データなど、何らかの意味を持った「セグメント」という単位に分割します。セグメントは通常可変長になり、「セグメントテーブル」で管理されます。

 セグメントテーブルには、セグメントのサイズ、セグメントが格納されている物理アドレスなどのほか、現在そのセグメントがメモリ上に存在するかどうかを示すフラグが保持されています。あるセグメントにアクセスする際には、論理アドレスに含まれるセグメント番号を基にセグメントテーブルを参照します。このとき、フラグが「1」であれば、セグメントテーブルに格納されている物理アドレスと論理アドレス内のオフセットから物理アドレスを求め、メモリ上のセグメントにアクセスします。フラグが「0」であれば、そのセグメントがメモリ上に存在しないという意味です。これを「セグメントフォールト」といいます。セグメントフォールトが発生すると、不要と思われるセグメントを補助記憶装置に書き戻して当該セグメントを補助記憶装置からメモリに読み込む、スワップ処理が行われます。

図1 セグメンテーション方式の仮想記憶の概要

ページング方式の仮想記憶

 ページング方式の仮想記憶では、プログラムを「ページ」という固定長の単位に分割します。現在は、ページング方式が主流です。ページは、「ページテーブル」で管理されます。

 ページテーブルには、論理ページ番号とそれに対応する物理ページ番号などの情報が格納されています。あるページにアクセスする際には、論理アドレスに含まれる論理ページ番号を基にページテーブルを参照します。その論理ページ番号に対応する物理ページ番号があれば、そのページがメモリ上に存在するという意味です。ページテーブルに格納されている物理ページ番号と論理アドレス内のオフセットから物理アドレスを求め、そのページにアクセスします。物理ページ番号が見つからなければ、そのページはメモリ上に存在しません。これを「ページフォールト」といいます。ページフォールトが発生すると、不要と思われるページを補助記憶装置に書き戻し、当該ページを補助記憶装置からメモリに読み込む、スワップ処理が行われます。

図2 ページング方式の仮想記憶の概要

 ページング方式の仮想記憶でページフォールトが発生したとき、メモリ上のどのページをスワップの対象とするかを決めるアルゴリズムを「ページ置換アルゴリズム」といいます。表1に、代表的なページ置換アルゴリズムを示します。

表1 ページ置換アルゴリズム
方式
説明
FIFO(First In, First Out)方式 最初にメモリに読み込んだページを選択してページアウトする
NRU(Not Recently Used)方式 最近使っていないページを選択してページアウトする
LRU(Least Recently Used)方式 最も長い時間使われていないページを選択してページアウトする
NFU(Not Frequently Used)方式 最も使用回数が少ないページを選択してページアウトする

メモリを効率的に利用するためのMMU

 仮想記憶など、コンピュータに搭載されているメモリを効率的に利用するために必須の回路が「MMU(メモリ管理ユニット)」です。MMUは、仮想記憶において論理アドレスを物理アドレスに変換する役目を担います。ページング方式の仮想記憶では、MMUの構造によってページのサイズが決まります。

 MMUはそのほかにも、

  • MPUとメモリをつなぐバスインターフェイスの制御
  • キャッシュメモリの制御
  • メモリへの異常アクセスがないかを監視するメモリの保護

などの機能を提供します。

今回の演習問題―【問題6】

問題6

パイプライン制御の説明として、正しいものはどれか?

ア.
MPUと他の装置の間に高速なメモリを設置し、アクセス速度の差を緩衝することで高速化を図る。
イ.
1つの命令を複数のステージに分割し、各ステージを並行して実行し、
   複数の命令をオーバーラップさせて処理することで高速化を図る。
ウ.
MPUを介さず、メモリと他の装置との間でデータを直接やり取りすることで高速化を図る。
エ.
メモリをバンクという単位に分割し、
   同時に複数のバンクへのアクセスを可能にすることで高速化を図る。

答え. 解答はこちら(←クリック)


 いかがでしたでしょうか? 仮想記憶の仕組みについて理解できましたか。次回は、「パイプライン制御」などの高速化技術について解説します。お楽しみに! (次回に続く)

関連リンク:
組込みソフトウェア技術研修講座イーラーニング(サンプルIDプレゼント中)
http://www.certpro.jp/elearning.html
組込みソフトウェア技術者試験クラス2試験対策問題集(ETEC-SW2)(サンプルIDプレゼント中)
http://www.certpro.jp/etecsw2test.html

筆者プロフィール
  株式会社サートプロ 代表取締役社長
社団法人 組込みシステム技術協会 ETEC運営事務局
近森 満(ちかもり みつる)

大手電気メーカー、外資系IT教育ベンダ、オープンソース系技術者資格認定団体などを経て、2006年より組み込みシステム分野の人材育成・教育支援を行う株式会社サートプロを設立する。現在は、ETEC運営事務局としてJASAの組込みソフトウェア技術者試験の普及・啓蒙(けいもう)活動のほか、組み込み人材育成と教育支援事業を行う。

Copyright © ITmedia, Inc. All Rights Reserved.