線形アドレス
読み:せんけいアドレス
外語:linear address

 電子計算機においてアドレス、特にメモリーアドレスを指定する際に、0から始まる連続した一つの整数によって表わす方法のこと。
目次

概要
 現在主流のノイマン型電子計算機は、基本的にチューリングマシンであるため、全てが線形アドレスを用いており、一つも例外はない。
 但し、従来と互換性を保ちながら大容量のメモリー空間を扱う、という課題の解決のために、ユーザープログラムから見た状況が線形アドレスではないこともある(例えば8086セグメント等)。このような場合でも、最終的に求められるアドレスは一つの数値なので、線形アドレスである。

特徴

チューリングマシン
 チューリングマシンは仮想の電子計算機なので、完全なチューリングマシンは存在しえないが、その基本的な要素については充分実現可能であり、そして現在の殆ど全ての電子計算機は、このチューリングマシンなのである。
 チューリングマシンの要求として、読み書きできる場所(例えばテープ)を前後に移動する機能があればよく、特定のアドレスを一意に示す機能は求められていない。
 しかし無限の容量を扱うことは現実的に不可能であるので、特定の幅を持ったアドレスの範囲内で、その読み書きできる位置に番号を振ることになる。この場所を示すためにポインターが使われるため、結果としてチューリングマシンをほぼ忠実に再現できることになり、同時に、0から始まる連続した番号によってアドレスを管理する、という仕様が生まれることとなる。

x86プロセッサーの場合
 16ビットマイクロプロセッサーから始まったx86は、その進化の途上において、様々な苦労を重ねてアドレス幅を増やしてきた。
 16ビット時代はセグメントによって、32ビット化してからもPAE(Physical Address Extension、物理アドレス拡張)という技術によってアドレスの拡張をしている。
 このとき、例えばセグメントを用いる方法において、ds:[si]のようにしてメモリーにアクセスする場合、これは線形とは言いがたい。しかしCPU内部では、dsレジスターとsiレジスターを組み合わせ、20ビットの線形アドレスを算出しているのである。
 一方、PAEなどが無くアドレスバスが32ビットとなったx86プロセッサーを想定すれば、[esi]のようにしてメモリーにアクセスする場合、これは線形だと言える。

再検索