IA-32

IA-32 (「 Intel Architecture, 32-bit 」の略称で、一般的にi386 [1] [2]と呼ばれる)[3]は、 x86命令セットアーキテクチャ32ビット版でありIntelによって設計され、1985年に80386マイクロプロセッサに初めて実装されました。IA -32は、32ビットコンピューティングをサポートする最初のx86の形態です。 [4]そのため、「IA-32」という用語は、32ビットコンピューティングをサポートするすべてのx86バージョンを指す換喩として使用されることがあります。 [5] [6]

様々なプログラミング言語命令において、IA-32は依然として「i386」アーキテクチャと呼ばれることがあります。また、IA-32 ISAの特定のイテレーションは、それぞれ80486P5P6マイクロアーキテクチャが提供する命令スーパーセットを指して、 i486i586i686と呼ばれることもあります。これらのアップデートでは、基本IA-32命令セットに加えて、浮動小数点機能MMX拡張など、数多くの追加機能が提供されました

歴史的に、Intel は IA-32 プロセッサの最大の製造業者であり、第 2 位のサプライヤーはAMDでした。1990 年代には、VIATransmetaおよびその他のチップ製造業者も IA-32 互換プロセッサ ( WinChipなど) を製造しました。現代でも、Intel は2019 年までIntel Quark マイクロコントローラプラットフォームで IA-32 プロセッサを製造していましたが、2000 年代以降、製造業者の大多数 (Intel を含む) は、x86 の 64 ビット版であるx86-64に基づく CPU の実装にほぼ完全に移行しました。x86-64 は、仕様上、下位互換性のために IA-32 ISA で動作するレガシー動作モードを提供しています。 x86-64が現在普及しているにもかかわらず、今日では多くの最新オペレーティングシステムのIA-32保護モードバージョンがまだ維持されており、例えばMicrosoft Windows ( Windows 10まで) [7] Windows Server ( Windows Server 2008まで[8]Debian Linuxディストリビューション[9]などです。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倍にすることができます。
追加のセグメントレジスタ
2 つの追加セグメント レジスタ (FS と GS) が提供されます。
より大きな仮想アドレス空間
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(1) Mac OS X マニュアルページ". BSD 一般コマンドマニュアル. Apple . 2008年12月19日. 2012年6月2日時点のオリジナルからのアーカイブ. 2013年8月3日閲覧.指定されたアーキテクチャへの Thin Universal バイナリ [...] は、「i386」、「x86_64」などと指定する必要があります。
  2. ^ 「追加の定義済みマクロ」。software.intel.com 。Intel2021年2月15日時点のオリジナルよりアーカイブ。 2020年11月25日閲覧
  3. ^ Kemp, Steve. 「64ビットDebian GNU/Linuxで32ビットアプリケーションを実行する」Debian管理. 2013年9月16日時点のオリジナルよりアーカイブ。 2013年8月31日閲覧
  4. ^ 「Intel 64 および IA-32 アーキテクチャ ソフトウェア開発者マニュアル」Intel Corporation . 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 . Intel . 2014年12月19日時点のオリジナルよりアーカイブ。 2014年12月19日閲覧
  6. ^ 「サポートされているハードウェア」。Ubuntuヘルプ。Canonical 2014年12月19日時点のオリジナルよりアーカイブ。 2013年8月31日閲覧
  7. ^ “Windows 10 システム要件と仕様 | Microsoft”. www.microsoft.com . 2018年5月1日時点のオリジナルよりアーカイブ2018年8月20日閲覧。
  8. ^ Scott M. Fulton, III (2007年5月16日). 「Windows Server 2008 '最後の32ビットオペレーティングシステム'」. BetaNews . 2023年4月1日時点のオリジナルよりアーカイブ。 2023年4月1日閲覧
  9. ^ “Debian GNU/Linux on x86 Machines”. 2019年4月28日時点のオリジナルよりアーカイブ2020年8月20日閲覧。
「https://en.wikipedia.org/w/index.php?title=IA-32&oldid=1311335375」から取得