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

whitepaper

技術資料

HP ProLiant サーバ

目次

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

PDFファイル ダウンロード

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

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


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

 

先ほど説明したとおり、Xeon ファミリとOpteronプロセッサの基本設計はプログラミングレベルでは類似しています。言い替えれば、ソフトウェア/ハードウェア インタフェースでは、命令/レジスタ/アドレッシング方式は本質的に同一です。もちろん、それらのプロセッサの実装には、マイクロアーキテクチャの面で多くの相違があります(プロセッサがどのように命令をデコードするか、分岐予測がどのように作業をバッファするか、そのバッファにいくつの分岐予測を保持できるか、など)。ただし、これらのプロセッサが持つ2つの主要な相違点を理解することが重要です。

  • パイプラインの全体的な設計と、そのプロセッサ周波数との関係。Xeonファミリプロセッサは、パイプラインの実行効率を犠牲にして周波数を最適化しますが、Opteronプロセッサは、周波数を犠牲にしてパイプライン効率を最適化します。
  • マルチスレッド並行処理の実装。Xeonファミリプロセッサにはハイパースレッディングテクノロジが組み込まれており、これにより、命令レベルの並行処理に加え、異なるスレッドが並行的に動作します。Opteronでは命令レベルの並行処理だけが実現されています。
 

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


プロセッサのパイプラインは工場の組み立てラインに類似しています。プログラムコードを実行するため(あるいはウィジェットを構築するため)に、作業は多数の「ステージ」に分割され、それぞれのステージがジョブ全体の小さい部分を構成します。基本的な考え方は、言うまでもなく、作業を多くの段階に分割すれば、プロセッサ(あるいは工員)を常に忙しく働かせられると言うことです。これにより、ある一定の時間にプロセッサがより多くのコードを実行することが可能になります。

パイプラインのそれぞれのステージで発生させられるアクティビティの量を理解することは重要です。プロセッサはそれぞれのステージの処理を1クロックサイクルの中で完了する必要があります。1つのタスクを複数の小さいタスクに分けることによってプロセッサがタスクのサイズを小さくすると、それぞれのステージは短くなりますが、ステージの数は多くなります(図2)。このようにすると、各ステージをより短い時間で完了できるため、プロセッサがより高いクロック周波数を持つことが可能になります。これはパイプラインで行われる作業量が多いことを必ずしも意味しません。クロック周波数をより高くできることを意味するだけです。

 
図 2. 各段階の作業量を減少させるとクロック周波数の増大が可能になる
各段階の作業量を減少させるとクロック周波数の増大が可能になる
 
コンピュータパイプラインの基本的な構造は、プログラムを実行するために繰り返して実行される次の4つのステップから成り立っています。
  1. プログラムカウンタに格納されたアドレスから次の命令をフェッチします。
  2. その命令を命令レジスタに格納してデコードし、命令カウンタのアドレスを増加させます。
  3. その時点で命令レジスタにある命令を実行します。
  4. その命令の結果を実行ユニットから宛先レジスタへライトバックします。
通常のプロセッサアーキテクチャでは、パイプラインは、基本的なステップを実行する複数のセグメント(マイクロプロセッサの「フロントエンド」、実行エンジン、リタイヤユニット)に分割されます(図3参照)。フロントエンドは命令をフェッチし、より小さい命令(一般に「マイクロ命令」と呼ばれる)にデコードします。デコードされた命令は、3種類の実行ユニット(整数、ロード/格納、浮動小数点)の1つに送られます。最後に、命令がリタイヤされ、結果が宛先レジスタにライトバックされます。
4ステージ構成の基本的なパイプラインスキーマ
図 3. 4ステージ構成の基本的なパイプラインスキーマ
 

キャッシュミスによるプロセッサ ストール

パイプラインを忙しく保つには、最初の命令がパイプラインを完全に通過する前に、プロセッサが2番目の命令を実行し始める必要があります。ここで、次のように、3つの数の合計操作を必要とする命令があると考えてください。

X = A + B + C

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

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

【分岐予測失敗によるプロセッサ ストール 】

ある命令が別の命令に依存していることによるプロセッサ ストールもよく発生します。プログラムにIF... THENループのような分岐がある場合、プロセッサには2つの選択肢があります。決め手となる命令が終了するまで、採用するプログラム分岐を決定しない(パイプラインはストールする)か、プログラムが採用する分岐を予測するかです。

プロセッサによるコード分岐予測が誤りだった場合は、パイプラインをフラッシュして、正しい分岐を使用してIF... THEN文からやり直す必要があります。パイプラインが長くなるほど、分岐予測の失敗によるパフォーマンスへの影響も大きくなります。たとえば、パイプラインが長くなれば、予測が外れたときに破棄するべき命令の実行も増えます。

【Xeon】

Intelが文書で述べているように、Xeonで使われたNetBurstアーキテクチャでは、業界トップのクロックレートを可能にする、深いパイプラインが実現されています 。言い替えれば、Intelは実際のクロック速度を高くできるようにプロセッサを設計していますXeonファミリプロセッサの最新バージョンでは31段の整数パイプラインが使用されており、2つの「高速」演算装置(ALU)、1つの「低速」ALU、2つのアドレス生成ユニット(AGU)、および2つの浮動小数点実行ユニットが搭載されています(図4)。Xeonでは、長いパイプラインにより、最大3.6GHzの周波数で動作可能です。

こうした長いパイプラインの欠点を補う方法としてIntelが採用した方法の1つは、実行トレースキャッシュと呼ばれる12KBの命令キャッシュです。Intelは、この12Kキャッシュのヒット率が従来の8〜16KBの命令キャッシュに近いと報告しています10 。このキャッシュは命令を翻訳、デコードして、トレース(ミニプログラムのようなもの)に入れます。L1キャッシュがヒットするとプロセッサはそのトレースを実行します。その特定のトレースを実行する場合に毎回命令を翻訳、デコードする必要はありません。メインのパイプラインがする作業の量をその分減少させることができます。さらに、実行トレースキャッシュにはそれ自身の分岐予測アルゴリズムがあり、翻訳されたマイクロ命令を投機的な順序で格納することができます。

 
図 4. Xeonプロセッサのマイクロアーキテクチャ(出典:『Intel Technology Journal』第8巻第1号(2004年2月)の「11) Xeonプロセッサのマイクロアーキテクチャ
 
10  『Intel Technology Journal』第8巻第1号(2004)「MicroArchitecture of the Intel Pentium 4 Processor on 90 nm Technology」
11 (http://www.intel.com/technology/itj/2004/volume08issue01/art01_microarchitecture/p01_abstract.htmから入手可)

【Opteron】

Xeonファミリプロセッサと異なり、Opteronプロセッサは高度に効率的なパイプラインを実現できるように最適化されています。AMDによれば12、これは、デコードされた多数のマイクロ命令を一括して並行して実行するように最適化された、パイプラインのフロントエンド命令フェッチとデコードロジックによるものです。Opteronは12段の整数パイプラインを持っています。これはXeonプロセッサのパイプラインよりはるかに短いものです。このため、より遅い周波数を使用する必要があります。現在、Opteronは1.6〜2.4GHzで動作しています。ただし、パイプラインが短いため、分岐予測の失敗やキャッシュミスによる遅延のリスクは低減されます。また、パイプラインが短ければ、それほど大規模な分岐予想アルゴリズムやターゲットバッファも必要ありません。

Opteronはまた、処理の並行性を高めるために、Xeonより多数の実行ユニットとデコードユニットを持っています。Opteronには3つのALU、3つのAGU、および3つの浮動小数点実行ユニットがあります(図5)。OpteronにはXeonより多くの実行ユニットがありますが、その最大有効スループットはXeonと同じで、1サイクルあたり整数演算3個です。
 
図 5. AMD Opteronのアーキテクチャブロック ダイアグラム(出典: AMD Eighth-generation Processor Architecture paper)AMD Opteronのアーキテクチャブロック ダイアグラム
 
【パイプラインと周波数の比較】

高周波数でパイプラインの長いXeonプロセッサに比べ、Alpha EV68、HP-PA RISC、Itaniumといった、ハイパフォーマンスを狙って設計されたプロセッサは、パイプラインを短くし、相対的に低い周波数で動作するように設計される傾向があります。たとえばAlpha EV68/21264は7段のパイプラインを持ち、約1.25GHzで動作します。Itanium 2は8段のパイプラインを持ち、約1.6GHzで動作します。これは、長いパイプラインを持つXeonのパフォーマンスが低いということではありません。ただ、Xeonプロセッサの場合、長いパイプラインの欠点を補うために、高効率の分岐予測アルゴリズムや、大容量のTLBといったテクノロジが必要になるとは言えます。また、Xeonプロセッサは、線形計画法を使用するアプリケーションのように、実際のクロック速度が重要なアプリケーションに適していると言うこともできます。

【電力について

XeonとOpteronのパイプラインの相違に関して最後に取り上げるのは電力の問題です。消費電力はプロセッサの動作周波数と直接の相関関係があり、周波数が上がれば消費電力も増加します。このため、Xeonより動作周波数が低いOpteronは消費電力が少なく、発熱量もXeonプロセッサより少なくなります。消費電力の問題は、高密度のラックを使用する大規模なデータセンターや顧客にとってだんだん深刻になってきています。

 
12 『AMD Eighth-generation Processor Architecture』(www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/Hammer_architecture_WP_2.pdfから入手可)

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


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

Intel NetBurstアーキテクチャでは、パイプラインを有効活用する方法の1つとしてハイパースレッディングが採用されています。通常、プロセッサは単一の命令ストリームからの命令だけを実行します。スレッドや命令ストリームの間でのスイッチが発生すると、プロセッサはコンテクストスイッチのオーバーヘッドペナルティを支払う必要があります。最近のプロセッサはスーパースカラーなので(並行実行ユニットとアウトオブオーダー実行を装備)、プロセッサは命令を再配列してアウトオブオーダー実行し、一部の命令を並行的に実行します(命令レベルの並行処理)。XeonとOpteronのいずれのプロセッサも、命令レベルの並行処理を使用して、クロックあたり最大3個の命令を実行します。

さらにXeonファミリプロセッサは、ハイパースレッディング テクノロジを使用して2本の別個のスレッドを並行して実行します(マルチスレッド並行処理)。Xeonファミリプロセッサは、命令ポインタ、レジスタアロケーションテーブル、およびその他のアーキテクチャ レジスタといった一部のプロセッサ コンポーネントを複製します。Intelはこれらのコンポーネントを「アーキテクチャ ステート」と呼んでいます。アーキテクチャ ステート(論理プロセッサ)は、2つの論理プロセッサが共有するプロセッサ実行リソースに対して命令をスケジューリングします。片方のスレッドストリームにバブルが検出されると、プロセッサは実行リソースをもう一方のスレッドストリームにシフトします。これによりプロセッサは、別々のスレッドから供給されるマイクロ命令を時間多重化方式で実行して、実行リソースの使用効率を可能な限り高く維持します(図6)。

図 6. ハイパースレッディングテクノロジがある場合とない場合の比較13 。右側のハイパースレッディングの例では、ライトグレーの部分がスレッド1からの命令、ダークグレーの部分がスレッド2からの命令を表しています。白い四角形はアイドル状態の実行リソースです。

ハイパースレッディングは、マルチスレッドに対応したアプリケーションやオペレーティングシステムのパフォーマンスを向上させます。Intelの報告では最大30%の改善が見られるとのことですが14 、アプリケーションに大きく依存します。平均的なパフォーマンス向上率は、ほぼ5〜10%と考えられます15 。実際のパフォーマンス向上率は、OSやアプリケーションがマルチスレッドをどの程度有効に利用しているかに依存します。このため、マルチスレッド対応でないアプリケーションやオペレーティングシステムでは、ハイパースレッディングによる利点はありません。
 
13 この数値はIntelのホワイトペーパー『Hyper-Threading Technology on the Intel Xeon Processor Family for Servers』記載の情報から算出しました。
14 出典.『Hyper-Threading Technology on the Intel Xeon Processor Family for Servers』(www.intel.com/business/bss/products/hyperthreading/server/ht_server.pdfから入手可)
15 Anandtech Webサイトの報告によると、データベースでのパフォーマンステストでは3〜5%の向上。『AMD Opteron vs. Intel Xeon: Database Performance Shootout』(2004年3月2日) www.anandtech.com/


前のページへ 次のページへ


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