36
Advanced Computer Architecture 10. マママママママ マママママ ママ ママ

10. マルチスレッド・プロセッサ

  • Upload
    zea

  • View
    115

  • Download
    0

Embed Size (px)

DESCRIPTION

10. マルチスレッド・プロセッサ. 五島 正裕. 内容. スレッド と マルチスレッド・プロセッサ スループット指向 MTP TLP 指向 MTP. スレッド と マルチスレッド・プロセッサ. スレッド (thread) と は. いろいろなレベルのスレッド 言語のスレッド Java thread スレッド・ライブラリのユーザ・レベル・スレッド: スレッド・ライブラリのシステム・レベル・スレッド= OS のスレッド: Pthreads , NT thread HW のスレッド: プロセッサ・コンテクスト:「プロセッサの実行状態」 - PowerPoint PPT Presentation

Citation preview

Page 1: 10.  マルチスレッド・プロセッサ

AdvancedComputer

Architecture

10. マルチスレッド・プロセッサ

五島 正裕

Page 2: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

内容

1. スレッド と マルチスレッド・プロセッサ

2. スループット指向 MTP

3. TLP 指向 MTP

Page 3: 10.  マルチスレッド・プロセッサ

AdvancedComputer

Architecture

スレッド と マルチスレッド・プロセッサ

Page 4: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

スレッド (thread) とは

いろいろなレベルのスレッド

言語のスレッド Java thread

スレッド・ライブラリのユーザ・レベル・スレッド: スレッド・ライブラリのシステム・レベル・スレッド= OS のスレッ

ド: Pthreads , NT thread

HW のスレッド: プロセッサ・コンテクスト:「プロセッサの実行状態」 「 1 つの PC で指定される命令流」

Page 5: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

OS のスレッド

タスク ― スレッド・モデル 1 つのプロセス = 1 つのタスク + 1 つ以上のスレッド

タスク タスク

シングル・スレッド・プロセス マルチスレッド・プロセス

スレッド

Page 6: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

OS のスレッド

タスク,スレッドの HW 上の実体: タスクの実体:ページ・テーブル(大きい) スレッドの実体: プロセッサ・コンテクスト(小さい)

マルチ・プロセス > マルチスレッドのシングル・プロセス

タスク タスク

シングル・スレッド・プロセス マルチスレッド・プロセス

スレッド

Page 7: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

マルチスレッド・プロセッサ (MTP)

プロセッサ・コンテクスト (processor context) プロセッサの動作状態を一意に定義するデータの集合

「コンテクスト・スイッチのとき,退避 / 復帰されるもの」 PC ,レジスタ, etc .

マルチスレッド・プロセッサ (MTP) : 複数のプロセッサ・コンテクストを保持する それらのスイッチを HW が行う 1 個のプロセッサであって,複数のスレッドを「同時に」実行できる

もの

Page 8: 10.  マルチスレッド・プロセッサ

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 件 )

Page 9: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

余談:マルチスレッド・プロセッサ

マルチスレッド・プロセッサ 複数スレッドを「同時に」実行できる 1 つのプロセッサ

マルチコア (multicore) ,チップ・マルチプロセッサ (CMP) 複数のプロセッサ(コア)が 1 つのチップ(パッケージ)に集積され

ているもの

マルチプロセッサ (multiprocessor) 複数のプロセッサ・チップを持つ 1 つのシステム

マルチスレッドのマルチコア,マルチプロセッサもある

Page 10: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

余談: CPU ,プロセッサ と コア 「 CPU 」

obsolete?

「マルチコア・プロセッサ」,「 Intel Core i7 プロセッサ」 「プロセッサ」は,チップ,パッケージ. 「コア」は,プログラムを実体する実体の一揃い

「プロセッサ・コンテクスト」,「マルチスレッド・プロセッサ」 「プロセッサ」は,プログラムを実体する実体の一揃い

「マルチコア・プロセッサ」の「コア」に相当

ならば,「コア・コンテクスト」,「マルチスレッド・コア」と言うか?

Page 11: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

複数のスレッドの元

複数のスレッドの元 (source) : 複数のプログラムから 1 本ずつ 1 本のプログラムから複数のスレッド それらの組み合わせ

抽出の方法: スレッド・ライブラリや言語機能を用いてプログラマが 自動マルチスレッド化コンパイラが HW が

Page 12: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

MTP の分類

スループット指向 粗粒度の並列性がある単一のプログラム(⇒ 複数のプログラム)

データ並列性 「粗粒度のスレッド」

‧ スレッド・ライブラリ‧ 言語のスレッド機能

複数のプログラム 「単一のプログラムは速くならないが,

 複数のプログラムを実行しても遅くならない」

TLP (Thread-Level Parallelism) 指向 粗粒度の並列性がない単一のプログラム ⇒ TLP の抽出

Page 13: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

MTP の分類

プログラム 粗粒度の並列性 指向

単一

なしTLP 指向

(Thread-Level Parallelism)

データ並列性

粗粒度のスレッドスループット指向

複数あり

(複数プログラム)

Page 14: 10.  マルチスレッド・プロセッサ

AdvancedComputer

Architecture

スループット指向 MTP

Page 15: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

スループット指向 MTP の対象

スループット指向 MTP の対象: 粗粒度の並列性がある単一のプログラム

データ並列性 「粗粒度のスレッド」

‧ スレッド・ライブラリ‧ 言語のスレッド機能

複数のプログラム: 「単一のプログラムは速くならないが,

 複数のプログラムを実行しても遅くならない」

Page 16: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

スループット指向 MTP の戦略

スループット指向 MTP の戦略: 計算資源の利用効率の向上 シングル・スレッドでは使いきれない計算資源の活用

使い切れない原因:レイテンシ 依存関係:レイテンシ分の空きスロット,バブル 予測ミス:ペナルティ分の空きスロット,バブル

実際的な主要因: データ依存 分岐予測ミス キャッシュ・ミス

Page 17: 10.  マルチスレッド・プロセッサ

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)

Page 18: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

細粒度 MTP の効果

毎サイクル,スレッドを切り替える

たとえば,スレッド数 2 なら, クロックを倍,パイプライン段数を倍にしても,レイテンシの影響が

出ない

cycle cycle

Page 19: 10.  マルチスレッド・プロセッサ

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

Page 20: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

粗粒度 MTP の効果

キャッシュ・ミス(など)で切り替え

分岐予測ミスには効果なし

キャッシュ・ミス

キャッシュミス

cycle

キャッシュヒット

Page 21: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

SMT の構成

Out-of-Order スーパスカラがベース

拡張:

命令フェッチ: 細粒度で(クロックごとに)スレッド切り替え

それ以外: 論理レジスタ番号をスレッドの ID で拡張

‧ 「スレッド 0 は r0 ~ r31 ,スレッド 1 は r32 ~ r63 」

Page 22: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

SMT

命令ウィンドウ

RF

フロントエンドfront-end

バックエンドback-end

演算器

発行Issue

ディスパッチDispatch

フェッチFetch

実行Exec

書戻WB

リネームRename

スケジュールSchedule

RF

命令キャッシュ

リネーム

ロジック

読出OR

RFPC PC

Page 23: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

SMT の効果

演算器 演算器 演算器

cycle cycle

Page 24: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

SMT の利点 / 欠点

利点: OoO スーパスカラから,わずかな追加 HW で, MT 化できる 他の MTP に比べ,

分岐予測ミス・ペナルティを含む,すべてのレイテンシを隠蔽可能

欠点(?): (マルチコアに比べると)性能向上幅が小さい

「貧乏人のマルチコア」 スケーラブルでない

大容量のレジスタ・ファイルが必要になる

Page 25: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

SMT のスレッド数

SMT の効果:空いている演算器の有効利用 スレッド数のみ 2 以上に増やしても,性能向上はわずか スレッド数を(2より)増やす ⇒ 演算器を 1 揃い より増やす

シングル・コア 4-way SMT vs non-SMT デュアルコア デュアルコアの方が分散していてコンパクト

実際上,スレッド数は 2 まで

たとえば, Quad-core を SMT 化するか? HW コストには見合うが,努力に見合うか?

Page 26: 10.  マルチスレッド・プロセッサ

AdvancedComputer

Architecture

TLP 指向 MTP

Page 27: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

TLP と ILP

ILP : Instruction-Level Parallelism ( 1 本のスレッドの中の)命令レベルの並列性

TLP : Thread-Level Parallelism 複数のスレッドの中の 命令レベルの並列性 複数の PC が指す周辺にある ILP

データ並列性や「粗粒度のスレッド」によるスレッドの並列性は, TLP とは言わない(たぶん)

ILP は 1 ~ 2 , TLP は 10 ~ 100 (理想)

Page 28: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

スレッドの抽出法

スレッドの抽出法:

静的: コンパイラ バイナリ互換性なし

動的: プロセッサ バイナリ互換性維持(可能)

Page 29: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

SpMT

SpMT ( Speculative Multi-Threading ,投機的 MT )逐次プログラムを TLP 指向で PC を複数 必然的に投機的になる

子スレッドを投機的に fork .

プログラマ(やコンパイラ)が指定可能な粒度では敵わない ⇒再粒度

1スレッド:数~数十命令

Page 30: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

複数パス実行

複数パス実行 (multi-path execution) 分岐予測があたりにくい分岐の先を子スレッドに あたったスレッドが生き残る

分岐予測 複数パス実行

PC

PC

PCPC PC

Page 31: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

ヘルパ・スレッディング (helper threading)

ヘルパ・スレッド簡約化されたコードを実行し,キャッシュ・プリフェッチ(など)を

行う

メイン・スレッド キャッシュ・アクセスがヒットする

Pseudo Multi-Threading (using Intel Hyper-Threading)メイン・スレッド × 1 + ヘルパ・スレッド × 1 を SMT で.

Page 32: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

Slipstream Processors

Slipstream Processors

先行スレッド静的予測に基づいて簡約化されたコードを実行

簡約化されているので速い キャッシュや予測器を暖める

検証スレッド先行スレッドの後を追って,簡約化されていないコードを実行し,予測を検証

キャッシュや予測器が暖まっているので速い

Page 33: 10.  マルチスレッド・プロセッサ

AdvancedComputer

Architecture

今日のまとめ

Page 34: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

MTP の分類

プログラム 粗粒度の並列性 指向

単一

なしTLP 指向

(Thread-Level Parallelism)

データ並列性

粗粒度のスレッドスループット指向

複数あり

(複数プログラム)

Page 35: 10.  マルチスレッド・プロセッサ

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)

Page 36: 10.  マルチスレッド・プロセッサ

Advanced Computer Architecture

SpMT

SpMT ( Speculative Multi-Threading ,投機的 MT ) 逐次プログラムを TLP 指向で ⇒ 必然的に投機的になる 親スレッドが,複数の子スレッドを投機的に fork ,データ予測 あたったスレッドが生き残る

分岐予測 SpMT

PC

PC

PCPC PC