メモリ管理ユニット(MMU)とは
メモリ管理ユニット(Memory Management Unit, MMU)は、
コンピュータの
ハードウェアにおける重要な部品の一つです。これは、
CPUが要求するメモリアクセスを効率的に処理するための機構であり、
仮想記憶管理、メモリ保護、キャッシュ制御、バス調停など、多岐にわたる機能を提供します。
MMUの主な機能
1.
仮想アドレスから物理アドレスへの変換:
MMUの最も重要な機能の一つは、
CPUが使用する仮想アドレスを、実際のメモリ上の
物理アドレスに変換することです。これにより、プログラムは物理メモリの配置を気にすることなく、より柔軟にメモリを使用できるようになります。
2.
メモリ保護:
MMUは、プログラムが不正なメモリアドレスにアクセスするのを防ぐメモリ保護機能を提供します。これにより、システムの安定性が向上し、悪意のあるプログラムからシステムを保護することができます。
3.
キャッシュ制御:
MMUは、
キャッシュメモリの制御も行い、メモリへのアクセス速度を向上させます。これにより、
CPUは高速にデータにアクセスできるようになり、システム全体のパフォーマンスが向上します。
4.
バス調停:
MMUは、複数のデバイスが同時にメモリにアクセスしようとした際に、バスの利用を調整します。これにより、メモリへのアクセス競合を防ぎ、システムの安定性を保ちます。
5.
バンク切り替え:
単純な
8ビットシステムなどでは、MMUがメモリのバンクを切り替えることで、利用可能なメモリ空間を拡張します。
MMUの動作原理
MMUは、メモリ空間をページと呼ばれる固定サイズの単位に分割して管理します。一般的なページのサイズは数キロバイト(KB)であり、仮想アドレスはページ番号とページ内オフセットで構成されます。MMUは、ページテーブルと呼ばれるデータ構造を用いて、仮想ページ番号を物理ページ番号に変換します。
ページテーブルエントリ(PTE)には、物理ページ番号の他に、以下の情報が含まれています。
書き込み履歴: そのページに以前に書き込みがあったかどうか。
最終アクセス時間: 最後にアクセスされた時間(
ページ置換アルゴリズムで使用)。
アクセス権限: 特権モードやユーザーモードでの読み書き、実行の可否を設定。
キャッシュ制御: キャッシュメモリにコピーするかどうかの設定。
ページフォールト
仮想ページに対応する物理メモリが存在しない場合、MMUは「ページフォールト」を発生させます。このイベントを
オペレーティングシステム(OS)が捕捉し、物理メモリの空き領域を探してPTEを更新します。また、物理メモリが不足している場合は、ページングと呼ばれる技術を用いて、ディスクに一時的にデータを退避させることもあります。
MMUは、メモリの
フラグメンテーション(断片化)を解消する上でも有効です。
仮想記憶を使用することで、物理メモリ上で連続していないメモリ領域も、仮想アドレス空間上では連続した領域として扱うことが可能になります。
様々なアーキテクチャにおけるMMU
MMUの具体的な実装は、アーキテクチャによって異なります。以下に、いくつかのアーキテクチャにおけるMMUの例を示します。
ARMアーキテクチャでは、4KB、16KBのページ、1MBのセクション、16MBのスーパセクションが使用されます。ページテーブルは、2段階または1段階の構造を持ちます。PTEには、読み書き権限、キャッシュ属性、
NXビットなどの情報が含まれます。
DEC Alphaプロセッサは、8192バイトのページを使用します。TLBミス時には、ファームウェアが三層の木構造のページテーブルを探索します。
PowerPCは、いくつかの異なるMMU設計を持ちます。通常は4KBのページを使用し、TLBミス時には、BATレジスタと逆引きページテーブルを同時に参照します。
VAXのページサイズは512バイトと非常に小さく、OSが複数ページをまとめて扱うことができます。Linuxでは8ページをグループ化して4KBのページとして扱います。
x86-32
x86アーキテクチャでは、4KBのページを使用し、3階層のページテーブルを採用しています。セグメントレジスタは、特殊な用途を除いて無視されます。
x86-64
x86-64アーキテクチャでは、セグメントレジスタは無視され、4階層のページテーブルが使用されます。
IBM System/370 およびその後継
System/370では、アクセスビットとダーティビットがページテーブルとは別に管理されており、
仮想化が容易になっています。
その他のアーキテクチャ
PA-RISC:ハッシュ・ページ・テーブルと呼ばれる複雑な構造を使用
MIPS:TLBのみを使用し、ページテーブル構造はOSに委ねられる
CPU以外からのMMUの利用
PCIデバイスなどのバスマスタとしてメモリにアクセスするデバイスやDMAも、MMUによってアドレス変換の対象になることがあります。これにより、仮想アドレス空間を利用することができ、柔軟な
メモリ管理が可能になります。
まとめ
メモリ管理ユニット(MMU)は、
コンピュータシステムにおいて、
メモリ管理、セキュリティ、パフォーマンスに不可欠な役割を果たします。様々なアーキテクチャで異なる実装が見られますが、その基本的な機能は共通しています。MMUの理解は、
コンピュータシステムの深い理解につながるでしょう。
参考文献
* この記事は2008年11月1日以前にFree On-line Dictionary of Computingから取得した項目の資料を元に、GFDL バージョン1.3以降の「RELICENSING」(再ライセンス) 条件に基づいて組み込まれている。