物理アドレス
コンピューティングにおいて、物理アドレス(ぶつりアドレス、英語: physical address)または実アドレス(じつアドレス、英語: real address)とは、データバスが、メインメモリの特定の記憶セル、またはメモリマップドI/Oデバイスのレジスタにアクセスすることを可能にするために、 アドレスバス回路上の二進数の形式で表されるメモリアドレスである。
CPUにおける使用
[編集]仮想記憶をサポートしているコンピュータでは、 物理アドレスという用語は主に仮想アドレスと区別するために使用される。特に、メモリアドレスを変換するためにメモリ管理ユニット(MMU)を利用するコンピュータでは、仮想アドレスと物理アドレスは、それぞれMMUによって実行される変換の前後のアドレスのことを指す[1]。
アラインされていないアドレス指定
[編集]基盤として使用するコンピュータアーキテクチャによっては、アラインされていないメモリアクセスを行うと、コンピュータのパフォーマンスが低下する可能性がある。例えば、Intel 8086などの16ビットメモリデータバスを備えた16ビットコンピュータは、アクセスが偶数アドレスにアラインされていると、一般にオーバーヘッドがより少なくなる。この場合、1つの16ビット値をフェッチするには、単一のメモリ読取り操作、すなわちデータバスを介した単一の転送が必要である[2][3]。
16ビットのデータ値が奇数アドレスから始まる場合、プロセッサは2つのメモリ読み出しサイクルを実行して値をロードする必要がある。つまり、1回目の読み出しサイクルで下8ビットを読み出し、2回目で上8ビットを読み出す。いずれの読み出しサイクルでも16ビットごとにデータが取り出されるので、必要のない8ビットは廃棄される。モトローラ68000、モトローラ68010、SPARCなどの一部のプロセッサでは、アラインされていないメモリアクセスにより例外(通常、POSIXのSIGBUSなどのソフトウェア例外)が発生する[2]。
他のデバイスでの使用
[編集]この節の加筆が望まれています。 |
ダイレクトメモリアクセス(DMA)機能は、マザーボード内の他のデバイスがメインメモリをアドレス指定できるようにする。従って、このようなデバイスは、物理的アドレスの知識も必要とする。
関連項目
[編集]- アドレス定数
- アドレッシングモード
- アドレス空間
- ページアドレスレジスタ
- ポインタ (プログラミング)
- 主記憶装置(メインメモリ)
- 仮想記憶
脚注
[編集]- ^ Frank Uyeda (2009年). “Lecture 7: Memory Management” (PDF). CSE 120: Principles of Operating Systems. UC San Diego. 2013年12月4日閲覧。
- ^ a b Daniel Drake (2007年12月4日). “Memory access and alignments”. LWN.net. 2013年12月4日閲覧。
- ^ “Documentation/unaligned-memory-access.txt”. kernel.org. 2013年12月4日閲覧。