IA-32 インテル ®
2.2.1. ストリーミング SIMD 拡張命令 2 (SSE2) テクノロジ
Pentium 4プロセッサにはSSE2が導入され、MMXテクノロジとSSEの機能が強化された。主な機能
強化は、新しいパックド・データ・フォーマットの操作と、整数SIMD演算用の128ビット幅のレジ スタを使用したSIMD計算性能の向上である。パックド倍精度浮動小数点データ型と、いくつかの パックド128ビット整数データ型が導入される。これらの新しいデータ型により、XMMレジスタ内 で、パックド倍精度/単精度浮動小数点計算とパックド整数計算を実行できるようになる。
IA-32アーキテクチャに導入される新しいSIMD命令には、浮動小数点SIMD命令、整数SIMD命令、
SIMD浮動小数点データとSIMD整数データ間の変換命令、およびXMMレジスタとMMXテクノロ ジ・レジスタ間のパックド・データ変換命令がある。新しい浮動小数点SIMD命令により、パックド 倍精度浮動小数点値(XMMレジスタ1つ当たり2つの倍精度値)の計算を実行できるようになる。
SIMD浮動小数点命令の計算と、単精度および倍精度浮動小数点フォーマットは、2進浮動小数点算 術演算に関するIEEE規格754に適合している。新しい整数SIMD命令は、パックド・ダブルワード およびパックド・クワッドワード・データの算術演算と、パックド・バイト、パックド・ワード、
パックド・ダブルワード、パックド・クワッドワード、およびダブル・クワッドワード・データの その他の演算をサポートしており、大きなダイナミック・レンジの柔軟な計算能力を実現する。
前の段落で説明した新しい128ビットSIMD命令以外に、Pentium IIプロセッサおよびPentium IIIプロ セッサ内の64ビットMMXテクノロジ・レジスタだけを操作していた、既存の68個の整数SIMD命 令も128ビットに強化される。これらの64ビット整数SIMD命令は、Pentium 4プロセッサ上の128 ビットXMMレジスタを操作できるように強化される。これらの拡張された整数SIMD命令により、
ソフトウェア開発者は、従来にないパフォーマンス・レベルの浮動小数点および整数アルゴリズム をコーディングできる。また、XMMレジスタとMMXテクノロジ・レジスタのどちらでSIMDコー ドを開発することも可能になり、きわめて柔軟にコーディングを行える。
Pentium 4プロセッサの新機能を利用して、ソフトウェア開発者は、3Dグラフィックス、ビデオ・デ
コーディング/エンコーディング、および音声認識などのマルチメディア・アプリケーションの性能 レベルを飛躍的に向上させることができる。新しいパックド倍精度浮動小数点命令により、科学/工 学アプリケーションや、レイ・トレーシングのような高度な3Dジオメトリ手法など、大きな有効範 囲と精度を必要とするアプリケーションのパフォーマンスが向上する。
SSE2は、処理のスピードアップとキャッシュ利用率の改善のために、アプリケーション・プログラ マがデータのキャッシュ処理を制御するための新しい命令を搭載している。これらの命令を使って、
キャッシュの内容を破壊することなくレジスタとの間でデータをストリーミングしたり、データが 実際に使用される前にそのデータをプリフェッチすることができる。
SSE2で導入されたアーキテクチャ上の新機能は、新しいオペレーティング・システムのサポートを 必要としない。SSE2では、新しいアーキテクチャ・ステートは導入されていない。また、ストリー ミングSSEをサポートするFXSAVE/FXRSTOR命令は、SSE2もサポートしている。これらの命令を 使って、コンテキスト・スイッチ時に、XMMレジスタ、MMXテクノロジ・レジスタ、およびx87 FPUレジスタの状態のセーブとリストアを実行できる。CPUID命令も拡張され、オペレーティング・
システムまたはアプリケーションは、CPUがSSEとSSE2の機能に対応しているかどうかを確認でき る。
SSE2の各命令には、Pentium 4プロセッサ上のすべてのIA-32アーキテクチャ動作モードからアクセ ス可能である。Pentium 4プロセッサは、既存のIA-32ソフトウェアとの互換性を維持している。す べての既存のソフトウェアは、Pentium 4プロセッサ上と、SSE2を組み込んだ将来のIA-32プロセッ サ上で、修正なしに正常に動作する。また、既存のソフトウェアは、SSE2を使用するアプリケー ションと共存して正常に動作する。
2 .3 . M o o re の法則と IA -3 2 プロセッサの各世代
1960年代半ばに、Gordon Moore(インテルの取締役会長)は、「今後数年間にわたって、CPUチップ 1個当たりのトランジスタ数は18か月ごとに2倍に増えるだろう」と予想した。この予測は、その後 35年間にわたって有効であったため、しばしば「Mooreの法則」と呼ばれる。
インテル®アーキテクチャ・プロセッサの処理能力と複雑さ(プロセッサ1個当たりのトランジスタ 数にほぼ該当する)は、長年にわたって、ほぼMooreの法則に従って成長してきた。各世代のIA-32 プロセッサは、新しいプロセス技術と新設計のマイクロアーキテクチャを利用することで、それ以 前の世代のプロセッサより大幅に高い動作周波数とパフォーマンス・レベルを達成してきた。表2-1.
に、高度なトランスファ・キャッシュを備えたPentium 4プロセッサとPentium IIIプロセッサの主な 特徴を示す。表2-2.に、オンダイ2次キャッシュを搭載しない過去の世代のIA-32プロセッサの主な 特徴を示す。
注:
1.レジスタ・サイズと外部データ・バス・サイズの単位はビットである。
2. 1次キャッシュはL1、2次キャッシュはL2で示す。
3.インテルPentium IIIプロセッサおよびPentium III Xeonプロセッサは、1999年10月に発表された。これらの プロセッサは、高度なトランスファ・キャッシュを搭載し、0.18ミクロン・プロセス技術で製造されている。
表2-1. 現在のIA-32プロセッサの主な特徴
インテル・
プロセッサ
導入年 マイクロ アーキテクチャ
導入時の クロック 周波数
ダイ上の トランジ スタ数
レジスタ・
サイズ1
システム・
バスの 帯域幅
最大外部 アドレス 空間
オンダイ・
キャッシュ2
Pentium III
プロセッサ3 1999 P6 700 MHz 28 M GP: 32 FPU: 80 MMX: 64 XMM: 128
最大
1.06GB/秒 64 GB 32KB L1;
256KB L2
Pentium 4
プロセッサ 2000 インテル NetBurst マイクロ アーキテクチャ
1.50 GHz
42 M GP: 32 FPU: 80 MMX: 64 XMM: 128
3.2 GB/秒 64 GB 12Kµop実行 トレース・
キャッシュ、
8KB L1、
256KB L2
注:
1. レジスタ・サイズと外部データ・バス・サイズの単位はビットである。ただし、すべてのプロセッサ上で、各32 ビット汎用(GP)レジスタは、8ビットまたは16ビット・データ・レジスタとしてアドレス指定可能である。
2. 各プロセッサには、外部データ・バスの2〜4倍の幅の内部データ・パスがある。
2 .4 . P 6 ファミリ・マイクロアーキテクチャ
Pentium Proプロセッサでは、P6プロセッサ・マイクロアーキテクチャと呼ばれる、Intel IA-32プロ
セッサ用の新しいマイクロアーキテクチャが導入された。その後、P6プロセッサ・マイクロアーキ テクチャは、アドバンスト・トランスファ・キャッシュと呼ばれるオンダイL2キャッシュによって 拡張された。このマイクロアーキテクチャが、3ウェイ・スーパースカラ方式のパイプライン・アー キテクチャである。「3ウェイ・スーパースカラ」とは、並列処理技法を使用することでプロセッサ が1クロック・サイクルあたり平均して3つの命令をデコード、ディスパッチ、および完了(リタイ ヤ)できるということである。この高レベルの命令スループットを処理するために、P6プロセッサ・
ファミリではデカップリングされた12ステージのスーパーパイプラインを使用しており、これに よって順序によらない (out-of-order) 命令の実行をサポートしている。図2-1.は、アドバンスト・ト ランスファ・キャッシュによって拡張された、P6プロセッサ・マイクロアーキテクチャのパイプラ インの概念図を示している。このマイクロアーキテクチャ・パイプラインは、4つの部分(L1/L2キャッ シュ、フロントエンド、アウト・オブ・オーダー実行コア、およびリタイアメント)に分けられる。
命令とデータは、バス・インターフェイス・ユニットを介してこれらのユニットに供給される。
表2-2. IA-32プロセッサの過去の世代の主な特徴
インテル・
プロセッサ
導入年 導入時の 最大クロック
周波数
ダイ上の トランジスタ数
レジスタ・
サイズ1 外部 データ・
バス・
サイズ2
最大外部 アドレス 空間
キャッシュ
8086 1978 8 MHz 29 K 16 GP 16 1 MB None
Intel 286 1982 12.5 MHz 134 K 16 GP 16 16 MB Note 3
Intel386 DXプロセッ サ
1985 20 MHz 275 K 32 GP 32 4 GB Note 3
Intel486 DXプロセッ サ
1989 25 MHz 1.2 M 32 GP
80 FPU
32 4 GB L1: 8KB
Pentiumプロセッサ 1993 60 MHz 3.1 M 32 GP
80 FPU
64 4 GB L1: 16KB Pentium Proプロ
セッサ
1995 200 MHz 5.5 M 32 GP
80 FPU
64 64 GB L1: 16KB L2: 256KB または512KB Pentium IIプロセッ
サ 1997 266 MHz 7 M 32 GP
80 FPU 64 MMX
64 64 GB L1: 32KB L2: 256KB または512KB Pentium III プロセッ
サ
1999 500 MHz 8.2 M 32 GP
80 FPU 64 MMX 128 XMM
64 64 GB L1: 132KB L2: 512KB
命令とデータを確実に切れ目なく命令実行パイプラインに供給するために、P6プロセッサのマイク ロアーキテクチャには2つのレベルのキャッシュが内蔵されている。第1レベル・キャッシュは、8K バイトの命令キャッシュと8Kバイトのデータ・キャッシュで構成され、ともにパイプラインに密に カップリングされている。第2レベル・キャッシュは256Kバイト、512kバイト、または1Mバイト のスタティックRAMで、フル・クロック・レートで動作する64ビットのキャッシュ・バスを介し てコア・プロセッサにカップリングされている。
P6プロセッサのマイクロアーキテクチャの核となるのが、「動的実行(dynamic execution)」と呼ばれ る革新的でアウト・オブ・オーダー (out-of-order) な実行メカニズムである。この動的実行には、次 の3つのデータ処理概念が取り入れられている。
•
高度な分岐予測•
動的データ・フロー解析•
推論による実行 (speculative execution)分岐予測は、パイプライン型マイクロアーキテクチャのパフォーマンスを向上させるための現代的 な手法である。分岐予測によって、命令パイプラインに切れ目が生じないように、プロセッサが分 岐を超えて命令をデコードすることができる。P6プロセッサ・ファミリでは、高度に最適化された 分岐予測アルゴリズムを使用して、分岐、プロシージャ・コール、およびリターンの複数レベルに わたって命令ストリームの方向を予測することができる。
図2-1. アドバンスト・トランスファ・キャッシュによって拡張された
P6プロセッサ・マイクロアーキテクチャ Bus Unit
System Bus
Frequently used paths Less frequently used paths
1st Level Instruction
C a c h e
Fetch/Decode Execution
O u t - O f - O r d e r C o r e Retirement 1st Level Data
C a c h e 2nd Level Cache
BTBs/Branch Prediction Front End
Branch History Update 使用頻度の高いパス 使用頻度の低いパス システム・バス
バス・ユニット
L2キャッシュ
L1命令 キャッシュ
フェッチ/ デコード
実行 アウト・オブ・
オーダー・コア
リタイアメント L1データ・
キャッシュ
分岐履歴の更新 BTB/分岐予測
フロントエンド