同時マルチスレッディング

出典: フリー百科事典『ウィキペディア(Wikipedia)』

出典: フリー百科事典『ウィキペディア(Wikipedia)』
検索に移動

同時マルチスレッディング(どうじマルチスレッディング、: Simultaneous Multi-ThreadingSMT)とは、単一CPUにより複数の実行スレッドを同時に実行するプロセッサの機能。

概要[編集]

単一CPUで複数スレッドを同時実行することで、擬似的な対称型マルチプロセッシング (SMP) 環境を提供することができる。これは主にハードウェアの観点からの見方だが、ソフトウェアの視点からこの技術を見た場合は複数の実行スレッドが単一のプロセッサを共有していると言える。SMTを有効にすることで、見かけのプロセッサ数(論理プロセッサ数、論理コア数)が増加する。オペレーティングシステムがSMTに対応することで、アプリケーションソフトウェアからは透過的に複数のプロセッサとして利用することができるようになる。SMTにより同時駆動されるスレッドは、タイムスライスで切り替えて疑似的に同時実行するスレッドと対比して、ハードウェアスレッドと呼ばれることがある。

上に「擬似的なSMP環境を提供する」と書いたが、これはSMTの結果であって目的ではない。SMTの本来の目的は、プロセッサ内部の各実行ユニットの使用率を上げることにある。高度にパイプライン化された現代のスーパースカラープロセッサの実行の様子をつぶさに調べると、プロセッサ内部の実行ユニットすべてが動作しているわけではない場合が多いことがわかった。つまり、せっかくプロセッサ内部を高度に並列化しているにも拘らず並列性が最大限に活かされていない。単一スレッドでは完全には使われないプロセッサ内部資源を複数のスレッドに分配することで、プロセッサが本来持つ並列性を最大限に引き出してシステム全体のパフォーマンスを向上させようというのがSMTの本来の目的である。また、CGMTFGMTといった同時にマルチスレッドを実行しないマルチスレッディング技術同様に、メモリレイテンシを隠蔽する効果もある。

例えて言うと、整数演算ばかり行うスレッドAと浮動小数点演算ばかり行うスレッドBを同時に実行すると、スレッドAは整数演算ユニットばかり使いスレッドBは浮動小数点演算ユニットを使うのでお互いにプロセッサ内部資源の競合が極めて少なく、効率的に両者を実行できると考えられる。特に、浮動小数点命令は複数段のパイプラインで実行されることが多く、実行パイプラインを効率良く埋めるのに有用な技術と言える。

ただし、どれほどうまく資源配分を行ったとしても若干の競合が起きてどちらかのスレッドが待ち状態となることは完全には避けられないため、2スレッドを同時実行したとしても2倍のシステム性能が得られることは絶対にない。つまりスレッド当たりの性能はマルチスレッディングを使用しない場合と比較すると必ず低下する。現実的には2スレッド同時実行の場合で全体性能は5%から良くて20%程度の増加が得られることが多いようである。[要出典]

しかし、一般的なPCユーザーの使用状況では、マルチスレッド対応アプリケーションは少なく、単純なマルチコア化は、トランジスタ数あたりの性能でいえば効率の良い手段とは言えない部分もある。例えば、マルチコアの場合、シングルスレッド時において1コア分しか使われないとき、デュアルコアCPUであれば50%の使われないトランジスタの無駄が生じるが(トランジスタの無駄が生じると、製造コストに見合うパフォーマンスが得られないということである)、SMTの場合、僅かなアーキテクチャの拡張により実現しているため、シングルスレッド時であっても、生じる無駄も僅かであるといえる。 したがってSMTにより20%でも性能が向上すれば御の字であろう(0%でも問題はないだろう)。[独自研究?]

消費電力面では、SMTによって電力効率が悪化するケースもある。PCやモバイルではSMTが積極的に用いられることは少ないが、大量のデータを処理するサーバー向けの分野ではレイテンシ隠蔽を目的にSMTが採用されることもある[1]

SMTは同時に、つまり同じクロックサイクルで複数のスレッドを動かす技術である。従来のマルチスレッディングではハザードや命令ごと、あるいはクロックごとに実行するスレッドを切り替えており、複数のスレッドを実行できるプロセッサでも、あるクロックサイクルに実行されているスレッドはひとつであった。

単一CPU(単一パッケージ)で同時に複数のスレッドを処理できるものとして、デュアルコア(2コア)、クアッドコア(4コア)、……といったマルチコア技術があるが、これは1つのCPUパッケージの中に2つ以上の物理コアが実装されているものであり、1つのコアの中で2つに分けられている同時マルチスレッディングとは似て非なるものである。同時マルチスレッディングはマルチコア技術と併用することも可能である。Intelはシングルコア設計のNetBurstマイクロアーキテクチャにおいて実装したハイパースレッディング・テクノロジーを、マルチコア設計のCoreマイクロアーキテクチャでいったん捨てたが、Nehalemマイクロアーキテクチャ以降で再び採用したことにより、SMTとマルチコアを併用できるようになった。

PCやワークステーション向けのプロセッサでは、通例BIOS/UEFI設定によってSMTの有効/無効を切り替えることができる。プロセッサの内部ハードウェア的にはSMT機能を実装しているものの、ブランドやグレードに応じてサポートするかどうか(有効化できるかどうか)を制限している製品もある。

SMTはプロセッサコアあたり2スレッド (2-way) とは限らない。4スレッド (4-way) 以上を同時に実行できるプロセッサも存在する。

商用の実装[編集]

DEC Alphaファミリ[編集]

DEC Alpha EV8はさらにパワフルな4スレッドSMTエンジンを搭載する予定であった[2]が、コンパックはプロジェクトを商用化前に打ち切った。

IBM POWERファミリ[編集]

2004年5月に発表されたIBMPOWER5デュアルコアプロセッサで、それぞれのコアに2スレッドのSMTエンジンが組み込まれている。IBMの実装はそれ以前の実装と比較してより洗練されており、異なるスレッドに優先度を与えることや、SMTが性能向上をもたらさないタイプのワークロードをより効率的に処理するため動的にSMTエンジンをオン・オフすることが可能となっている。

2005年に発売されたマイクロソフトのゲーム機Xbox 360のCPUには、PowerPCベースの対称型3コアプロセッサXenonが採用されており、2-way SMTにより最大6つのハードウェアスレッドをサポートする。

2006年に発売されたソニーのゲーム機PlayStation 3のCPUには、PowerPC 970互換のプロセッサが採用されており、2-way SMTをサポートする[3]

2010年2月に発表されたIBMPOWER7では、それぞれのコアで同時実行可能なスレッド数が4へと倍増されている。 また2013年8月には同時8スレッドが実行可能なPOWER8を発表している。

Sun UltraSPARCファミリ[編集]

サン・マイクロシステムズ富士通が開発中の次世代プロセッサ、コードネーム「Rock」は2009年~2010年に登場が予定されている。現行の「UltraSPARC IV+」を置き換える予定のRockはマルチコアでコア内でも複数スレッドを同時実行する。Rockは16コアx16スレッドが同時平行的に実行され、1つのプロセッサで256スレッドになる。これらサンの新プロセッサは「Solaris OS」が備える「Solarisコンテナ」機能によってマルチスレッディングに対応する。[4]

x86/x64[編集]

Intel Pentiumファミリ[編集]

NetBurstマイクロアーキテクチャXeonPentium 4がSMTを採用した最初の商用プロセッサで、以降さまざまなモデルに同機能が搭載されている。インテルはこの機能を「ハイパースレッディング・テクノロジー (Hyper-Threading Technology)」と呼び、その内容は基本的な2スレッドのSMTエンジンである。

Intel Atomファミリ[編集]

インテルの低消費電力プロセッサであるAtomにはSMTが採用された。Atomはインオーダー実行のプロセッサであり、NetBurstマイクロアーキテクチャとは異なるマイクロアーキテクチャである。

Intel Core iファミリ[編集]

Nehalemマイクロアーキテクチャ以降のCore i/XeonにおいてもSMTが採用されている。インテルのメインストリーム向けプロセッサとしてはNetBurst系以来の採用である。

AMD Ryzen/EPYC[編集]

AMDZenマイクロアーキテクチャでは、同社史上初のSMTが実装された[5]

ARM[編集]

ARM Cortex[編集]

ARMは2018年に自動車ソリューション向けのSMT対応プロセッサCortex-A65AEを発表した[6]

出典[編集]

  1. ^ ASCII.jp:Core iシリーズにも使われる「SMT」の利点と欠点 (4/4)
  2. ^ Design of an 8-wide superscalar RISC microprocessor with simultaneous multithreading Preston, R.P.; Badeau, R.W.; Bailey, D.W.; Bell, S.L.; Biro, L.L.; Bowhill, W.J.; Dever, D.E.; Felix, S.; Gammack, R.; Germini, V.; Gowan, M.K.; Gronowski, P.; Jackson, D.B.; Mehta, S.; Morton, S.V.; Pickholtz, J.D.; Reilly, M.H.; Smith, M.J. Solid-State Circuits Conference, 2002. Digest of Technical Papers. ISSCC. 2002 IEEE International Volume 1, Issue , 2002 Page(s):334 - 472 vol.1
  3. ^ 西川善司の3DゲームファンのためのPS3アーキテクチャ講座
  4. ^ 日経コンピュータ2007年10月1日号p181
  5. ^ Ryzenはなぜ「ゲーム性能だけあと一歩」なのか? テストとAMD担当者インタビューからその特性と将来性を本気で考える
  6. ^ Arm、自動車向けアプリケーションプロセッサIP「Cortex-A65AE」を発表 | マイナビニュース

関連項目[編集]