線形アドレス
読み:せんけいアドレス
外語:linear address
電子計算機
において
アドレス
、特にメモリーアドレスを指定する際に、0から始まる連続した一つの整数によって表わす方法のこと。
目次
概要
特徴
チューリングマシン
x86プロセッサーの場合
概要
現在主流の
ノイマン型
電子計算機は、基本的に
チューリングマシン
であるため、全てが線形アドレスを用いており、一つも例外はない。
但し、従来と互換性を保ちながら大容量のメモリー空間を扱う、という課題の解決のために、ユーザープログラムから見た状況が線形アドレスではないこともある(例えば
8086
の
セグメント
等)。このような場合でも、最終的に求められるアドレスは一つの数値なので、線形アドレスである。
特徴
チューリングマシン
チューリングマシンは仮想の電子計算機なので、完全なチューリングマシンは存在しえないが、その基本的な要素については充分実現可能であり、そして現在の殆ど全ての電子計算機は、このチューリングマシンなのである。
チューリングマシンの要求として、読み書きできる場所(例えばテープ)を前後に移動する機能があればよく、特定のアドレスを一意に示す機能は求められていない。
しかし無限の容量を扱うことは現実的に不可能であるので、特定の幅を持ったアドレスの範囲内で、その読み書きできる位置に番号を振ることになる。この場所を示すために
ポインター
が使われるため、結果としてチューリングマシンをほぼ忠実に再現できることになり、同時に、0から始まる連続した番号によってアドレスを管理する、という仕様が生まれることとなる。
x86プロセッサーの場合
16ビットマイクロプロセッサー
から始まった
x86
は、その進化の途上において、様々な苦労を重ねてアドレス幅を増やしてきた。
16ビット時代は
セグメント
によって、32ビット化してからも
PAE
(Physical Address Extension、物理アドレス拡張)という技術によってアドレスの拡張をしている。
このとき、例えばセグメントを用いる方法において、ds:[si]のようにしてメモリーにアクセスする場合、これは線形とは言いがたい。しかしCPU内部では、dsレジスターとsiレジスターを組み合わせ、20ビットの線形アドレスを算出しているのである。
一方、PAEなどが無くアドレスバスが32ビットとなったx86プロセッサーを想定すれば、[esi]のようにしてメモリーにアクセスする場合、これは線形だと言える。
再検索