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 の特定の反復は、それぞれ80486、P5、P6 マイクロアーキテクチャによって提供される命令スーパーセットを指して、 i486、i586、i686というラベルが付けられることがあります。これらの更新では、浮動小数点機能やMMX 拡張機能など、基本 IA-32 セットに加えて多数の追加機能が提供されました。
歴史的には、Intel が IA-32 プロセッサの最大の製造元であり、第 2 位のサプライヤーはAMDでした。1990 年代には、VIA、Transmetaなどのチップ製造元も IA-32 互換プロセッサ ( WinChipなど) を製造しました。現代でも、Intel は2019 年までIntel Quark マイクロコントローラプラットフォームで IA-32 プロセッサを製造していましたが、2000 年代以降、製造元の大多数 (Intel を含む) は、x86 の 64 ビット版であるx86-64に基づく CPU の実装にほぼ独占的に移行しました。x86-64 は、仕様上、下位互換性のために IA-32 ISA で動作するレガシー動作モードを提供します。 x86-64が現在普及しているにもかかわらず、今日では、Microsoft Windows(Windows 10まで)[7] 、 Windows Server(Windows Server 2008まで)[8]、Debian Linuxディストリビューション[9]など、多くの最新オペレーティングシステムのIA-32保護モードバージョンがまだ維持されています。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 ビットでした。
動作モード
参照
参考文献
- ^ 「ditto(1) Mac OS X マニュアルページ」。BSD一般コマンドマニュアル。Apple。2008年 12 月 19 日。2012 年 6 月 2 日時点のオリジナルからのアーカイブ。2013年8 月 3 日取得。指定さ
れたアーキテクチャへの Thin Universal バイナリ [...] は、「i386」、「x86_64」などとして指定する必要があります。
- ^ 「追加の定義済みマクロ」。software.intel.com。Intel 。 2021年2月15日時点のオリジナルよりアーカイブ。2020年11月25日閲覧。
- ^ Kemp, Steve. 「64 ビット Debian GNU/Linux で 32 ビット アプリケーションを実行する」。Debian管理。2013年 9 月 16 日時点のオリジナルよりアーカイブ。2013年8 月 31 日閲覧。
- ^ 「Intel 64 および IA-32 アーキテクチャ ソフトウェア開発者マニュアル」。Intel Corporation 2014 年 9 月。p. 31。2012 年 1 月 26 日時点のオリジナルよりアーカイブ。2014年12 月 19 日閲覧。Intel386
プロセッサは、IA-32 アーキテクチャ ファミリの最初の 32 ビット プロセッサでした。このプロセッサでは、オペランドの保持とアドレス指定の両方に使用する 32 ビット レジスタが導入されました。
- ^ Green, Ronald W. (2009 年 5 月 5 日). 「IA-32、Intel 64、IA-64 アーキテクチャとはどういう意味ですか?」. software.intel.com . Intel . 2014 年 12 月 19 日時点のオリジナルよりアーカイブ。2014 年12 月 19 日閲覧。
- ^ 「サポートされているハードウェア」。Ubuntuヘルプ。Canonical。2014年 12 月 19 日時点のオリジナルよりアーカイブ。2013 年8 月 31日閲覧。
- ^ 「Windows 10 システム要件と仕様 | Microsoft」www.microsoft.com。2018年5月1日時点のオリジナルよりアーカイブ。2018年8月20日閲覧。
- ^ Scott M. Fulton, III (2007年5月16日). 「Windows Server 2008 '最後の32ビットオペレーティングシステム'」. BetaNews . 2023年4月1日時点のオリジナルよりアーカイブ。 2023年4月1日閲覧。
- ^ “Debian GNU/Linux on x86 Machines”. 2019年4月28日時点のオリジナルよりアーカイブ。2020年8月20日閲覧。
