Jump to content 日本-日本語
製品  >  HP ProLiant サーバ  >  技術情報  >  White Paper

whitepaper

技術資料

HP ProLiant サーバ

目次

概要 / 本書で使用している略語 / はじめに
  マイクロアーキテクチャの類似性
  マイクロアーキテクチャの相違点
  システムアーキテクチャの相違点
  32ビットパフォーマンスの比較
  まとめ / 付録A / 関連情報 / ご意見をお寄せください

PDFファイル ダウンロード

このホワイトペーパーのPDFファイルをこちらからダウンロードしてご覧下さい。
(PDFファイル、909KB)
コンテンツに進む

業界標準サーバ用のx86プロセッサの特性 - AMD OpteronおよびIntel Xeon
技術概要、第2版


マイクロアーキテクチャの相違点

先ほど説明したとおり、XeonファミリとOpteronプロセッサの基本設計はプログラミングレベルでは類似しており、ソフトウェア/ハードウェア インタフェースでは命令/レジスタ/アドレス指定方式は本質的に同一です。もちろん、それらのプロセッサの実装には、マイクロアーキテクチャの面で多くの相違があります(プロセッサがどのように命令をデコードするか、分岐予測がどのように作業をバッファするか、そのバッファにいくつの分岐予測を保持できるか、など)。ただし、これらのプロセッサが持つ次の2つの主要な相違点を理解することが重要です。
  • パイプラインの全体的な設計と、そのプロセッサ周波数との関係。Xeonファミリプロセッサは、パイプラインの実行効率を犠牲にして周波数を最適化しますが、Opteronプロセッサは、周波数を犠牲にしてパイプライン効率を最適化します。
  • マルチスレッド並行処理の実装。Xeonファミリプロセッサにはハイパースレッディング テクノロジが組み込まれており、これにより、命令レベルの並行処理に加え、異なるスレッドが並行的に動作します。Opteronプロセッサでは命令レベルの並行処理だけが実現されています。
 

パイプラインとクロック周波数

プロセッサのパイプラインは工場の組み立てラインに類似しています。プログラムコードを実行するため(小型装置を構築するため)に、作業は多数の「段階」に分割され、各段階がジョブ全体の小さい部分を構成します。基本的な考え方は、言うまでもなく、作業を多くの段階に分割すれば、プロセッサ(工場の作業員)を常に忙しく働かせられると言うことです。これにより、ある一定の時間にプロセッサがより多くのコードを実行することが可能になります。
パイプラインの段階で発生するアクティビティの量を理解することは重要です。プロセッサは段階の処理を1クロックサイクルの中で完了する必要があります。プロセッサが1つのタスクを複数の小さいタスクに分割することでタスクのサイズを小さくすると、段階は短くなりますが、段の数は多くなります(図3)。このようにすると、各段階をより短い時間で完了できるため、プロセッサがより高いクロック周波数を持つことが可能になります。これはパイプラインで行われる作業量が多くなることを必ずしも意味しているわけではなく、単にクロック周波数を高めることができるという意味です。
 
図3. 各段階の作業量を減少させるとクロック周波数の増大が可能になる
図3. 各段階の作業量を減少させるとクロック周波数の増大が可能になる
 
コンピュータパイプラインの基本的な構造は、プログラムを実行するために繰り返して実行される次の4つのステップから成り立っています。
  1. プログラムカウンタに格納されたアドレスから次の命令をフェッチします。
  2. その命令を命令レジスタに格納してデコードし、命令カウンタのアドレスを増加させます。
  3. その時点で命令レジスタにある命令を実行します。
  4. その命令の結果を実行ユニットから宛先レジスタへライトバックします。
  通常のプロセッサアーキテクチャでは、パイプラインは、基本的なステップを実行する複数のセグメント(マイクロプロセッサの「フロントエンド」、実行エンジン、リタイヤユニット)に分割されます(図4参照)。フロントエンドは命令をフェッチし、より小さい命令(一般に「マイクロ命令」と呼ばれる)にデコードします。デコードされた命令は、3種類の実行ユニット(整数、ロード/格納、浮動小数点)の1つに送られます。最後に、命令がリタイヤされ、結果が宛先レジスタにライトバックされます。
 
図4. 4段構成の基本的なパイプラインスキーマ
図4. 4段構成の基本的なパイプラインスキーマ
  キャッシュミスによるプロセッサ ストール
パイプラインを常にビジーの状態にするには、最初の命令がパイプラインを完全に通過する前に、プロセッサが2番目の命令を実行し始める必要があります。ここで、次のように、3つの数の合計操作を必要とする命令があると考えてください。

X = A + B + C

AとBは既にプロセッサによりそれぞれレジスタに格納されているが、Cはメモリから取得しなければならない場合にはどうなるでしょうか。この場合、「バブル」と呼ばれるパイプライン ストールが起きます。メモリからCの値を取得してくるまで、プロセッサは命令を実行できません。このバブルはパイプラインの全段階にわたって伝わり、バブルのある各段階でアイドル状態を発生させ、そのクロックサイクルの間、実行リソースを無駄にします。

明らかに、パイプラインが長くなるほど、この問題は深刻になります。

分岐予測失敗によるプロセッサ ストール
ある命令が別の命令に依存していることによるプロセッサ ストールもよく発生します。プログラムにIF… THENループのような分岐がある場合、プロセッサには2つの選択肢があります。決め手となる命令が終了するまで、採用するプログラム分岐を決定しない(パイプラインはストールする)か、プログラムが採用する分岐を予測するかです。
プロセッサによるコード分岐予測が誤りだった場合は、パイプラインをフラッシュして、正しい分岐を使用してIF… THEN文からやり直す必要があります。パイプラインが長くなるほど、分岐予測の失敗によるパフォーマンスへの影響も大きくなります。たとえば、パイプラインが長くなれば、予測が外れたときに破棄するべき命令の投機実行も増えます。

Xeonパイプライン
Intelが文書で述べているように、Xeonプロセッサで使われたNetBurstアーキテクチャでは、業界トップクラスのクロックレートを可能とする、深いパイプラインが実現されています。8 つまり、Intelの重要な設計基準はプロセッサのクロックレートの高さでした。Xeonファミリプロセッサの最新バージョンでは31段の整数パイプラインが使用されており、2つの「高速」演算装置(ALU)、1つの「低速」ALU、2つのアドレス生成ユニット(AGU)、および2つの浮動小数点実行ユニットが搭載されています(図5)。Xeonプロセッサでは、長いパイプラインにより、最大約3.8GHzの周波数で動作可能です。 こうした長いパイプラインの欠点を補う方法としてIntelが採用した方法の1つが、実行トレースキャッシュと呼ばれる12KBの命令キャッシュです。 Intelは、この12Kキャッシュのヒット率が従来の8〜16KBの命令キャッシュに近いと報告しています。9 このキャッシュは命令をトランスレートし、デコードして、トレース(ミニプログラムのようなもの)に入れます。 L1キャッシュがヒットすると、そのトレースを実行します。そのトレースの命令をトランスレートおよびデコードする必要はないため、メインのパイプラインがしなければならない作業の量をその分減少させることができます。 さらに、実行トレースキャッシュにはそれ自身の分岐予測アルゴリズムがあり、トランスレートされたマイクロ命令を投機的な順序で格納することができます。
 
図5. Xeonプロセッサのマイクロアーキテクチャの構造
図5. Xeonプロセッサのマイクロアーキテクチャの構造
 
出典: 90 ナノ・メートル・テクノロジによるインテル® Pentium® 4 プロセッサのマイクロアーキテクチャ このリンクをクリックすると、HP社外へリンクします。 10
『Intel Technology Journal』Volume 8、Issue 1、2004年2月
 
Opteronパイプライン
Xeonファミリプロセッサと違い、Opteronプロセッサは高いクロックスピードを犠牲にし、高効率のパイプラインに最適化されてきました。AMDによれば11、パイプラインのフロントエンド命令フェッチとデコードロジックは、デコードされた多数のマイクロ命令を一括して、それらを並行で実行するように最適化されています。Opteronプロセッサは12段の整数パイプラインを持っています。これはXeonプロセッサのパイプラインよりはるかに短いものです。 パイプラインが短くなるほど周波数を低くする必要があります。 本書の作成時点では、Opteronプロセッサはシングルコア バージョンで最大2.8GHzの周波数で動作します。ただし、パイプラインが短いため、分岐予測の失敗やキャッシュミスによる遅延のリスクは低減されます。また、パイプラインが短ければ、それほど大規模な分岐予想アルゴリズムやターゲットバッファも必要ありません。
処理の並行性を高めるため、Opteronプロセッサはまた、Xeonプロセッサより多数の実行ユニットとデコードユニットを持っています。Opteronプロセッサには3つのALU、3つのAGU、および3つの浮動小数点実行ユニットがあります(図6)。OpteronプロセッサにはXeonプロセッサより多くの実行ユニットがありますが、その最大有効スループットはXeonと同じで、1サイクルあたり整数演算3個です。
 
図6. AMD Opteronのアーキテクチャブロック ダイアグラム
図6. AMD Opteronのアーキテクチャブロック ダイアグラム
 
出典: AMDホワイトペーパー「AMD Eighth-generation Processor Architecture このリンクをクリックすると、HP社外へリンクします。 」2001年10月16日
 
パイプラインと周波数の比較
高周波数でパイプラインの長いXeonプロセッサに比べ、Alpha EV68、HP-PA RISC、Itaniumといった、ハイパフォーマンスを狙って設計されたいくつかのプロセッサは、パイプラインを短くし、相対的に低い周波数で動作するように設計される傾向があります。たとえばAlpha EV68/21264プロセッサは7段のパイプラインを持ち、約1.25GHzで動作します。Itanium 2プロセッサは8段のパイプラインを持ち、約1.6GHzで動作します。 これは、パイプラインが長いXeonプロセッサがパフォーマンスが低いということを必ずしも意味しません。ただ、Xeonプロセッサの場合、長いパイプラインの欠点を補うために、高効率の分岐予測アルゴリズムや、大容量のTLBといったテクノロジが必要になります。また、Xeonプロセッサは、線形計画法を使用するアプリケーションのように、高いクロック速度が特に重要なアプリケーションに適していることを意味しています。
8 『IA-32 インテル® アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル』上巻、基本アーキテクチャの2-7ページ
(ftp://download.intel.co.jp/jp/developer/jpdoc/ia32_arh_dev_man_vol1_online_i.pdf このリンクをクリックすると、HP社外へリンクします。 から入手可)
9 『Intel Technology Journal』 Volume 8、Issue 1 (2004)「90 ナノ・メートル・テクノロジによるインテル® Pentium® 4 プロセッサのマイクロアーキテクチャ」
10 (http://www.intel.com/jp/developer/technology/itj/2004/volume08issue01/art01_microarchitecture/
p01_abstract.htm
 このリンクをクリックすると、HP社外へリンクします。 から入手可)
11 『AMD Eighth-generation Processor Architecture』(www.amd.com/us-en/assets/content_type/
white_papers_and_tech_docs/Hammer_architecture_WP_2.pdf
 このリンクをクリックすると、HP社外へリンクします。 から入手可)

Xeonファミリプロセッサのハイパースレッディング

Intel NetBurstアーキテクチャでは、パイプラインを有効活用する方法の1つとしてハイパースレッディングが採用されています。通常、プロセッサは単一の命令ストリームからの命令を実行します。スレッドや命令ストリームの間でのスイッチが発生すると、コンテクストスイッチのオーバーヘッドがプロセッサにかかります。最近のプロセッサはスーパースカラー(並行実行ユニットとアウトオブオーダー実行を装備)なので、プロセッサは命令を再配列してアウトオブオーダー実行し、一部の命令を並行的に実行します(命令レベルの並行処理)。XeonとOpteronのいずれのプロセッサも、命令レベルの並行処理を使用して、クロックあたり最大3個の命令を実行します。
さらにXeonファミリプロセッサは、ハイパースレッディング テクノロジを使用して2本の別個のスレッドを並行して実行します(マルチスレッド並行処理)。Xeonファミリプロセッサは、命令ポインタ、レジスタアロケーションテーブル、およびその他のアーキテクチャ レジスタといった一部のプロセッサ コンポーネントを複製します。Intelはこれらのコンポーネントを「アーキテクチャ ステート」と呼んでいます。アーキテクチャ ステート(論理プロセッサ)は、2つの論理プロセッサが共有するプロセッサ実行リソースに対して命令をスケジューリングします。片方のスレッドストリームにバブルが検出されると、プロセッサは実行リソースをもう一方のスレッドストリームにシフトします。これによりプロセッサは、別々のスレッドから供給されるマイクロ命令を時間多重化方式で実行して、実行リソースの使用効率を可能な限り高く維持します(図7)。
ハイパースレッディングの利点は、Xeon Netburstマイクロアーキテクチャの深い実行パイプラインと直接関係しています。 パイプライン ストール(バブル)の効果は深い実行パイプラインで増強されるため、Xeonアーキテクチャではハイパースレッディング テクノロジを実装し、実行ユニットをできる限りビジー状態に保つことで、高レベルのマルチスレッディング パフォーマンスを実現しています。 AMD Opteronプロセッサが実装しているようなより短く、より効率的なマイクロアーキテクチャは、ハイパーパイプラインのXeonマイクロアーキテクチャほどハイパースレッディングの利点を活かせませんが、高レベルのマルチスレッドのパフォーマンスを実現するのに、このレベルの複雑さは必要ありません。
 
図7. ハイパースレッディングテクノロジの有無によるシングルコアプロセッサの比較。右側のハイパースレッディングの例では、ライトグレーの部分がスレッド1からの命令、ダークグレーの部分がスレッド2からの命令を表しています。白い四角形はアイドル状態の実行リソースです。
図7. ハイパースレッディングテクノロジの有無によるシングルコアプロセッサの比較。右側のハイパースレッディングの例では、ライトグレーの部分がスレッド1からの命令、ダークグレーの部分がスレッド2からの命令を表しています。白い四角形はアイドル状態の実行リソースです。
  ハイパースレッディングは、マルチスレッドに対応したアプリケーションやオペレーティングシステムのパフォーマンスを向上させます。Intelの報告では最大30%の改善が見られるとのことですが12、アプリケーションによってかなり差があります。 パフォーマンス改善の平均値は、約5〜10パーセントに近く13 、 OSとアプリケーションがマルチスレッドの利点をいかに活かせるかに依存しています。このため、マルチスレッドに対応していないアプリケーションやオペレーティングシステムでは、ハイパースレッディングによる利点はありません。
サーバ市場向けに設計されたデュアルコアのIntelプロセッサには、ハイパースレッディングが含まれることが予想されています。これによって、シングルプロセッサのデュアルコアシステムが、4スレッドを表面的に並列で実行させる可能性があります。 2つの個別の実行コアがあるため、2つの命令スレッドが同時に実行できます。そしてバブルの発生時に、他の2つのスレッドがハイパースレッディングリソースを使用して、アイドル状態の実行リソースにアクセスできます。 先ほども述べましたが、実際のパフォーマンスの向上度は、OSとアプリケーションがいかにマルチスレッドを活用できるかに依存します。
12 出典:『サーバ向けハイパー・スレッディング・テクノロジ』
(http://www.intel.com/jp/business/bss/products/hyperthreading/server/index.htm このリンクをクリックすると、HP社外へリンクします。から入手可)
13 Anandtech Webサイトの報告によると、データベースでのパフォーマンステストでは3〜5%の向上。『AMD Opteron vs. Intel Xeon: Database Performance Shootout』(2004年3月2日) www.anandtech.com/ このリンクをクリックすると、HP社外へリンクします。

前のページへ 次のページへ
PDFファイルをご覧いただくには、Adobe® Reader® が必要です。
アドビシステムズ社のウェブサイト より、ダウンロード(無料)の上ご覧ください。
印刷用画面へ印刷用画面へ
プライバシー ご利用条件・免責事項