アドレス変換(VA→PA)
英語表記: Address Translation (VA to PA)
概要
アドレス変換(VA→PA)とは、CPUが生成した仮想アドレス(Virtual Address: VA)を、実際に主記憶装置(メインメモリ)が持つ物理アドレス(Physical Address: PA)に変換する処理です。この重要な変換作業は、コンピュータの構成要素の中でも特に制御装置の一部であるメモリ管理ユニット(MMU)が担っています。これにより、各プログラムは他のプログラムの領域を気にすることなく、メモリ全体を自分だけで利用しているかのように振る舞うことができ、効率的かつ安全なマルチタスク処理が実現します。
詳細解説
アドレス変換(VA→PA)は、現代のオペレーティングシステム(OS)における仮想記憶(Virtual Memory)を実現するための根幹となる機能です。この機能は、コンピュータの構成要素のうち、命令の解釈と実行を司る「制御装置」の重要な補助役であるMMUによって実行されます。
目的と必要性
なぜこのような変換が必要なのでしょうか? プログラムが実行される際、CPUは命令に応じてメモリ上のデータを読み書きしますが、その際に生成されるアドレスは「仮想アドレス」です。もし複数のプログラム(プロセス)が同時に実行されている場合、それぞれが「自分はメモリの先頭(アドレス0番地)から使っている」と錯覚できる必要があります。この錯覚を実現しつつ、物理メモリ上での衝突を防ぎ、他のプロセスのデータに勝手にアクセスできないようにする(メモリ保護)のが、VA→PA変換の最大の目的です。これは本当に画期的ですね!
MMUの役割と動作原理
MMUは、CPUがVAを発行するたびに介入し、そのVAを即座にPAに変換します。この変換の仕組みとして最も一般的に用いられるのがページング方式です。
- 仮想アドレスの構造: 仮想アドレスは、通常、「ページ番号」(仮想ページ番号)と「オフセット」(ページ内の位置)の二つの部分に分けられます。
- ページテーブルの参照: MMUは、仮想アドレスのページ番号部分を利用して、主記憶装置内に存在するページテーブルを参照します。ページテーブルは、どの仮想ページが物理メモリのどの場所(フレーム)に対応しているかを記録したマッピングリストです。
- 物理アドレスの生成: ページテーブルから対応する物理フレーム番号を取得し、元の仮想アドレスのオフセット部分と結合することで、最終的な物理アドレス(PA)が生成されます。
変換の高速化:TLBの存在
ページテーブルは通常、主記憶装置(メインメモリ)に格納されています。アドレス変換のたびにメインメモリにアクセスすると、処理速度が大幅に低下してしまいます。なぜなら、メモリへのアクセスはCPUの処理速度に比べて非常に遅いからです。
この性能問題を解決するために、MMUの内部にはTLB (Translation Lookaside Buffer) と呼ばれる高速なキャッシュメモリが搭載されています。TLBは、最近変換されたVAとPAの対応関係を一時的に保持します。MMUはまずTLBをチェックし、対応するエントリがあればページテーブルを参照することなく即座にPAを特定できます。これにより、ほとんどの場合、変換は非常に高速に行われ、制御装置全体の効率が保たれます。TLBのヒット率の高さが、システムのパフォーマンスを左右すると言っても過言ではありません。
タクソノミとの関連性
このアドレス変換は、「コンピュータの構成要素」のうち「制御装置」の機能拡張として捉えられます。MMUはCPU(制御装置の中核)が命令を実行する際に発生させるメモリアクセス要求を仲介し、その正当性と実効性を保証する役割を担っているため、この分類に位置づけられるのです。
具体例・活用シーン
1. 図書館の利用者と司書のアナロジー
アドレス変換(VA→PA)は、巨大な図書館のシステムに例えると非常に分かりやすいです。
- 利用者(プロセス): あなたが読みたい本を探している利用者です。あなたは自分の頭の中のリスト(仮想アドレス空間)に基づいて、「コンピュータの本棚の3番目の本」といったように、抽象的な場所を認識しています。
- 本棚(物理メモリ): 実際に本が置かれている物理的な記憶装置です。
- 図書館の司書(MMU): あなたが「3番目の本」と伝えたとき、司書はすぐに「それは本棚のC列、5段目、左から2番目の場所にある」と、実際の物理的な位置(PA)に変換してくれます。
- 目録カード(ページテーブル): 司書がこの変換を行うために参照する、膨大で正確な対応表です。
利用者は、他の利用者がどこにいるか、本が物理的にどこに置かれているかを気にする必要がありません。司書(MMU)がすべてを管理し、衝突しないように、また必要な本がもし倉庫(ディスク)にあれば取り寄せてくれる(ページフォルトとスワッピング)役割を担っているのです。
2. 仮想記憶の実現
MMUによるVA→PA変換があるからこそ、OSは物理メモリの容量を超える巨大なプログラムを実行できます。プログラムの一部が物理メモリに乗り切らない場合、MMUは「そのページは現在、ディスク(補助記憶装置)に退避されています」という情報を検知し、OSにページフォルトを発生させます。OSはこのシグナルを受け取り、ディスクから必要なページを物理メモリに読み込む(スワッピング)処理を実行します。
3. プロセス間の分離
あるプロセスAがVA 1000番地を参照したとき、MMUはそれをPA 50000番地に変換します。同時に実行されているプロセスBがVA 1000番地を参照しても、MMUはそれを別の場所、例えばPA 80000番地に変換します。このように、同じ仮想アドレスが異なる物理アドレスに対応づけられることで、プロセスAが誤ってプロセスBのデータ領域にアクセスするのを防ぎ、システム全体の安定性を高めています。
資格試験向けチェックポイント
アドレス変換(VA→PA)は、ITパスポート試験、基本情報技術者試験、応用情報技術者試験のいずれにおいても、メモリ管理の核心として頻出します。特に「制御装置」と「MMU」の関係性を問う問題が多いです。
- VAとPAの区別: CPUが生成するのはVA(仮想アドレス)、実際にメモリにアクセスするのはPA(物理アドレス)であることを確実に理解してください。
- MMUの役割: アドレス変換を担当するハードウェアであり、メモリ保護や仮想記憶の実現に不可欠な「制御装置の構成要素」であることを覚えておきましょう。
- ページング方式: 仮想記憶を実現する一般的な方法であり、アドレスが「ページ番号」と「オフセット」に分割される仕組みを理解することが重要です。
- ページテーブル: VAとPAのマッピング情報が格納されているリストであり、通常はメインメモリ上に存在します。
- TLB (Translation Lookaside Buffer): 変換を高速化するためのMMU内のキャッシュメモリです。変換のたびにページテーブルを参照するオーバーヘッドを減らす役割を問う問題が頻出します。
- ページフォルト: 参照しようとした仮想ページが物理メモリ上に存在せず、補助記憶装置(ディスク)に退避されている場合に発生する割り込み(トラップ)です。この処理の流れを問う問題は応用情報技術者試験で特に重要です。
関連用語
- 情報不足
- 本記事はアドレス変換(VA→PA)に特化していますが、関連する用語として「仮想記憶(Virtual Memory)」「ページング(Paging)」「セグメンテーション(Segmentation)」「TLB(Translation Lookaside Buffer)」「ページテーブル(Page Table)」などがあります。これらをMMUの機能として詳細に説明する追加情報が必要です。