IA-32

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

IA-32(「IntelArchitecture、32ビット」の略、 i386 [1] [2]とも呼ばれる[3]は、Intelによって設計され最初に実装されたx86命令セットアーキテクチャの32ビットバージョンです。 1985年の80386マイクロプロセッサ。IA-32は、32ビットコンピューティングをサポートするx86の最初の化身です。[4]結果として、「IA-32」という用語は、32ビットコンピューティングをサポートするすべてのx86バージョンを指す換喩として使用される場合があります。[5] [6]

さまざまなプログラミング言語ディレクティブ内で、IA-32は依然として「i386」アーキテクチャと呼ばれることがあります。他のいくつかのコンテキストでは、IA-32 ISAの特定の反復は、 80486P5、およびP6マイクロアーキテクチャによってそれぞれ提供される命令スーパーセットを参照して、 i486、i586、およびi686とラベル付けされることがあります。これらの更新により、基本のIA-32セットに加えて、浮動小数点機能MMX拡張機能などの多数の追加が提供されました。

Intelは歴史的にIA-32プロセッサの最大のメーカーであり、2番目に大きなサプライヤはAMDでした。1990年代には、VIATransmeta、およびその他のチップメーカーも、IA-32互換プロセッサ(WinChipなど)を製造していました。現代でも、IntelはIntelQuark マイクロコントローラプラットフォームでIA-32プロセッサを製造しています。ただし、2000年代以降、大多数のメーカー(Intelを含む)は、x86の64ビットバリアントであるx86-64に基づくCPUの実装にほぼ独占的に移行しました。x86-64は、仕様により、下位互換性のためにIA-32ISAで動作するレガシー動作モードを提供します。x86-64の現在の普及率を考慮しても、2018年の時点で、多くの最新のオペレーティングシステムのIA-32プロテクトモードバージョンが引き続き維持されています。たとえば、Microsoft Windows ( Windows10まで。Windows11ではx86バージョンにx86-64互換プロセッサが必要です) [7]およびDebianLinuxディストリビューション。[8] IA-32の名前にもかかわらず(そして潜在的な混乱を引き起こしている)、AMDに由来するx86の64ビットの進化は「IA-64」として知られておらず、その名前は代わりにIntelのItaniumアーキテクチャに属しています。

アーキテクチャ上の特徴

IA-32の主な特徴は、32ビット汎用プロセッサレジスタ(EAXやEBXなど)、32ビット整数演算および論理演算、プロテクトモードのセグメント内の32ビットオフセット、およびセグメント化されたアドレスの32ビット線形アドレスへの変換。設計者は、他の改善も行う機会を得ました。(16ビット286命令セットと比較して)最も重要な変更のいくつかを以下に説明します。

32ビット整数機能
すべての汎用レジスタ(GPR)は16ビットから32ビットに拡張され 、すべての算術および論理演算、メモリからレジスタおよびレジスタからメモリの演算などは、32ビット整数を直接操作できます。スタックのプッシュとポップデフォルトで4バイトのストライドであり、セグメント化されていないポインターの幅は4バイトです。
より一般的なアドレッシングモード
メモリリファレンスでは、任意のGPRをベースレジスタとして使用でき、ESP以外の任意のGPRをインデックスレジスタとして使用できます。インデックスレジスタ値は、ベースレジスタ値と変位に追加される前に、1、2、4、または8で乗算できます。
追加のセグメントレジスタ
FSとGSの2つの追加セグメントレジスタが用意されています。
より大きな仮想アドレス空間
IA-32アーキテクチャは、セグメント内に16ビットのセグメント番号と32ビットのオフセットを持つ48ビットのセグメント化されたアドレス形式を定義します。セグメント化されたアドレスは、32ビットの線形アドレスにマップされます。
デマンドページング
32ビットの線形アドレスは、物理アドレスではなく仮想アドレスです。それらは、ページテーブルを介して物理アドレスに変換されます。80386、80486 、および元のPentiumプロセッサでは、物理アドレスは32ビットでした。Pentium Pro以降のプロセッサでは、物理アドレス拡張により36ビットの物理アドレスが許可されていましたが、線形アドレスのサイズは32ビットのままでした

動作モード

動作モード 必要な オペレーティングシステム 実行されているコードのタイプ デフォルトのアドレスサイズ デフォルトのオペランドサイズ 典型的なGPR
保護モード 32ビットオペレーティングシステムまたはブートローダー 32ビットプロテクトモードコード 32ビット 32ビット 32ビット
16ビットプロテクトモードオペレーティングシステムまたはブートローダー、または32ビットブートローダー 16ビットプロテクトモードコード 16ビット 16ビット 16ビットまたは32ビット
仮想8086モード 16ビットまたは32ビットのプロテクトモードオペレーティングシステム 16ビットリアルモードコード 16ビット 16ビット 16ビットまたは32ビット
リアルモード 16ビットリアルモードオペレーティングシステムまたはブートローダー、または32ビットブートローダー 16ビットリアルモードコード 16ビット 16ビット 16ビットまたは32ビット
非現実的なモード 16ビットリアルモードオペレーティングシステムまたはブートローダー、または32ビットブートローダー 16ビットリアルモードコード 32ビット 16ビット 16ビットまたは32ビット

も参照してください

参考文献

  1. ^ 「DITTO」BSD一般コマンドマニュアルアップル2008年12月19日。2012年6月2日のオリジナルからアーカイブ2013年8月3日取得指定されたアーキテクチャへのシンユニバーサルバイナリ[...]は、「i386」、「x86_64」などとして指定する必要があります。
  2. ^ 「追加の事前定義されたマクロ」software.intel.comインテル2021年2月15日にオリジナルからアーカイブされました2020年11月25日取得
  3. ^ ケンプ、スティーブ。「64ビットDebianGNU / Linuxでの32ビットアプリケーションの実行」Debian管理2013年9月16日にオリジナルからアーカイブされました2013年8月31日取得
  4. ^ 「Intel64およびIA-32アーキテクチャソフトウェア開発者マニュアル」インテルコーポレーション2014年9月。p。31. 2012年1月26日のオリジナルからアーカイブ2014年12月19日取得Intel386プロセッサは、IA-32アーキテクチャファミリの最初の32ビットプロセッサでした。オペランドの保持とアドレス指定の両方に使用する32ビットレジスタを導入しました。
  5. ^ Green、Ronald W.(2009年5月5日)。「IA-32、Intel 64、およびIA-64アーキテクチャとはどういう意味ですか?」software.intel.comインテル2014年12月19日にオリジナルからアーカイブされました2014年12月19日取得
  6. ^ 「サポートされているハードウェア」Ubuntuヘルプカノニカル2014年12月19日にオリジナルからアーカイブされました2013年8月31日取得
  7. ^ 「Windows10のシステム要件と仕様| Microsoft」www.microsoft.com2018年5月1日にオリジナルからアーカイブされました2018年8月20日取得
  8. ^ 「x86マシン上のDebianGNU / Linux」2019年4月28日にオリジナルからアーカイブされました2020年8月20日取得