お問い合わせ | 導入事例 | HPC計算機 | 管理サーバ/ファイルサーバ | オプション | OS/開発環境 | アプリ | システム構築 | サポート | FAQ | ベンチ | 技術情報 | 購入案内

Xeon(R) (Nehalem Microarchitecture) の基本性能調査をSPEC CFP2006を用いて実施

Xeon (Nehalem) | Xeon (Nehalem) 1066MHzと1333MHzメモリ | Core(TM) i7 | OS別コンパイラ
歴代CPU | Xeon(R) | AMD Opteron(TM)-Xeon(R) | AMD Opteron(TM) | AMD Opteron(TM)整数演算
ハイパースレッド | QPI | STREAM | STREAMグラフ | 並列処理の階層化

並列計算の階層性

並列計算性能の実現には並行処理性能が重要

 並列計算は、シリアル処理、通信処理、並行処理の3種類の処理で実現されています。並列計算の高速化ではこれら3種類の処理のなかでも並行処理の高速化が大切です。そこでここでは、並行処理効率について計算機を調べます。

並列計算の階層性

 現在のHPC計算機の性能向上は階層的な並列処理によって実現されています。その処理階層とは、演算器階層でのスーパースカラー並列、コア階層でのマルチスレッド並列、CPU階層でのマルチスレッド並列、計算機階層でのマルチジョブ並列の4階層です。優れた並列計算機を構築するためには各階層での並列処理の特性をアプリケーションの特性別に理解し、最適なシステム構成を行うことが大切です。

演算器階層での並列処理 : スーパースカラー

 各コアに内蔵されている複数の演算器を利用し、スレッド内部で処理される命令を複数同時に並列処理できるようにし、クロック周波数以上の実効性能を実現する技術が「スーパースカラー」です。その効果を具体例を用いて確認します。Xeonプロセッサ (Coreマイクロアーキテクチャ、Nehalemマイクロアーキテクチャ) は4命令同時実行可能なスパースカラーを実装しています。すなわち、2.93GHzで動作するXeon (Nehalem) のCPUコアの理論性能は2.93GHz x 4FLOPS = 11.72GFLOPSです。これに対してLinpack HPLでの実効性能は10.8GFLOPSを記録しています。このことから「スーパースカラー」による4命令が同時実行され、しかも各演算器は92%の高い効率で動作していることが確認できます。

 なお、「スーパースカラー」を利用する主な方法は、コンパイラの自動最適化機能を用いる方法と、「スーパースカラー」用いて高速化された数値演算ライブラリを用いる方法があります。特に最適化が進んだ数値演算ライブラリを利用するとCPUの理論値に近い実効性能を容易に利用でき安定した性能が得られます。

コア階層での並列処理 : マルチスレッド

 CPUに内蔵されている複数のCPUコアを利用し、OpenMPやMPIを用いたスレッド並列処理により並列性能を得ます。CPUに内蔵されているコア数は現在は4コアが主流ですが、近い将来には6コアから8コアの搭載が主流となるとされており、CPUクロック速度の上昇が見込まれなくてもコア数の増加にる性能向上が期待できます。3GHz x 4FLOPS x 8core構成なら96GFLOPSの理論性能を持つCPUが実現される見通しです。

 利用するアプリケーションが「CPU性能律速型アプリケーション」であれば間違いなくコア数増加の恩恵を受けることができ、大幅な性能向上が期待できます。

 しかし、利用するアプリケーションが「メモリ性能律速型アプリケーション」の場合はメモリボトルネックによる並列性能向上の停滞が懸念されます。しかし最新の「Nehalemマイクロアーキテクチャ」はメモリ帯域が従来の約3倍の35GB/sにも達しており、さらに大容量のL3共有キャッシュメモリの搭載にも助けられ、メモリボトルネックによる性能向上の停滞は一挙に解消されました。

 さらに、4コア内部の並列処理で発生するコア間の通信についても、4コアで大容量のL3キャッシュを共有しているため貴重なメモリバスに負担を与えることなく高速な通信が期待できます。

CPU階層での並列処理 : マルチスレッド

 現在のX86系CPUアーキテクチャはCPU上にメモリコントローラを搭載する仕組みを採用しています。そのためCPU数の増加に比例してメモリ帯域も増加します。Xeon 1CPUでのメモリ帯域は最高35GB/sですが、2CPUに増えるとメモリ帯域は70GB/sへと倍増しますから、CPU数の増加による並列度の高さが原因でのメモリボトルネックの心配はありません。

 次にCPU間の並列処理で課題となるのがCPU間通信の速度です。従来のXeonではCPU間通信とメモリ通信を同じFSB上で行っているため、メモリI/Oが増えFSBの通信帯域が飽和するとCPU間通信にも影響が及ぶ懸念がありました。これでは、いくら高速な通信デバイスを採用していても、その性能を活かせない場合があります。

 これに対して改良された現在のX86系CPUアーキテクチャでは、CPU間接続を行うためメモリポートから独立した専用の30GB/s級の通信ポートがCPU上に搭載しており、メモリ通信に影響されない高速なCPU間通信を実現できるようになりました。

計算機階層での並列処理 : マルチジョブ

 単体計算機の高速化に相前後して、並列計算で用いるネットワーク機器も高速化が進んでいます。既に40Gbpsの性能を持つQDR規格のInfiniBandや、レイテンシーの低いConnectX HCAが普通に導入されるようになっています。

 さてこのInfiniBandのHCAカードを搭載するPCI Expressバスも最新のXeonでは大きく改善されています。従来のXeonでは、PCI Expressの通信ポートもメモリI/Oで利用しているFSBに相乗りしていました。そのため、メモリI/OやCPU間通信I/Oが激しい「メモリ性能律速型アプリケーション」では、メモリI/OやCPU間通信I/Oのボトルネックに巻き込まれ、本来の性能が発揮されない状況が考えられました。

 ところが現在のXeonではCPU間接続用のデバイスを接続するポートも、メモリポートやCPU間通信ポートから独立した30GB/s級の高速な外部デバイス接続用ポートとしてCPU上に搭載されています。その結果、他のデバイスからの影響を受けない高速な計算機間通信を実現できるようになりました。

まとめ

 最新の計算機システムは階層化された並列処理系を実装することで高い理論性能を実現しました。さらにこの理論性能を実際に利用可能な実効性能として取り出すため、これまでボトルネックとして性能向上を阻んでいた各デバイス間の通信効率を大幅に向上させることしで大きなブレークスルーを実現しています。この立役者がCPU上に搭載された独立したメモリコントローラ、CPU間通信専用の独立した通信ポート、外部デバイス通信専用の独立した接続ポートなどです。これらの搭載によりXeon (Nehalem)プロセッサはHPC分野アプリケーションの並列処理で非常に高い処理効率を実現するようになりました。

 これらの存在に支えられ、各階層での高い並行処理性能が、実用的な並列処理性能へと、効率良く転換されています。現在の並列計算機の評価では、アプリケーション別でのこのプロセス全体を評価し、最適なシステムを設計する必要があります。

 


【参考】HPCでは利用しないハイパースレッド

 1個のコアは1個のスレッドしか同時処理できません。しかし、ハードウェアを改良し2個のスレッドを同時処理できるようにする技術が「ハイパースレッディング」です。この「ハイパースレッディング」は初期のNetBurstアーキテクチャで採用されていましたが、すぐに採用されなくなりました。ところが、Nehalemマイクロアーキテクチャでは改良版の「ハイパースレッディング」が再び採用されました。

 Nehalemに搭載されるコア数は4個ですが、「ハイパースレッディング」をオンすると、システムからは8個のコアが動作しているように認識され、8スレッドの同時処理が可能となります。その動作メカニズムの特長は、並行処理されている各スレッドがアイドル状態となり利用していないコア内部のリソースを寄せ集め無駄なく利用するような仕組です。そのため条件が整えばスループットを20%から30%向上させることができるとされています。

 しかし良く考えるとHPCでの並列処理とは、複数のスレッドを並列処理させてより高速なジョブの実現を目指していますから、これは「ハイパースレッディング」とは正反対の処理です。