コンピューティングにおいて、物理アドレス(ぶつりアドレス、英語: physical address)または実アドレス(じつアドレス、英語: real address)とは、データバスが、メインメモリの特定の記憶セル、またはメモリマップドI/Oデバイスのレジスタにアクセスすることを可能にするために、 アドレスバス回路上の二進数の形式で表されるメモリアドレスである。

仮想アドレス空間(virtual address space)と物理アドレス空間(physical address space)の関係

CPUにおける使用 編集

仮想記憶をサポートしているコンピュータでは、 物理アドレスという用語は主に仮想アドレス英語版と区別するために使用される。特に、メモリアドレスを変換するためにメモリ管理ユニット(MMU)を利用するコンピュータでは、仮想アドレスと物理アドレスは、それぞれMMUによって実行される変換の前後のアドレスのことを指す[1]

アラインされていないアドレス指定 編集

基盤として使用するコンピュータアーキテクチャによっては、アラインされていないメモリアクセスを行うと、コンピュータのパフォーマンスが低下する可能性がある。例えば、Intel 8086などの16ビットメモリデータバスを備えた16ビットコンピュータは、アクセスが偶数アドレスにアラインされていると、一般にオーバーヘッドがより少なくなる。この場合、1つの16ビット値をフェッチするには、単一のメモリ読取り操作、すなわちデータバスを介した単一の転送が必要である[2][3]

16ビットのデータ値が奇数アドレスから始まる場合、プロセッサは2つのメモリ読み出しサイクルを実行して値をロードする必要がある。つまり、1回目の読み出しサイクルで下8ビットを読み出し、2回目で上8ビットを読み出す。いずれの読み出しサイクルでも16ビットごとにデータが取り出されるので、必要のない8ビットは廃棄される。モトローラ68000モトローラ68010SPARCなどの一部のプロセッサでは、アラインされていないメモリアクセスにより例外(通常、POSIXSIGBUSなどのソフトウェア例外)が発生する[2]

他のデバイスでの使用 編集

ダイレクトメモリアクセス(DMA)機能は、マザーボード内の他のデバイスがメインメモリをアドレス指定できるようにする。従って、このようなデバイスは、物理的アドレスの知識も必要とする。

関連項目 編集

脚注 編集

  1. ^ Frank Uyeda (2009年). “Lecture 7: Memory Management” (PDF). CSE 120: Principles of Operating Systems. UC San Diego. 2013年12月4日閲覧。
  2. ^ a b Daniel Drake (2007年12月4日). “Memory access and alignments”. LWN.net. 2013年12月4日閲覧。
  3. ^ Documentation/unaligned-memory-access.txt”. kernel.org. 2013年12月4日閲覧。