MMU(エムエムユー)とは | 意味や読み方など丁寧でわかりやすい用語解説
MMU(エムエムユー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
メモリ管理ユニット (メモリカンリユニット)
英語表記
MMU (エムエムユー)
用語解説
MMU (Memory Management Unit) は、中央演算処理装置 (CPU) がメモリにアクセスする際に、そのアクセスを管理・制御するハードウェアユニットである。現代のほとんどのCPUに内蔵されており、オペレーティングシステム (OS) と密接に連携しながら、システムの安定性、セキュリティ、そしてメモリの効率的な利用を実現する上で不可欠な役割を担っている。
MMUの最も主要な機能は、仮想アドレスから物理アドレスへの変換である。コンピュータシステムでは、複数のプログラムが同時に実行されることが一般的である。これらのプログラムは、それぞれが自分専用の広大なメモリ空間を持っているかのように動作することを期待する。しかし、実際のコンピュータには有限な量の物理メモリしか搭載されていないため、各プログラムに物理メモリをそのまま割り当てると、メモリの競合や他のプログラムへの意図しないアクセスといった問題が発生する可能性がある。
そこで導入されるのが「仮想メモリ」の概念である。仮想メモリは、各プログラムに独立した、物理メモリの容量に縛られない広大なアドレス空間を提供し、あたかもそのプログラムが単独でシステム全体のメモリを占有しているかのように見せかける技術である。CPUがプログラムから要求されるメモリアドレスは、この仮想メモリ空間内のアドレスであり、これを「仮想アドレス」または「論理アドレス」と呼ぶ。MMUは、この仮想アドレスを受け取り、実際の物理メモリ上のアドレスである「物理アドレス」に変換する役割を担う。
このアドレス変換は、通常「ページング」という方式で行われる。仮想アドレス空間と物理アドレス空間は、それぞれ固定サイズの小さなブロックに分割される。仮想アドレス空間のブロックを「ページ」、物理アドレス空間のブロックを「ページフレーム」と呼ぶ。例えば、多くのシステムでは4KB(4096バイト)が一般的なページのサイズである。MMUは、仮想アドレスのうち「仮想ページ番号」と呼ばれる部分を使って、「ページテーブル」という特別なデータ構造を参照する。ページテーブルはOSによって管理されており、どの仮想ページがどの物理ページフレームに対応するか、あるいはそのページがメモリ上に存在するかどうか、書き込み可能かなどの情報が記録されている。MMUはこのページテーブルから対応する物理ページフレーム番号を取得し、仮想アドレス内の「ページオフセット」と呼ばれる部分と結合することで、最終的な物理アドレスを生成する。
MMUが提供する主なメリットは多岐にわたる。 第一に、「メモリ保護」の実現である。MMUは、あるプログラムが他のプログラムのメモリ領域やOS自身のメモリ領域にアクセスしようとした場合、それを検知してアクセスを拒否する機能を持つ。これにより、プログラムのバグや悪意のあるコードがシステム全体に深刻な影響を与えることを防ぎ、システムの安定性とセキュリティを大幅に向上させる。例えば、不正なメモリアドレスへの書き込み要求があった場合、MMUは例外(ページフォールト)を発生させ、OSに処理を委ねる。 第二に、「メモリの効率的な利用」である。物理メモリは様々なプログラムやOSによって利用されるため、断片化しやすい。しかし、MMUと仮想メモリのおかげで、各プログラムは連続した仮想アドレス空間を持つことができ、物理メモリの断片化を意識することなくメモリを利用できる。 第三に、「複数プロセスの同時実行」を可能にする。各プロセスが独立した仮想アドレス空間を持つため、互いに干渉することなく同時にメモリを使用できる。これは、現代のマルチタスクOSにおいて不可欠な機能である。 第四に、「物理メモリサイズ以上のメモリを扱える」ようになることである。MMUは、プログラムが必要とするデータやコードが物理メモリ上に存在しない場合(これを「ページフォールト」と呼ぶ)、それを検出してOSに通知する。OSは、ディスク上のスワップ領域(仮想メモリの一部を一時的に保存する場所)から必要なデータを物理メモリに読み込み(ページイン)、代わりにあまり使われていないデータをスワップ領域に書き出す(ページアウト)ことで、物理メモリの容量を超えたメモリ空間をプログラムに提供する。 第五に、「メモリ共有」の機能である。複数のプロセスが同じデータやコード(例えば、共通のライブラリや共有メモリ領域)を読み込む場合、MMUの設定により、それらの仮想アドレスが同じ物理メモリ領域を指すようにできる。これにより、メモリの重複を防ぎ、システム全体のメモリ使用量を削減できる。
アドレス変換はCPUがメモリにアクセスするたびに発生するため、その処理速度はシステム全体のパフォーマンスに大きく影響する。このオーバーヘッドを削減するため、MMUには「TLB (Translation Lookaside Buffer)」と呼ばれる高速なキャッシュメモリが搭載されている。TLBは、最近行われた仮想アドレスから物理アドレスへの変換結果を一時的に保存しておくことで、同じ変換が再度必要になった場合にページテーブルを参照する手間を省き、アドレス変換を高速化する。もしTLBに目的の情報が見つからない場合は、MMUがページテーブルを参照し、その結果をTLBにキャッシュする。
このように、MMUは仮想メモリの実現を通じて、現代のコンピュータシステムにおけるメモリ管理の根幹を支えるハードウェアユニットである。システムの安定性、セキュリティ、マルチタスク処理、そして物理メモリの効率的な利用は、MMUの存在なくしては成り立たない。システムエンジニアを目指す上で、MMUと仮想メモリの仕組みを理解することは、OSやアプリケーションの動作原理を深く理解し、パフォーマンスチューニングやデバッグを行う上で非常に重要となる。