インテル® ハイパースレッディング・テクノロジー: よくある質問

HPC

この記事は、インテル® デベロッパー・ゾーンに掲載されている「Intel® Hyper-Threading Technology: Your Questions Answered (http://software.intel.com/en-us/articles/intel-hyper-threading-technology-your-questions-answered)」の日本語参考訳です。


1. インテル® ハイパースレッディング・テクノロジー (インテル® HT テクノロジー) とは?

インテル® ハイパースレッディング・テクノロジーとは、インテル® Core™ i7 プロセッサーとインテル® Xeon® プロセッサー 5500 番台で提供されるパフォーマンス機能です。簡単に言うと、プロセッサーの 1 つのコアがオペレーティング・システムでは 2 つのコアとして扱われ、OS で利用可能な実行リソースが 2 倍になり、システム全体のパフォーマンスが向上します。インテル® ハイパースレッディング・テクノロジーを図解したデモを http://www.intel.co.jp/content/www/jp/ja/architecture-and-technology/hyper-threading/hyper-threading-technology.html からご覧いただけます (「デモを見る」をクリックしてください)。

コア、スレッド、ハイパースレッドは混同されがちです。ここでは、分かりやすいように、ハイパースレッドをハードウェア・スレッドと呼び、OS レベルのスレッドをソフトウェア・スレッドと呼びます。1 コアは 1 CPU です。この記事の執筆時点 (2009 年 6 月)で、インテル® Core™ i7 プロセッサーとインテル® Xeon® プロセッサー 5500 番台は 4 コアです (将来、異なるコア数のバージョンがリリースされるかもしれません)。

2. システムがインテル® ハイパースレッディング・テクノロジーを利用しているかどうかはどうやって分かりますか?

プロセッサー、チップセット、オペレーティング・システム、BIOS でインテル® ハイパースレッディング・テクノロジーがサポートされていなければいけませんが、これはあまり問題ではないでしょう。Nehalem (開発コード名) プロセッサー・ベースのデスクトップとサーバーの多くは、インテル® ハイパースレッディング・テクノロジーをサポートしており、そのほとんどでは BIOS でインテル® ハイパースレッディング・テクノロジーを有効/無効にできます (デフォルトでは有効)。Windows* ではタスク・マネージャーを、Linux* では /proc/cpuinfo を使って CPU 情報を確認できます。インテル® ハイパースレッディング・テクノロジーが有効な場合、物理コア数の 2 倍の CPU が表示されます。例えば、インテル® Xeon® プロセッサー 5500 番台を 2 つ搭載したサーバーの場合、16 個の CPU が表示されます。(8 個の物理コアで 16 スレッドが実行されます。つまり、コアあたり 2 スレッドが実行していることになります。)

HyperThreading_Disabled.JPG  HyperThreading_Enabled.JPG
同じプラットフォームでインテル® ハイパースレッディング・テクノロジーが有効な場合 (右) と無効な場合 (左) に利用可能な CPU

3. 同じコアで 2 つのスレッドを使って同時に 2 つのアプリケーションを実行できますか?

はい、できます。1 つのコアで実行する 2 つのソフトウェア・スレッドは、同じプロセスのスレッドである必要はありません。同じアプリケーションを実行することもできますが (マルチスレッド・アプリケーションの場合)、2 つの個別のアプリケーションを実行することもできます。2 つのソフトウェア・スレッドのうちどちらがインテル® ハイパースレッディング・テクノロジーが有効なコアの 2 つのハードウェア・スレッドで実行するかは、オペレーティング・システムによって決定されます。そのため、同じコアで同時に 2 つのアプリケーションが実行される可能性があります。(この場合、2 つのアプリケーションを異なるコアで実行した場合とパフォーマンスが同じになるかどうかは、また別の問題です。これについては、6 番目の質問を参照してください。)

4. インテル® ハイパースレッディング・テクノロジーはどのように実装されていますか?

Nehalem (開発コード名) プロセッサーのコアでは、すべてのパイプラインにおいて 2 つの個別の命令ストリームを認識することができます。そして、さまざまなイベントによって、パイプラインで 1 つのストリームのデコード/ディスパッチと、もう 1 つのストリームのデコード/ディスパッチが切り替えられます。パイプラインのすべてのリソースは、2 つのハードウェア・スレッドで共有されるか、コピーされます。詳細は、『Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 1: Basic Architecture』 (英語) の 2.2.7 節を参照してください。

5. 実行時に “飢餓状態” にならないように 1 つのハードウェア・スレッドを優先することはできますか?

インテル® ハイパースレッディング・テクノロジー向けにコードを最適化する方法は多数ありますが (一般に、スレッド向けにコードを最適化すればいいだけです)、1 つのスレッドを優先することはできません (プロセスに優先度を設定して、そのプロセスをハードウェア・スレッドに割り当てることができる OS レベルのツールはあります)。インテル® ハイパースレッディング・テクノロジーでは、1 つのハードウェア・スレッドが “飢餓状態” にならない保証はありません。インテル® VTune™ Amplifier やインテル® スレッド・プロファイラー などのツールを利用することで、ハードウェア・スレッドが効率良く使用されているかを確認し最適化して、”飢餓状態” にならないようにすることができます。

6. インテル® ハイパースレッディング・テクノロジーを利用することでどのような利点が得られますか?

インテル® ハイパースレッディング・テクノロジーによってもたらされる利点はさまざまです。デスクトップ・システムでは、一度により多くのアプリケーションを実行することができます。開発者にとっての利点は、ソフトウェア・スレッドを実行できるコアが増えることです。CPU 使用率の高いサーバーでは、各コアでさらにパフォーマンスを引き出せます。一般に、ソフトウェア・スレッドでメモリーやその他のレイテンシーが多い場合、最も大きな利点が得られます。例えば、同じコア上の 2 つのハードウェア・スレッドで実行する 2 つのソフトウェア・スレッドで、それぞれのソフトウェア・スレッドに I/O 処理、長いレイテンシーのメモリーアクセス、長いスリープ時間がある場合、インテル® ハイパースレッディング・テクノロジーによりパフォーマンスが大幅に向上します (2 つのハードウェア・スレッドにより、長い待機中にリソースをより効率良く活用できるためです)。多数の Web サイトで、インテル® ハイパースレッディング・テクノロジーの利点を示すベンチマーク結果が公表されています。
最後に、インテル® ハイパースレッディング・テクノロジーが有効なプラットフォームでは、シングルスレッド・アプリケーションも実行することができます。インテル® ハイパースレッディング・テクノロジーは、シングルスレッド・アプリケーションのパフォーマンスを損なわないように設計されています。

参考文献

Artificial Neural Nets and Hyper-Threading Technology (http://software.intel.com/en-us/articles/artificial-neural-nets-and-hyper-threading-technology)

Setting thread affinity on SMT or HT enabled systems for better performance (http://software.intel.com/en-us/articles/setting-thread-affinity-on-smt-or-ht-enabled-systems)

Isolate Application Performance Issues on Hyper-Threading Technology-Enabled Systems (http://software.intel.com/en-us/articles/isolate-application-performance-issues-on-hyper-threading-technology-enabled-systems)

Using Intel® Hyper-Threading Technology in Digital Media Applications (http://software.intel.com/en-us/articles/using-hyper-threading-technology-in-digital-media-applications)

Accelerating Digital Multimedia Production with Hyper-Threading Technology (http://software.intel.com/en-us/articles/accelerating-digital-multimedia-production-with-hyper-threading-technology)

Optimizing for Hyper-Threading Technology Using the Intel® VTune™ Performance Analyzer (http://software.intel.com/en-us/articles/optimizing-for-hyper-threading-technology-using-the-intel-vtunet-performance-analyzer)

Multithreaded Game Programming and Hyper-Threading Technology (http://software.intel.com/en-us/articles/multithreaded-game-programming-and-hyper-threading-technology)

Effectiveness of Hyper-Threading Technology With an Application (http://software.intel.com/en-us/articles/effectiveness-of-hyper-threading-technology-with-an-application)

インテル® ハイパースレッディング・テクノロジーのパフォーマンスに関する考察

ハイパースレッディング: サーバーのエンドユーザー応答時間の正しい測定方法

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

タイトルとURLをコピーしました