同時マルチスレッディング
同時マルチスレッド(Simultaneous Multithreading、略称SMT)は、ハードウェア・マルチスレッドを用いてスーパースカラCPUの全体的な効率を向上させるための技術です。SMTは、現代のコンピュータアーキテクチャによって提供されるリソースをよりよく利用するために、実行の複数の独立したスレッドを許可します。
マルチスレッドは、マルチタスクと概念は似ていますが、最新のスーパースカラープロセッサではスレッドレベルの実行で実装されています。
プロセッサ設計では、より少ないリソース要件でオンチップ並列性を高める方法が2つあります。
- スーパースカラ技術:複数の命令を同時に実行する(同時実行)、プロセッサ内部に構築された複数の冗長実行ユニットに「同時」に命令をディスパッチする(同時ディスパッチ:命令ディスパッチ)ことで、命令レベルの並列性(ILP)を向上させようとする技術。
- チップレベルマルチスレッド(CMT)技術:1つのプロセッサチップ内の複数のスレッドからの命令を同時に実行するために、スレッドレベル並列化(TLP)を利用した技術。
チップ内で複数のスレッドをサポートする方法はたくさんあります。
- Interleaved multithreading (IMT) : 異なるスレッドから複数の命令をインターリーブして発行することで、Temporal multithreadingとも呼ばれる。インターリーブされた命令を発行する頻度によって、さらに細粒マルチスレッドと粗粒マルチスレッドに分けられる。一方、粗粒マルチスレッドは、現在実行中のスレッドが長い待ち時間のイベント(ページフォルトなど)を起こした場合にのみ、別のスレッドからの命令を発行するように切り替えます。粗視化マルチスレッドの方が、スレッド間のコンテキスト切り替えが少ないため、より一般的です。コアごとに1つのパイプラインを持つプロセッサの場合、1サイクルに1つの命令しか発行できないため、インターリーブマルチスレッドが唯一可能な方法です。
- 同時マルチスレッド(SMT)。1サイクルで複数のスレッドから複数の命令を発行すること。そのためにはプロセッサがスーパースカラである必要があります。
- チップレベルのマルチプロセッシング(CMPまたはマルチコアプロセッサ):2つ以上のスーパースカラプロセッサを1つのチップに統合し、それぞれが独立してスレッドを実行します。
- IMT/SMT/CMPの任意の組み合わせ
それらを区別するための重要な要素は、プロセッサが1サイクルでどれだけの命令を発行できるか、どの命令からどれだけのスレッドが出てくるかを見ることです。
最新のSMT CPUの例
- Intel Pentium 4は、2002年に発売された3.06GHzモデルを皮切りに、多くのプロセッサに導入された、同時マルチスレッドを実装した最初の近代的なデスクトッププロセッサである。Intelは、この機能をHyper-Threading Technology (HTT)と呼び、基本的な2スレッドSMTエンジンを提供している。Intelは、同じ、SMTではないPentium 4と比較して、最大30%の速度向上を主張している。
- 最新のMIPSアーキテクチャ設計には、「MIPS MT」として知られるSMTシステムが含まれています。
- 2004年5月に発表されたIBM POWER5は、デュアルコアDCM、クアッドコアまたは8コアMCMのいずれかで、各コアには2スレッドのSMTエンジンが搭載されています。IBMの実装は、さまざまなスレッドに異なる優先度を割り当てることができ、よりきめ細かく、SMTエンジンを動的にオン/オフすることができるため、SMTプロセッサではパフォーマンスが向上しないワークロードをよりよく実行することができるため、これまでの実装よりも洗練されています。これは、一般的に利用可能なハードウェア・マルチスレッドのIBMの2番目の実装です。
- 2008年に発売されたIntel Atomは、命令の並び替え、投機的実行、レジスタのリネームをサポートしないSMT(ハイパースレッディングとして販売されている)を初めて搭載したIntel製品です。
関連ページ
- スレッド(コンピュータサイエンス
- 並列計算
- 命令レベルの並列性
- マルチコアプロセッサ
質問と回答
Q:同時マルチスレッディングとは何ですか?
A:Simultaneous Multithreading(SMT)とは、HardwareマルチスレッドによるスーパースカラCPUの総合効率を向上させる技術です。複数の独立したスレッドを実行することで、最新のコンピュータ・アーキテクチャが提供するリソースをより良く活用することができます。
Q: SMTはマルチタスクと比較してどうなのでしょうか?
A: マルチスレッディングはマルチタスクと同様の概念ですが、マルチタスクがプロセスレベルで実装されるのに対し、最新のスーパースカラ・プロセッサでは実行のスレッドレベルで実装されています。
Q:オンチップ並列性を高める2つの方法とは?
A:オンチップ並列性を高める2つの方法は、スーパースカラ技術とチップレベル・マルチスレッディング(CMT)です。
Q: チップレベル・マルチスレッドにはどのような種類がありますか?
A: チップレベル・マルチスレッドには、インターリーブ・マルチスレッド(IMT)、細粒マルチスレッド、粗粒マルチスレッド、同時マルチスレッド(SMT)の種類があります。
Q:IMT/SMT/CMPはどのように区別するのか?
A:IMT/SMT/CMPの見分け方は、プロセッサが1サイクルで発行できる命令の数と、その命令の元となるスレッドの数を見ることがポイントになります。
Q:SMTにはどのようなプロセッサを使用しなければならないのか?
A:SMTでは、スーパースカラ・プロセッサを使用する必要があります。
Q:チップレベルマルチプロセッシングはどのようなプロセッサを使用するのか?
A: チップレベル・マルチプロセッシングは、2つ以上のスーパースカラ・プロセッサを1チップに統合し、それぞれが独立してスレッドを実行するマルチコア・プロセッサを使用しています。