IA-32

IA-32 (Intel Architecture 32)とは



IA-32は、インテルが開発した32ビットの命令セットアーキテクチャであり、x86アーキテクチャを拡張したものです。このアーキテクチャは、80386プロセッサの開発時に定義され、それまでの16ビットアーキテクチャを32ビットに拡張しました。IA-32という名称は、インテルが後に64ビットアーキテクチャであるIA-64を発表した際に、従来の32ビットアーキテクチャを区別するために用いられたレトロニムです。

IA-32の歴史



インテル8086から続く命令セットアーキテクチャは、拡張を重ねながら後継プロセッサへと引き継がれてきました。80186、80286、そして386、486と進化を遂げ、これらはまとめてx86と呼ばれています。このx86アーキテクチャの中で、32ビットに拡張された386以降のアーキテクチャを指して、IA-32と呼ぶようになりました。これには、Pentium、Celeron、Core、Atomなどの32ビット版も含まれます。

IA-32という名称が生まれたのは、386の登場時ではなく、1990年代後半、64ビット化が見えてきた頃です。インテルは、従来のx86の冗長性を解消するために、HPと共同で全く新しい64ビットアーキテクチャであるIA-64を開発し、Itaniumプロセッサとして実装しました。IA-64は従来のx86アーキテクチャとの互換性がなく、市場に受け入れられませんでした。そこで、従来の32ビットx86アーキテクチャをIA-32と名付け、IA-64と対比させました。

インテルは、IA-64に重点を移し、ハイエンド市場でサーバ用RISCメーカーを追い落とし、ローエンド市場で互換CPUメーカーを振り切る戦略を描いていました。しかし、IA-64はIA-32との互換性が低く、市場ではIA-32との上位互換性を持つ64ビット拡張が求められました。そのため、AMDが先にx86の64ビット拡張であるx86-64(後のAMD64)を発表しました。これは、16ビットの8086から32ビットの386への拡張と同様に、IA-32との互換性を保ちながら64ビットに拡張するものでした。

その後、マイクロソフトからの圧力もあり、インテルはAMD64と互換性を持つIntel 64を発表しました。当初、Intel 64はIA-32eなどとも呼ばれていましたが、最終的にはx64という総称で呼ばれるようになりました。IA-32マイクロプロセッサは、386DXから現在のAtomの一部まで数多く存在します。

IA-32の特性



命令セット



IA-32は、8086との互換性を維持しながら拡張を続けてきたため、命令フォーマットに多くのバリエーションを持つ可変長命令セットとなっています。頻繁に使用される命令は1バイトで表現されることが多く、RISCの固定長命令に比べてコード密度が高いです。また、1つの命令で複雑な動作をするものもあり、中には擬似コードでif文が3つも出現するような複雑な命令も存在します。

性能



コード密度が高いため、1度のメモリアクセスで複数の命令を同時に取り込むことができ、命令読み取りに必要なバンド幅を削減できます。また、演算パイプラインを複数備えるスーパースカラー構造において、IPC(Instructions Per Cycle)の向上に貢献します。単一の命令で複数の処理をまとめて行うことで、マイクロコードの実行比率を高め、処理時間を短縮しています。

複雑な命令セットのため、ワイヤードロジックでの実行は難しいと考えられていましたが、インテルは486で一部の複雑な命令を除いてワイヤードロジック化しました。Pentiumでは、スーパースカラーを採用したことでデコーダの複雑性が増し、完全にマイクロコードを排除することは困難でした。

P6マイクロアーキテクチャでは、複雑な命令を複数の単純な命令に変換し、内部のRISCプロセッサで実行することでこの問題を解決しました。この技術は、R800やNexGenのNx586で先例があり、インテルP6マイクロアーキテクチャの開発に役立てたとされています。その後、P6の考えを発展させ、命令発行部と命令実行部を分離したNetBurstマイクロアーキテクチャへと発展しました。しかし、NetBurstは消費電力が増大するというデメリットがあり、消費電力を抑えつつパフォーマンスを向上させる必要が生じました。そこで、動作周波数を向上させるのではなく、1クロック中により多くの処理を行うCoreマイクロアーキテクチャへと移行しました。

FSB (Front Side Bus)



IA-32プロセッサのFSBは、Pentium Proで大きな発展を遂げました。以降のプロセッサのFSBも基本的にPentium Pro時のプロトコルを継承していますが、世代ごとに修正が加えられています。例えば、Pentium 4世代では、アドレス系バスが基本バスクロックの2倍、データ系バスが4倍の速度で転送されるようになりました。また、キャッシュラインサイズが32Byteから64Byteに引き上げられ、バスの使用効率が高められています。ハイエンドプロセッサのXeon MPでは、IA-64のFSBプロトコルに似せた拡張がなされ、大規模なサーバ向けチップセットで効率的なデータ転送が可能になっています。IA-32プロセッサのハードウェア構成は、PC/ワークステーション向け、ローエンドからミッドレンジ向けの2-Way、ハイエンドサーバ向けの4-Way以上の3種類があり、相互に互換性がなくなってきています。将来的には、シリアル通信を基本としたQuick Path Interconnectと呼ばれるプロセッサ間接続が導入される予定です。

メモリ搭載の限界



仮想アドレス空間



多くのx86向けオペレーティングシステムで採用されているフラットメモリモデルでは、すべてのセグメントセレクタが同じリニアアドレス空間を参照します。この場合、プロセスごとに32ビットの仮想アドレス空間が利用でき、1プロセスに与えられるメモリ空間は4GiBとなります。P6以降のプロセッサでは、物理アドレス拡張(PAE)により最大64GiBの物理メモリにページを割り当てることが可能になりましたが、ユーザープロセスが扱える仮想メモリ空間は依然として4GiBに制限されていました。そのため、大規模なメモリ空間を必要とするソフトウェアでは64ビット化が強く求められるようになりました。

x64では、仮想アドレス空間は設計上256TBまでリニアにアクセスできるようになり、オペレーティングシステムもこれに対応しました。また、32ビットアーキテクチャで課題だったカーネル空間の配置問題も解消されました。

物理アドレス空間



IA-32プロセッサは物理的には40ビットのアドレスをサポートしており、4-Way以上のXeon MPでは、チップセットの制約があるものの最大1TBの物理メモリをサポート可能です。ただし、Xeon DPやPC用の廉価版CPUでは、物理アドレスバスが36ビットのため、物理アドレス空間は64GBに制限されます。

メモリ技術の進化



近年の高速DDR SDRAMでは、1チャネルあたりに実装可能なDIMMは電気的制約から4枚程度が限界とされています。そのため、多チャンネル対応が必須となります。従来のDIMMは1チャネルあたり約150ピンを必要とするため、チップセットの負担が大きくなります。この問題を解決するため、インテルは少ピン高速インターフェースを持つFBDIMMを規格化しましたが、FBDIMMには発熱やレイテンシの問題がありました。そのため、インテルはメモリコントローラをCPUに内蔵し、通常のDIMMを利用可能にする方向に転換しました。

Nehalem以降、メモリ技術は大きく進化しており、DDR4やDDR5が登場し、データ転送速度や消費電力効率が向上しています。また、NUMAなどの技術により、マルチソケット環境でのメモリアクセスの効率化が進んでいます。さらに、不揮発性メモリ技術も登場し、メモリとストレージの境界が曖昧になってきています。

IA-32のマイクロアーキテクチャ一覧



IA-32のマイクロアーキテクチャには、以下のようなものがあります。

  • - 80386
  • - 486
  • - P5 (Pentium 他)
  • - P6 (Pentium Pro, Pentium II, Pentium III, Celeron, Xeonなど)
  • - P7 (Itaniumの開発コードネーム)
  • - NetBurst (Pentium 4, Pentium Dなど。途中でIntel 64が拡張)
  • - Atom系
  • - Core (Coreマイクロアーキテクチャ)
  • - Nehalem (Core i7として発売)
  • - Sandy Bridge (AVX命令セットが追加。ソケットLGA 1155とLGA2011)
  • - Haswell (ソケットLGA1150とLGA2011-v3)
  • - Broadwell
  • - Skylake (Larrabeeが組み込まれる。ソケットLGA1151)
  • - Cannonlake
  • - Larrabee (x86から派生した命令セットをシェーダーコアに採用したGPU)

結論



IA-32は、x86アーキテクチャの進化の中で重要な役割を果たしました。32ビットへの拡張から始まり、様々な技術革新を経て、今日のコンピューティング環境の基盤を築いています。その歴史と技術的特徴を理解することは、現代のコンピュータアーキテクチャを理解する上で不可欠です。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。