コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
Wikippe
検索
検索
表示
ログイン
個人用ツール
ログイン
IA-32のソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
IA-32
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
要求した操作を行うことは許可されていません。
このページのソースの閲覧やコピーができます。
'''IA-32'''(アイエー32、''Intel Architecture 32'')は[[Intel 80386|80386]]の開発の際に定義された、16ビット[[x86]]を[[32ビット]]に拡張した[[命令セット]][[コンピュータ・アーキテクチャ|アーキテクチャ]]である。 == 呼称 == '''IA-32'''という呼称自体は、インテルが新しい[[64ビット]]アーキテクチャである'''[[IA-64]]'''を発表した際に、それと対比して従来の[[32ビット]]アーキテクチャ(すなわち、386以降その時までの[[x86]])を指すものとして作られた一種の[[レトロニム]]である。 == 概要 == [[インテル]][[Intel 8086|8086]]の[[命令セット]][[コンピュータ・アーキテクチャ|アーキテクチャ]]は拡張を加えつつ後継プロセッサに引き継がれ、([[Intel 80186|80186]])、[[Intel 80286|80286]]、[[Intel 80386|386]]、[[Intel486|486]]に到るまで、その名称からまとめて[[x86]]と呼ばれている。そのx86アーキテクチャの中で、アーキテクチャを[[32ビット]]に拡張した386以降、[[x64]]より前のアーキテクチャを指して([[Intel Pentium (1993年)|Pentium]]や[[Intel Celeron|Celeron]]や[[Intel Core|Core]]や[[Intel Atom|Atom]]などのうちの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と名付けた。{{Main|IA-64#開発方針}}インテルはx86との連続性を断ち切ったIA-64に徐々に重点を移し、ハイエンドでサーバ用[[RISC]]メーカーを追い落とし、ローエンドで自社の過去であるx86と互換CPUを作る互換CPUメーカーを振り切る狙いであった。 インテルの狙いはともあれ、IA-64はIA-32と互換性がない([[IA-64#IA-32サポート]]により一応実行できるが、ろくな性能が出ない)ため、市場では従前のシステムをそのまま生かしたまま拡張できる、IA-32の上位互換の64ビット拡張が望まれていた。{{要出典範囲|date=2013年6月|インテルはIA-64を促進する裏でIA-32の64ビット拡張についても検討していたと思われるが、IA-64の普及を目指していた手前、自社の64ビット拡張を公表せず、}}[[アドバンスト・マイクロ・デバイセズ|AMD]]が先んじてx86の64ビット拡張であるx86-64、後のAMD64([[x64#AMD64]])を発表した。これは、[[16ビット]]の[[Intel 8086|8086]]との互換性を保ったまま[[32ビット]]の[[Intel 80386|386]]に拡張したように、IA-32との互換性を保ったまま64ビットに拡張したものである。 {{要出典範囲|date=2013年6月|これに対しインテルは、なおも独自の64ビット拡張を検討していたが、仮にそれを実装した製品を発表した場合には市場占有率など優位な立場を利用したと見なされ、反トラスト法に抵触する恐れがあることや、}}エンドユーザ向けシステムの[[オペレーティングシステム]]で大きなシェアを占める[[マイクロソフト]]から一本化の圧力をうけて、AMD64と互換を取る方針に転じ、Intel 64([[x64#Intel 64]])を発表するにいたった。インテルは当初Intel 64についてIA-32eなどとも呼んでいた。 AMD64もIntel 64もIA-32の64ビット拡張であり、いろいろ紆余曲折があったが、結局総称としては[[x64]]と呼ばれている。 {{要出典範囲|date=2013年6月|しかしながら、80386の命令互換であればIA-32のカテゴリに入るにもかかわらず、インテル製以外のプロセッサをIA-32と呼ぶことは多くはない。}}IA-32マイクロプロセッサは始祖の[[Intel 80386|386DX]]から現行の[[Intel Atom]]の一部まで数多く存在する(上位互換のx64を含めてIA-32にカウントすることもある)。x64ではなくIA-32を現行で採用する理由としては、性能より省電力の要求が高いモバイル用や、[[仮想化]]で軽い仕事をさせる前提である、といったものがある。 == 性質 == [[Intel 8086|8086]]との互換性を維持したまま拡張を続けてきたため、命令フォーマットに多数のヴァリエーションがある可変長命令セットとなっている。頻繁に使用される命令の多くが1バイトで表現されることから、典型的な[[RISC]]の4バイト固定長命令に比べてコード密度が高い。 1命令で複雑な動作をする命令もあり、例えば、[[インテル]]から提供されるリファレンスマニュアルに記載されている、動作を表現する[[擬似コード]]においてif文が3個も出現する、非常に複雑な命令も存在するほどである。 コード密度が高い事から一度のメモリアクセスで[[Intel 80386|386]]においては最大4命令、[[Intel Pentium (1993年)|Pentium]]においては最大8命令を同時に取り込むことができ、命令読み取りに要するバンド幅を低減させるとともに、演算パイプラインを複数備える[[スーパースカラ]]構造において[[IPC]]の向上に寄与する。また、単一の命令で複数の処理を一括で行うことから、高速に動作する[[マイクロプログラム方式|マイクロコード]]での実行比率を高め、特定の処理を達成するのに要する時間を短縮した。 このような複雑な命令セットや複雑な命令は、[[ワイヤードロジック]]での実行は難しいのではないかと考えられていたが、インテルは[[Intel486|486]]で一部の複雑な命令を除いてワイヤードロジック化した。 [[Intel Pentium (1993年)|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では[[Streaming SIMD Extensions|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への導入計画している。 == メモリ搭載の限界 == <!--論理アドレスとして、32ビットのリニアアドレス空間を利用するため、1プロセスにつき4GBの制限がつく。32ビット版の[[Windows Server 2003|Windows Server 2003 Enterprise Edition]]が最大32GBのメモリをサポートするのは、同一マシン上でたくさんのプロセスが同時実行されていることを前提としているからである。--> ベースアドレスを0に固定し、オフセットのみを用いる'''FLAT MODEL'''が多くのx86向けオペレーティングシステムに採用されている。このメモリモデルの場合、オフセットに使えるアドレス範囲は[[32ビット]]で、全てのセレクタが同一の仮想アドレス空間を参照していた場合1プロセスに与えられるメモリ空間は4[[ギビバイト|GiB]]となる。 <!--セレクタとGDT-LDTヒエラキを調整する事により、論理アドレス空間は64GBまで拡大できる。しかし、そのようなメモリアクセス手段をユーザープロセスに提供しているOSは現時点では存在せず(4GB未満の論理アドレス空間上に、任意の物理メモリへのウインドウを開く事が出来るOSはある)-->P6以降では[[物理アドレス拡張]]により、最大64GiBまでの物理メモリにページを割り当てることができるが、ユーザプロセスが扱える空間は依然4GiBのまま変わらず、[[インメモリデータベース]]のような広大でリニアなメモリ空間が必要なソフトウェアにとっては64ビット化が望まれた。 [[x64]]により仮想アドレス空間は設計上では256TBまでリニアにアクセスする事ができるようになり、[[Microsoft Windows|Windows]]、[[NetBSD]]、[[FreeBSD]]、[[OpenBSD]]、[[Linux]]、[[Solaris]]はこれに対応した。同時に32ビットアーキテクチャで懸念事項であったカーネル空間の置き場所という問題も解決した。この問題は深刻であり、オペレーティングシステムのスケーラビリティを著しく制限していたが、それがx64では解決された。 IA-32プロセッサの物理仕様上は40ビットアドレスをサポートしており、4-Way以上をサポートするXeon MPにおいては、MCHなどのチップセットによる制約はあるものの1TBの物理メモリをサポート可能である。但し、Xeon DP(2-Wayまで)やPC用の廉価CPUの領域においては、物理アドレスバスは36ビットであるため、物理アドレス空間は64GBまでとなっている。このアドレス空間の制限は、その世代において現実的に搭載可能な物理メモリの量を基準に決定されている。 近年の高速[[DDR SDRAM]]においては、1チャネルに実装可能な[[DIMM]]は電気的制限から4枚程度が限界とされている。さらに、将来のDDR SDRAM(後のDDR3 SDRAM)では当初、これを1チャネルあたり1枚まで減少することが検討されていた。この場合、メモリ搭載量を増やすためには必然的に多チャンネルをサポートする必要がある。しかし従来のDIMMは1チャネルあたり信号/[[GND]]を合わせると150ピン前後を必要とするため、MCHなどのチップセット側の負担が大きく、多ピン化は即座にコストアップに跳ね返る。この問題を解決するためインテル主導でFBDIMM (Fully Buffered DIMM) と呼ばれる、シリアル転送に似た少ピンの高速インタフェースを有するDIMMを規格化した。2006年の時点で、DRAM各社はFBDIMMの生産を開始し、FBDIMMサポートのサーバも出荷された。FBDIMMではチップセット側で従来の半分以下のピン数しか必要としないため、少ピン数で多チャンネル化が可能である。またデイジーチェーンのようなトポロジを採用したため、1チャネルあたり8枚のDIMMをサポートすることが可能であり、今後サーバにおける搭載可能物理メモリ量も飛躍的に増大していくとされた。 しかし、このFBDIMMにはDIMM基板上のDRAMチップと接続される高速インターフェイス用コントローラチップ (AMB) の発熱や消費電力が過大となり、また1チャネルあたりの接続メモリモジュール数(=デイジーチェイン接続されるAMBチップ数)の増大に従ってメモリアクセス時のレイテンシが大きくなる(メモリ性能が低下する)という問題があった。レイテンシの増大は一般にCPUの内蔵キャッシュメモリの増量や命令処理の多段パイプライン化によって隠蔽が図られるが、これらの対策は、条件分岐予測が難しくまた局所性の低い巨大データを取り扱う、データベースなどの大規模アプリケーションソフトを実行する際には、有効に機能しない局面が多々存在する。さらに、DDR3メモリの規格化がなされた段階で1チャネルに実装可能なDIMM数は最大2枚となり、しかもFBDIMMはその規格立ち上げの段階でラムバスとの特許問題が発生し、ライセンス料支払いの必要が生じたことから、各社がこれを積極的に採用すべき、あるいは製品化すべき理由はなくなっていた。 そのためインテルは2006年以降方針を転換、Nehalemマイクロアーキテクチャを採用する各CPUにおいて、従来はMCHなどのチップセットに内蔵していたメモリコントローラをAMDの[[Opteron]]などと同様にCPUに内蔵して通常のDIMMを利用可能とし、大規模サーバなどでは搭載CPUソケット数の増大に従って実装可能なDIMMソケット数も増えるという、スケーラブルなアーキテクチャへの転換を前倒し実施した<ref>ただし、それでもメモリ搭載量が不足する大規模サーバ用のXeon 7500シリーズではSMIと呼ばれるAMB相当のチップをマザーボードに搭載、これをCPUのメモリチャネルに接続し、このチップを介して各チャネルあたり2チャネルずつのRegistered DDR3 DIMMを接続する構成を採用している。</ref>。この方式はCPU自体にメモリコントローラを内蔵するためMCHとCPU間の通信で発生するレイテンシも削減できる<ref>他のCPUに接続されているメモリにアクセスする際には一定のレイテンシが上乗せされるが、それとてFBDIMMへアクセスするよりは低い値となる。</ref>というメリットがあり、この方式を採用したNehalemマイクロアーキテクチャ世代のXeonでは、FBDIMMに対応する前世代のCoreマイクロアーキテクチャ世代のXeonよりも低レイテンシでのメモリアクセスを実現している。 == マイクロアーキテクチャ一覧 == * 80386 [[Intel 80386|80386]] * 486 [[Intel486|486]] * P5 [[Intel Pentium (1993年)|Pentium]] 他 * P6 [[P6マイクロアーキテクチャ]]。[[Pentium Pro]]、[[Pentium II]]、[[Pentium III]]とそれから派生したCeleronおよびXeonなどがある。 * P7 P7は[[Itanium]]の開発コードネームとされる。 * NetBurst [[NetBurstマイクロアーキテクチャ]]。Pentium4やPentiumDやなどがある。 NetBurstの途中でIntel 64が拡張された。 === Atom系 === {{see|Intel Atom#マイクロアーキテクチャ}} === Intel 64 === * Core [[Coreマイクロアーキテクチャ]] * Nehalem [[Nehalemマイクロアーキテクチャ]] 2008年11月に最初の製品が[[Intel Core i7|Core i7]]として発売された。45nmプロセス。 * Sandy Bridge {{main|Sandy Bridgeマイクロアーキテクチャ}} イスラエル・ハイファの開発チームの手による製品。2011年前半に発売された。Westmereと同じく32nmプロセス・ルールで製造される。以前はGesher(ゲッシャ)と呼ばれていた。Gesherは橋を意味する[[ヘブライ語]]だが、[[イスラム]]圏への配慮からヘブライ語の名称は用いないこととなった。さらに以前ではGilo(ギロ)と呼ばれていた。<br /> 前時代では有効だった[[x86]]命令セットの継承が現在では逆に効率を大幅に落とす原因となっていることから、AVXと呼ばれる新しい命令セットが追加されている。また、プロセスルールを22nmにシュリンクした[[Ivy Bridge]]も存在する。 ソケットLGA 1155(Socket H2)とソケットLGA2011(Socket R)の二種類が採用される。<br /> プロダクトネーム=Core i7/i5/i3 2xxx (ソケットLGA 1155)<br /> プロダクトネーム=Core i7 3xxx (ソケットLGA2011)<br /> * Haswell {{main|Haswellマイクロアーキテクチャ}} 2013年に発売を予定している22nmプロセスルールで製造される製品。Sandy Bridge、Ivy Bridgeのマイクロアーキテクチャを大きく刷新したものだとされている。<br /> プロダクトネーム=Core i7/i5/i3 4xxx (LGA1150) * Broadwell 2014年に発売を予定しているHaswellを14nmプロセスルールに縮小したものによる製品。<br /> プロダクトネーム=Core i7/i5/i3 5xxx * Skylake 2015年に発売を予定している14nmプロセスルールで製造される製品。Haswellのマイクロアーキテクチャを大きく刷新したものだとされている。 ここからLarrabeeが組み込まれる。<br /> プロダクトネーム=Core i7/i5/i3 6xxx (LGA1151) * Cannonlake 2016年に発売を予定しているSkylakeを10nmプロセスルールに縮小したものによる製品。 === Larrabee === {{main|Larrabee}} x86から派生した命令セットをシェーダーコアに採用したGPU、インオーダー実行。<!--<ref>{{Cite web |title=Intel Corporation's Multicore Architecture Briefing--> == 脚注 == <div class="references-small"><references /></div> {{Computer-stub}} {{Processor architectures}} [[Category:X86アーキテクチャ|*]] [[Category:コンピュータアーキテクチャ]] [[Category:インテルのマイクロプロセッサ]] [[Category:レトロニム]]
このページで使用されているテンプレート:
テンプレート:Computer-stub
(
ソースを閲覧
)
テンプレート:Main
(
ソースを閲覧
)
テンプレート:Processor architectures
(
ソースを閲覧
)
テンプレート:See
(
ソースを閲覧
)
テンプレート:要出典範囲
(
ソースを閲覧
)
IA-32
に戻る。
検索
検索
IA-32のソースを表示
話題を追加