\r\n\r\n
論理アドレスと物理アドレスの大きな違いは、論理アドレスがプログラム実行時にCPUによって生成されるのに対し、物理アドレスはメモリセル内の位置であることです。
簡単に言うと、CPUは論理アドレスや仮想アドレスを生成する。実行中のプログラムからは、論理アドレスで指定されたアドレスにアイテムがあるように見える。メモリセルは、物理アドレスを観測する。また、データバスを介してメインメモリ内の特定のメモリセルにアクセスすることができます。
1. 概要と主な相違点 2. 論理アドレスとは 3. 物理アドレスとは 4. 横並び比較 - 論理アドレスと物理アドレスの表形式 5. まとめ
CPUは論理アドレスを生成します。実行中のプログラムからは、論理アドレスで指定されたアドレスにあるように見える。コンピュータ上で動作するアプリケーションには、物理アドレスは見えません。常に論理アドレスで動作します。論理アドレス空間は、プログラムによって生成される論理アドレスの集合である。論理アドレスを使用する前に、論理アドレスと物理アドレスの対応付けが必要です。このマッピング処理は、ハードウェアデバイスのメモリ管理ユニット(MMU)が担当します。
MMUはいくつかのマッピング方式に対応しています。最も単純なマッピング方式では、アプリケーションが生成した各論理アドレスに再配置レジスタの値を加算し、メモリに送信する。他にもマッピングを生成する複雑な方法はいくつもある。アドレスバインディング(メモリアドレスに命令やデータを割り当てること)は、3つの異なるタイミングで発生することがある。
図01:論理アドレスと物理アドレス
まず、実際のメモリ位置があらかじめ分かっている場合、コンパイル時に絶対的なコードが生成されることがあります。また、事前にメモリ位置がわからない場合は、ロード時に発生することもあります。このため、コンパイル時にリロケータブルコードを生成する必要がある。また、アドレスバインディングは、実行時に発生することもあります。そのためには、アドレスマッピングをハードウェアでサポートする必要があります。コンパイル時およびロード時のアドレスバインディングでは、論理アドレスと物理アドレスは同じです。しかし、実行時にアドレスバインディングが行われる場合は、処理が異なる。
メモリセルは、物理アドレスまたは実アドレスを観測する。データバスがメインメモリ内の特定のメモリセルにアクセスできるようにする。MMUは論理アドレスを物理アドレスにマッピングする。例えば、最も単純なマッピング方式では、再配置レジスタ(レジスタの値をyとする)の値が論理アドレスに加算され、0からxまでの論理アドレス範囲が、yからx+yまでの物理アドレス範囲にマッピングされることになります。
また、プログラムの物理アドレス空間とも呼ばれ、利用するためにはすべての論理アドレスが物理アドレスにマッピングされる必要がある。
論理アドレスと物理アドレスの比較 | |
論理アドレスは、実行中のアプリケーションから見て、プロジェクトが存在するように見えるアドレスです。 | 物理アドレスとは、データバスがメインメモリの特定のメモリセルやメモリマップドI/Oデバイスのレジスタにアクセスするために、アドレスバス回路上で2進数として表現されるメモリアドレスのことで、物理アドレスは、データバスがメインメモリの特定のメモリセルやメモリマップドI/Oデバイスのレジスタにアクセスするためのものです。 |
視認性 | |
ユーザーは、プログラムの論理アドレスを確認することができます。 | ユーザーは、プログラムの物理的なアドレスを表示することはできません。 |
生成方法 | |
CPUは論理アドレスを生成します。 | MMUが物理アドレスを計算する。 |
アクセシビリティ | |
ユーザーは、論理アドレスを使って物理アドレスにアクセスすることができます。 | ユーザーは物理的な住所に直接アクセスすることはできません。 |
論理アドレスと物理アドレスの違いは、論理アドレスがプログラム実行時にCPUが生成するのに対し、物理アドレスはメモリセル内の位置であることです。すべての論理アドレスは、MMUが使用する前に物理アドレスにマッピングされる必要があります。コンパイル時アドレスバインディングとロード時アドレスバインディングを使用する場合、物理アドレスと論理アドレスは同じになりますが、実行時アドレスバインディングを使用する場合、それらは異なるものになります。
1. "論理アドレス", ウィキペディア, ウィキメディア財団, 2018年4月30日.ここで提供される 2. "物理的な住所", ウィキペディア、ウィキメディア財団、2018年4月30日。ここで提供される 2. "物理的な住所", ウィキペディア、ウィキメディア財団、2018年4月30日。