IA-32
[Wikipedia|▼Menu]
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}

この記事は検証可能参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方
出典検索?: "IA-32" ? ニュース ・ 書籍 ・ スカラー ・ CiNii ・ J-STAGE ・ NDL ・ dlib.jp ・ ジャパンサーチ ・ TWL(2023年12月)

IA-32(アイエー32、Intel Architecture 32)は80386の開発の際に定義された、16ビットx8632ビットに拡張した命令セットアーキテクチャである。
呼称

IA-32という呼称自体は、インテルが新しい64ビットアーキテクチャであるIA-64を発表した際に、それと対比して従来の32ビットアーキテクチャ(すなわち、386以降その時までのx86)を指すものとして作られた一種のレトロニムである。
概要

インテル8086命令セットアーキテクチャは拡張を加えつつ後継プロセッサに引き継がれ、(80186)、80286386486に到るまで、その名称からまとめてx86と呼ばれている。そのx86アーキテクチャの中で、アーキテクチャを32ビットに拡張した386以降、x64より前のアーキテクチャを指して(PentiumCeleronCoreAtomなどのうちの32ビットのものも含む)、現在はIA-32という。

80386と同時にIA-32の名が生まれたわけではない。もっと後の、32ビットプロセッサが十分一般的になり将来の64ビット化が見えてきた1990年代後半、インテルは旧来からの互換性を重視するあまりに冗長になってきたx86の置き換えを図り、HPと共同で全く新たな64ビットアーキテクチャのIA-64を定義し、それを実装したプロセッサItaniumの開発に踏み切った。IA-64・Itaniumには従来製品と互換性はなく、しかし普及への弾みを期待して市場の事実上の標準のインテルが開発している64ビットアーキテクチャであることを印象付ける目的があったと考えられる。IA-64に対し、従来の32ビットx86のアーキテクチャをIA-32と名付けた。詳細は「IA-64#開発方針」を参照

インテルはx86との連続性を断ち切ったIA-64に徐々に重点を移し、ハイエンドでサーバ用RISCメーカーを追い落とし、ローエンドで自社の過去であるx86と互換CPUを作る互換CPUメーカーを振り切る狙いであった。

インテルの狙いはともあれ、IA-64はIA-32と互換性がない(IA-64#IA-32サポートにより一応実行できるが、ろくな性能が出ない)ため、市場では従前のシステムをそのまま生かしたまま拡張できる、IA-32の上位互換の64ビット拡張が望まれていた。インテルはIA-64の普及を目指していたため自社の64ビット拡張を公表せず、AMDが先んじてx86の64ビット拡張であるx86-64、後のAMD64(x64#AMD64)を発表した。これは、16ビット8086との互換性を保ったまま32ビット386に拡張したように、IA-32との互換性を保ったまま64ビットに拡張したものである。

その後インテルはエンドユーザ向けシステムのオペレーティングシステムで大きなシェアを占めるマイクロソフトから一本化の圧力をうけて、AMD64と互換を取る方針に転じ、Intel 64(x64#Intel 64)を発表するにいたった。インテルは当初Intel 64についてIA-32eなどとも呼んでいた。

AMD64もIntel 64もIA-32の64ビット拡張であり、いろいろ紆余曲折があったが、結局総称としてはx64と呼ばれている。

IA-32マイクロプロセッサは始祖の386DXから現行のIntel Atomの一部まで数多く存在する(上位互換のx64を含めてIA-32にカウントすることもある)。x64ではなくIA-32を現行で採用する理由としては、性能より省電力の要求が高いモバイル用や、仮想化で軽い仕事をさせる前提である、といったものがある。
性質

8086との互換性を維持したまま拡張を続けてきたため、命令フォーマットに多数のバリエーションがある可変長命令セットとなっている。頻繁に使用される命令の多くが1バイトで表現されることから、典型的なRISCの4バイト固定長命令に比べてコード密度が高い。

1命令で複雑な動作をする命令もあり、例えば、インテルから提供されるリファレンスマニュアルに記載されている、動作を表現する擬似コードにおいてif文が3個も出現する、非常に複雑な命令も存在するほどである。

コード密度が高い事から一度のメモリアクセスで386においては最大4命令、Pentiumにおいては最大8命令を同時に取り込むことができ、命令読み取りに要するバンド幅を低減させるとともに、演算パイプラインを複数備えるスーパースカラー構造においてIPCの向上に寄与する。また、単一の命令で複数の処理を一括で行うことから、高速に動作するマイクロコードでの実行比率を高め、特定の処理を達成するのに要する時間を短縮した。

このような複雑な命令セットや複雑な命令は、ワイヤードロジックでの実行は難しいのではないかと考えられていたが、インテルは486で一部の複雑な命令を除いてワイヤードロジック化した。

PentiumのP5マイクロアーキテクチャでスーパースカラを採用するにあたり、前後の命令の依存関係をチェックする要求が加わると、なおのことデコーダの複雑性が増すこととなり、完全にマイクロコードを排除することは困難であった。

P6マイクロアーキテクチャでは、この問題を、複雑な命令を複数の単純な命令に変換し、内部のRISCプロセッサで実行するようにして解決した。これによりRISCの、命令コード密度が低い、複雑な命令が実行できないという欠点を克服しながらも、さらに従来のIA-32ソフトウエア資源を継承しつつ、新しい世代のプロセッサを開発する道筋を切り開いた。なおこのアイディアはインテルが最初に考案したものではない。古くはR800がそのようなデザインであったし、マイクロプログラム方式のアイディアをワイヤードロジックで実装したものとも言える。x86互換プロセッサでは、AMDに吸収されたNexGenのNx586が最初である(吸収された後AMD K6の基となった)。インテルはこのアイディアを貪欲に吸収し、P6マイクロアーキテクチャの開発に役立てたと言われる。

その後、P6の考えをさらに推し進め命令発行部と命令実行部を分離したNetBurstマイクロアーキテクチャへと発展した。しかし、パイプラインを細分化して動作周波数を高める事でパフォーマンスを向上させる事を前提としたアーキテクチャであり、パフォーマンスと引き換えに消費電力が増大して冷却が困難になるというデメリットを抱えた。消費電力が100W前後に達し、もはや通常のパソコンへの搭載が不可能な域に達すると、以後は、消費電力を増やさずにパフォーマンスを高める必要性が出てきた。その解決策としてP6とNetBurstを大きく見直し、動作周波数を向上させるのではなく、1クロック中により多くの処理を行う方向へ転換し、消費電力を抑えたCoreマイクロアーキテクチャへと移行した。Coreでは、「Coreマイクロアーキテクチャはもはや内部RISCプロセッサのアーキテクチャではない」と言われた。P5ではMMX、P6ではSSE (SSE1) が導入されたSIMD拡張だが、NetBurstではSSE2が導入され動画ストリームの処理が強化された。

IA-32プロセッサのFSBはPentium Pro時に大きな発展を遂げ、以降のプロセッサのFSBも基本的にPentium Pro時のプロトコルを継承している。但し世代ごとに若干の修正が加えられており、例えばPentium 4世代においては、アドレス系バスが基本バスクロックの2倍、データ系バスが4倍の速度で転送が行われるようになった。同時に、キャッシュラインサイズが32Byteから64Byteに引き上げられた。またエラープロトコルにも若干の修正が加えられ、バスの使用効率が高まるよう変更された。さらにハイエンドプロセッサのXeon MP(4-Way以上をサポート)においては、IA-64のFSBプロトコルに似せて大きな拡張がなされており、複数のFSBを有する大規模なサーバ向けチップセットで、効率的にデータ転送が行えるようになっている。このように、IA-32プロセッサのハードウェア観点では、PC/ワークステーションなどの1-Way向け、ローエンドからミッドレンジ領域の2-Way向け、ハイエンドサーバ領域の4-Way以上向けの3種類が併存し、相互に互換性が無くなってきている。将来的にはシリアル通信を基本としたQuick Path Interconnectと呼ばれる新たなプロセッサ間接続をCPUへの導入計画している。
メモリ搭載の限界

ベースアドレスを0に固定し、オフセットのみを用いるFLAT MODELが多くのx86向けオペレーティングシステムに採用されている。このメモリモデルの場合、オフセットに使えるアドレス範囲は32ビットで、全てのセレクタが同一の仮想アドレス空間を参照していた場合1プロセスに与えられるメモリ空間は4GiBとなる。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:29 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef