10. マルチスレッド・プロセッサ
DESCRIPTION
10. マルチスレッド・プロセッサ. 五島 正裕. 内容. スレッド と マルチスレッド・プロセッサ スループット指向 MTP TLP 指向 MTP. スレッド と マルチスレッド・プロセッサ. スレッド (thread) と は. いろいろなレベルのスレッド 言語のスレッド Java thread スレッド・ライブラリのユーザ・レベル・スレッド: スレッド・ライブラリのシステム・レベル・スレッド= OS のスレッド: Pthreads , NT thread HW のスレッド: プロセッサ・コンテクスト:「プロセッサの実行状態」 - PowerPoint PPT PresentationTRANSCRIPT
AdvancedComputer
Architecture
10. マルチスレッド・プロセッサ
五島 正裕
Advanced Computer Architecture
内容
1. スレッド と マルチスレッド・プロセッサ
2. スループット指向 MTP
3. TLP 指向 MTP
AdvancedComputer
Architecture
スレッド と マルチスレッド・プロセッサ
Advanced Computer Architecture
スレッド (thread) とは
いろいろなレベルのスレッド
言語のスレッド Java thread
スレッド・ライブラリのユーザ・レベル・スレッド: スレッド・ライブラリのシステム・レベル・スレッド= OS のスレッ
ド: Pthreads , NT thread
HW のスレッド: プロセッサ・コンテクスト:「プロセッサの実行状態」 「 1 つの PC で指定される命令流」
Advanced Computer Architecture
OS のスレッド
タスク ― スレッド・モデル 1 つのプロセス = 1 つのタスク + 1 つ以上のスレッド
タスク タスク
シングル・スレッド・プロセス マルチスレッド・プロセス
スレッド
Advanced Computer Architecture
OS のスレッド
タスク,スレッドの HW 上の実体: タスクの実体:ページ・テーブル(大きい) スレッドの実体: プロセッサ・コンテクスト(小さい)
マルチ・プロセス > マルチスレッドのシングル・プロセス
タスク タスク
シングル・スレッド・プロセス マルチスレッド・プロセス
スレッド
Advanced Computer Architecture
マルチスレッド・プロセッサ (MTP)
プロセッサ・コンテクスト (processor context) プロセッサの動作状態を一意に定義するデータの集合
「コンテクスト・スイッチのとき,退避 / 復帰されるもの」 PC ,レジスタ, etc .
マルチスレッド・プロセッサ (MTP) : 複数のプロセッサ・コンテクストを保持する それらのスイッチを HW が行う 1 個のプロセッサであって,複数のスレッドを「同時に」実行できる
もの
Advanced Computer Architecture
余談:マルチスレッド・プロセッサの英訳?
Google (2009/06/23)
“multithreaded processor” (18,100 件 ) “multi-threaded processor” (12,800 件 )
“multithreading processor” ( 6,980 件 ) “multi- t hreading processor” ( 1,720 件 )
“multithread processor” ( 1,710 件 ) “multi-thread processor” ( 1,840 件 )
Advanced Computer Architecture
余談:マルチスレッド・プロセッサ
マルチスレッド・プロセッサ 複数スレッドを「同時に」実行できる 1 つのプロセッサ
マルチコア (multicore) ,チップ・マルチプロセッサ (CMP) 複数のプロセッサ(コア)が 1 つのチップ(パッケージ)に集積され
ているもの
マルチプロセッサ (multiprocessor) 複数のプロセッサ・チップを持つ 1 つのシステム
マルチスレッドのマルチコア,マルチプロセッサもある
Advanced Computer Architecture
余談: CPU ,プロセッサ と コア 「 CPU 」
obsolete?
「マルチコア・プロセッサ」,「 Intel Core i7 プロセッサ」 「プロセッサ」は,チップ,パッケージ. 「コア」は,プログラムを実体する実体の一揃い
「プロセッサ・コンテクスト」,「マルチスレッド・プロセッサ」 「プロセッサ」は,プログラムを実体する実体の一揃い
「マルチコア・プロセッサ」の「コア」に相当
ならば,「コア・コンテクスト」,「マルチスレッド・コア」と言うか?
Advanced Computer Architecture
複数のスレッドの元
複数のスレッドの元 (source) : 複数のプログラムから 1 本ずつ 1 本のプログラムから複数のスレッド それらの組み合わせ
抽出の方法: スレッド・ライブラリや言語機能を用いてプログラマが 自動マルチスレッド化コンパイラが HW が
Advanced Computer Architecture
MTP の分類
スループット指向 粗粒度の並列性がある単一のプログラム(⇒ 複数のプログラム)
データ並列性 「粗粒度のスレッド」
‧ スレッド・ライブラリ‧ 言語のスレッド機能
複数のプログラム 「単一のプログラムは速くならないが,
複数のプログラムを実行しても遅くならない」
TLP (Thread-Level Parallelism) 指向 粗粒度の並列性がない単一のプログラム ⇒ TLP の抽出
Advanced Computer Architecture
MTP の分類
プログラム 粗粒度の並列性 指向
単一
なしTLP 指向
(Thread-Level Parallelism)
データ並列性
粗粒度のスレッドスループット指向
複数あり
(複数プログラム)
AdvancedComputer
Architecture
スループット指向 MTP
Advanced Computer Architecture
スループット指向 MTP の対象
スループット指向 MTP の対象: 粗粒度の並列性がある単一のプログラム
データ並列性 「粗粒度のスレッド」
‧ スレッド・ライブラリ‧ 言語のスレッド機能
複数のプログラム: 「単一のプログラムは速くならないが,
複数のプログラムを実行しても遅くならない」
Advanced Computer Architecture
スループット指向 MTP の戦略
スループット指向 MTP の戦略: 計算資源の利用効率の向上 シングル・スレッドでは使いきれない計算資源の活用
使い切れない原因:レイテンシ 依存関係:レイテンシ分の空きスロット,バブル 予測ミス:ペナルティ分の空きスロット,バブル
実際的な主要因: データ依存 分岐予測ミス キャッシュ・ミス
Advanced Computer Architecture
スループット指向 MTP の分類
細粒度 (fine-grain) MTP クロック単位で切り替え
SONY Cell PPE (2threads) Microsoft Xbox 360 (2threads) ?
粗粒度 (coarse-grain) MTP , SoE (Switch on Event) MTP 長レイテンシ(キャッシュ・ミス)イベント発生時に切り替え
Intel Itanium 2
SMT (Simultaneous Multi-Threading) プロセッサ 命令単位で切り替え
Intel Hyper-Threading (HT) Technology (2threads)
Advanced Computer Architecture
細粒度 MTP の効果
毎サイクル,スレッドを切り替える
たとえば,スレッド数 2 なら, クロックを倍,パイプライン段数を倍にしても,レイテンシの影響が
出ない
cycle cycle
Advanced Computer Architecture
L1
IF ID EX L1 WBIF L1
細粒度 MTP の効果
IF ID EX L1 WB
IF ID EX WB
IF ID EX L1 WBIF L1
昔
微細化
パイプライン化
IF ID EX L1 WB
IF ID EX L1 WB
IF ID EX L1 WBIF L1
IF ID EX L1 WBIF L1細粒度 MT
IF ID EX L1 WBIF L1
IF ID EX L1 WBIF L1
Advanced Computer Architecture
粗粒度 MTP の効果
キャッシュ・ミス(など)で切り替え
分岐予測ミスには効果なし
キャッシュ・ミス
キャッシュミス
cycle
キャッシュヒット
Advanced Computer Architecture
SMT の構成
Out-of-Order スーパスカラがベース
拡張:
命令フェッチ: 細粒度で(クロックごとに)スレッド切り替え
それ以外: 論理レジスタ番号をスレッドの ID で拡張
‧ 「スレッド 0 は r0 ~ r31 ,スレッド 1 は r32 ~ r63 」
Advanced Computer Architecture
SMT
命令ウィンドウ
RF
フロントエンドfront-end
バックエンドback-end
演算器
発行Issue
ディスパッチDispatch
フェッチFetch
実行Exec
書戻WB
リネームRename
スケジュールSchedule
RF
命令キャッシュ
リネーム
ロジック
読出OR
RFPC PC
Advanced Computer Architecture
SMT の効果
演算器 演算器 演算器
cycle cycle
Advanced Computer Architecture
SMT の利点 / 欠点
利点: OoO スーパスカラから,わずかな追加 HW で, MT 化できる 他の MTP に比べ,
分岐予測ミス・ペナルティを含む,すべてのレイテンシを隠蔽可能
欠点(?): (マルチコアに比べると)性能向上幅が小さい
「貧乏人のマルチコア」 スケーラブルでない
大容量のレジスタ・ファイルが必要になる
Advanced Computer Architecture
SMT のスレッド数
SMT の効果:空いている演算器の有効利用 スレッド数のみ 2 以上に増やしても,性能向上はわずか スレッド数を(2より)増やす ⇒ 演算器を 1 揃い より増やす
シングル・コア 4-way SMT vs non-SMT デュアルコア デュアルコアの方が分散していてコンパクト
実際上,スレッド数は 2 まで
たとえば, Quad-core を SMT 化するか? HW コストには見合うが,努力に見合うか?
AdvancedComputer
Architecture
TLP 指向 MTP
Advanced Computer Architecture
TLP と ILP
ILP : Instruction-Level Parallelism ( 1 本のスレッドの中の)命令レベルの並列性
TLP : Thread-Level Parallelism 複数のスレッドの中の 命令レベルの並列性 複数の PC が指す周辺にある ILP
データ並列性や「粗粒度のスレッド」によるスレッドの並列性は, TLP とは言わない(たぶん)
ILP は 1 ~ 2 , TLP は 10 ~ 100 (理想)
Advanced Computer Architecture
スレッドの抽出法
スレッドの抽出法:
静的: コンパイラ バイナリ互換性なし
動的: プロセッサ バイナリ互換性維持(可能)
Advanced Computer Architecture
SpMT
SpMT ( Speculative Multi-Threading ,投機的 MT )逐次プログラムを TLP 指向で PC を複数 必然的に投機的になる
子スレッドを投機的に fork .
プログラマ(やコンパイラ)が指定可能な粒度では敵わない ⇒再粒度
1スレッド:数~数十命令
Advanced Computer Architecture
複数パス実行
複数パス実行 (multi-path execution) 分岐予測があたりにくい分岐の先を子スレッドに あたったスレッドが生き残る
分岐予測 複数パス実行
PC
PC
PCPC PC
Advanced Computer Architecture
ヘルパ・スレッディング (helper threading)
ヘルパ・スレッド簡約化されたコードを実行し,キャッシュ・プリフェッチ(など)を
行う
メイン・スレッド キャッシュ・アクセスがヒットする
Pseudo Multi-Threading (using Intel Hyper-Threading)メイン・スレッド × 1 + ヘルパ・スレッド × 1 を SMT で.
Advanced Computer Architecture
Slipstream Processors
Slipstream Processors
先行スレッド静的予測に基づいて簡約化されたコードを実行
簡約化されているので速い キャッシュや予測器を暖める
検証スレッド先行スレッドの後を追って,簡約化されていないコードを実行し,予測を検証
キャッシュや予測器が暖まっているので速い
AdvancedComputer
Architecture
今日のまとめ
Advanced Computer Architecture
MTP の分類
プログラム 粗粒度の並列性 指向
単一
なしTLP 指向
(Thread-Level Parallelism)
データ並列性
粗粒度のスレッドスループット指向
複数あり
(複数プログラム)
Advanced Computer Architecture
スループット指向 MTP の分類
細粒度 (fine-grain) MTP クロック単位で切り替え
SONY Cell PPE (2threads)
粗粒度 (coarse-grain) MTP , SoE (Switch on Event) MTP 長レイテンシ(キャッシュ・ミス)イベント発生時に切り替え
Intel Itanium 2 ?
SMT (Simultaneous Multi-Threading) プロセッサ 命令単位で切り替え
Intel Hyper-Threading (HT) Technology (2threads)
Advanced Computer Architecture
SpMT
SpMT ( Speculative Multi-Threading ,投機的 MT ) 逐次プログラムを TLP 指向で ⇒ 必然的に投機的になる 親スレッドが,複数の子スレッドを投機的に fork ,データ予測 あたったスレッドが生き残る
分岐予測 SpMT
PC
PC
PCPC PC