スライド 1 - 坂井・入江研ホームページ

Advanced Computer Architecture
02. スーパースカラ・プロセッサの基礎
五島 正裕
2015/10/1
Advanced Computer Architecture
内容
1. 前回までの復習
2. スーパースカラ・プロセッサの歴史
3. Out-of-Order スーパースカラ・プロセッサ
4. 今回のまとめ
2
Advanced Computer Architecture
1. 前回までの復習
RISCと命令パイプライン
2015/10/1
Advanced Computer Architecture
4
命令パイプライン
I1
I0
IF
ID
EX
MEM
WB
cycle
I0
I1
I2
I3
I4
I5
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
Advanced Computer Architecture
パイプライン・ハザード
 パイプライン・ハザード (hazard)

パイプライン動作を妨げる要因
 構造ハザード (structural hazard)

HW の資源の不足が原因
 非構造ハザード

SW の持つ依存関係が原因

データ・ハザード (data hazard)


データ依存
制御ハザード (control hazard)

制御依存,分岐命令の実行
5
Advanced Computer Architecture
インターロック と バブル
 パイプライン・ハザード (hazard)

パイプライン動作を妨げる要因
 パイプライン・インターロック (interlock) 機構によって対処
 パイプライン・バブル (bubble) が発生

「パイプラインが乱れる」
6
Advanced Computer Architecture
アーキテクチャ的対処
 インターロックする ⇒ バブルが発生 ⇒ 性能低下
 インターロックする機会を減らすことが重要!
 構造ハザード
 資源の不足が原因
 資源の追加で消える
 例えば,メモリ・ポートの場合,
命令キャッシュとデータ・キャッシュの分離 (separate)
 非構造ハザード
 プログラムが原因
 原理的に消えない
 バブルの削減
7
Advanced Computer Architecture
8
バブルの削減 (データ・ハザード)
cycle
add r4 = r1 + r2
IF
add r5 = r4 + r3
add r4 = r1 + r2
add r5 = r4 + r3
EX
MEM
WB
IF
IF
add r5 = r4 + r3
add r4 = r1 + r2
ID
OR
ID
EX
OR
IF
OR
EX
OR
M
MEM WB
IF
IF
EX
EX
MEM WB
EX
バイパス
MEM WB
MEM WB
Advanced Computer Architecture
IF
9
100
PC
ID
IR
0
200
5
Reg
File
Rs
LD 1 2 10 100
Rt
EX
MEM
WB
1000
DR
MDR
MA MD
Main Memory
210
Advanced Computer Architecture
バイパスによる Forwarding
 同じもの:

オペランド・バイパス

レジスタ・バイパス

結果 (result) バイパス
 (データ)フォワーディング (forwarding)

「フウォーディング」
10
Advanced Computer Architecture
2. スーパースカラ・プロセッサの歴史
2015/10/1
Advanced Computer Architecture
スーパースカラ・プロセッサの着想
 命令パイプラインを n 本 並べて,n 命令ずつ実行したら…
 「n –way スーパースカラ・プロセッサ」
 プロセッサの分類:

ベクトル (vector)


ex) 地球シミュレータ,富士通 VR マイコン
スカラ (scalar)

スカラ (scalar) (n = 1)

スーパースカラ (super-scalar) (n > 1)
12
Advanced Computer Architecture
13
スーパースカラの命令パイプライン
I0
I2
IF
I3
ID
EX
MEM
WB
I1
cycle
I0
I1
I2
I3
I4
I5
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
Advanced Computer Architecture
IPC
 スカラ・プロセッサ(パイプライン・マシン)の性能

(性能)=(クロック速度)÷(CPI)

CPI (Cycles Per Instruction)

「1命令を実行するのに何サイクルかかるか」
 スーパースカラ・プロセッサの性能

(性能)=(クロック速度)×(IPC)

IPC (Instructions Per Cycle)

「1サイクルに命令を何個 並列に実行できるか」
 n –way なら,

IPC は最大 n

性能は最大 n 倍!
14
Advanced Computer Architecture
15
データ・ハザード
cycle
add r4 = r1 + r2
IF
add r5 = r4 + r3
IF
add r4 = r1 + r2
IF
add r5 = r4 + r3
IF
add r4 = r1 + r2
IF
add r5 = r4 + r3
IF
add r8 = r6 + r7
IF
add r8 = r8 + 1
ID
EX
MEM
WB
ID
OR
EX
EX
OR
OR
IF
EX
OR
M
MEM WB
OR
OR
EX
EX
MEM WB
EX
MEM WB
MEM WB
EX
MEM WB
MEM WB
Advanced Computer Architecture
命令の実行順序
 プログラム・オーダ (program order)

ISA のセマンティクスが規定する,命令の逐次的な実行順序

全順序 (total order)
 In-Order

プログラム・オーダの逆順に処理することを許さない

「同時」までは In-Order
 Out-of-Order

プログラム・オーダの逆順に処理することを許す
16
Advanced Computer Architecture
In-Order vs. Out-of-Order
 In-Order : ex.) SPARC (esp. UltraSPARC)

簡単,クロック 高速

IPC 低

「最適化コンパイラでカバーできる」?
 Out-of-Order : ex.) SPARC 以外

IPC 高

「複雑」,クロック 低速

インターロックの延長で Out-of-Order は極めて困難
 (性能)= (クロック速度)× (IPC)

高性能なのはどっち?
 古い議論!
17
Advanced Computer Architecture
In-Order vs. Out-of-Order
 古い議論!
 「最適化コンパイラでカバーでき」なかった?

少なくとも,商売上はダメだった(SW 遺産)
 クロックで差がつかなかった (esp. UltraSPARC)

Out-of-Order の高効率な実装法

インターロックの延長で In-Order を実現するのも困難

「複雑」の意味
 本講義:

Out-of-Order の special case として In-Order を議論する
18
Advanced Computer Architecture
2. Out-of-Order スーパースカラ・プロセッサ
2015/10/1
Advanced Computer Architecture
20
スーパースカラ・プロセッサの基本構造
フェッチ幅
命令
キャッシュ
フェッチ
Fetch
ディスパッチ幅
リネーム
命令
ウィンドウ
ロジック
リネーム
Rename
フロントエンド
front-end
発行幅
ディスパッチ
Dispatch
スケジュール
Schedule
RFRF
演算器
発行
Issue
実行
Exec
バックエンド
back-end
書戻
WB
Advanced Computer Architecture
基本的なパラメタ
 ディスパッチ幅(=フェッチ幅)

2~4命令/サイクル
 発行幅

2~6命令/サイクル

ディスパッチ幅 = 発行幅なら,ウェイ数と言ってよい(?)
 命令ウィンドウ・サイズ

16~32命令

ウェイ数の8倍?
21
Advanced Computer Architecture
22
命令スケジューリング
 バックエンド:

スケジュールされた命令を実際に実行
add r4 = r1 + r2
 命令ウィンドウ
(スケジューリング・ウィンドウ):
add r5 = r4 + r3
sub r4 = r1 - r2

命令をスケジュール =

実行可能な命令を見つける
sla r5 = r5 << 1

実行可能 = 制約を満たす
sla r4 = r1 << 2
add r5 = r5 + 1
 フロントエンド:

命令ウィンドウを下流に拡大
bz
r4
Advanced Computer Architecture
命令スケジューリングの制約
 計算資源 :「実行するハードウエア側の問題」

「演算器など,計算資源が空いていなければ実行できない」
 命令間の依存:「実行されるプログラム側の問題」

先行制約:命令間の先行関係の制約

制御依存 (control dependence)


「分岐命令があると,後の命令は先に実行できない」
データ依存 (data dependence)

「2つの命令が同一のロケーションを定義/参照していると,
後の命令は先に実行できない」
 パイプライン・ハザードと同じ だが

「どの命令にインターロックかけるか?」より,簡潔
23
Advanced Computer Architecture
24
データ依存
 制御駆動型 (control-driven) (⇔ データ駆動,data-driven)

命令間のデータの授受は,

プログラム・オーダ上で,先行/後続の関係にある2命令が,

同一のロケーションを参照する
ことで表現

ロケーション:レジスタとメモリ
Write
add r4 = r1 + r2
add r5 = r4 + r3
Read
Advanced Computer Architecture
25
データ依存
後続命令
Read
Read
先
行
命
令
Write
Ip
Ip
Is
Is
time
time
入力依存 (input)
Write
time
逆依存 (anti)
Ip
Ip
Is
Is
フロー依存 (flow)
time
出力依存 (output)
Advanced Computer Architecture
真のデータ依存,偽のデータ依存
 フロー依存:真の (true) データ依存

データの授受のため

先行制約を生じる
 入力依存

一般に,複数の読み出しがあるため

先行制約を生じない
 逆依存,出力依存:偽の (false) データ依存

ロケーションの再利用のため

原理的には,先行制約を生じない

リネーミングにより解消
26
Advanced Computer Architecture
27
リネーミングによる偽のデータ依存の解消
後続命令
Read
Read
先
行
命
令
Write
Ip
Ip
Is
Is
time
time
入力依存 (input)
Write
time
逆依存 (anti)
Ip
Ip
Is
Is
フロー依存 (flow)
time
出力依存 (output)
Advanced Computer Architecture
28
データ依存の具体例
ld
r1
=
*($sp)
フロー依存
sla
r2
=
r1 << 1
逆依存
sla
r1
=
r1 << 2
add
r4
=
r1 + r2
Advanced Computer Architecture
29
データ依存の具体例
ld
r1
=
*($sp)
sla
r2
=
r1 << 1
sla
r1
=
r1 << 2
add
r4
=
r1 + r2
Advanced Computer Architecture
30
データ依存の具体例
ld
r1
=
sla
r2
=
*($sp)
r1 << 1
逆依存
sla
r1
r3
=
r1 << 2
add
r4
=
r1 + r2
r3
Advanced Computer Architecture
31
リネーミングの真髄
データの寿命
r1 r2 r3 r4
ロケーション
(レジスタ番号)
ld
r1
=
*($sp)
sla
r2
=
r1 << 1
sla
r3
r1
=
r1 << 2
定義
add
r4
=
r1 + r2
r3
参照
time
 要は,「1つのデータに1つのロケーション」
Advanced Computer Architecture
32
リネーミングの真髄
データの寿命
r1 r2 r3 r4
ロケーション
(レジスタ番号)
ld
r1
=
*($sp)
sla
r2
=
r1 << 1
sla
r3
=
r1 << 2
定義
add
r4
=
r3 + r2
参照
time
 要は,「1つのデータに1つのロケーション」
Advanced Computer Architecture
理想リネーミングと無限のロケーション
 「1つのデータに1つのロケーション」が理想だが…

ロケーションが無限に必要!

解決法は次回
33
Advanced Computer Architecture
レジスタ・リネーミングとデータ依存
 リネーミングは,メモリにも適用可能 だが…

以降しばらくはレジスタに関して

メモリ ―― ロードとストアの依存に関しては,そのうち…
 偽の依存:逆依存,出力依存

レジスタ・リネーミングで解消
 真の依存:フロー依存

レジスタ・リネーミングで簡単
34
Advanced Computer Architecture
レジスタ・リネーミングとフロー依存
 「1つのデータに1つのロケーション(レジスタ)」
 「1つの命令(のデスティネーション)に1つのレジスタ」

1つの命令のデスティネーションは普通1つだから

データと命令は同一視してよい
35
Advanced Computer Architecture
レジスタ・リネーミングとフロー依存
 各命令のデスティネーションに割り当てるとき,

レジスタは「空 (empty)」にしておく
 命令が実行され,結果が書かれたら,

レジスタは「一杯 (full)」 になる
 フロー依存による先行制約を満たす =

依存元の命令が実行されたら,依存先の命令を実行する

ソースが full になったら,実行する
36
Advanced Computer Architecture
37
レジスタ・リネーミングとフロー依存
ld
r1
=
*($sp)
sla
r2
=
r1 << 1
sla
r3
=
r1 << 2
add
r4
=
r3 + r2
r1
r2
r3
r4
Advanced Computer Architecture
今日のまとめ
2015/10/1
Advanced Computer Architecture
スーパースカラ・プロセッサの基本構造
 基本構造

フロントエンド

命令ウィンドウ

バックエンド
 命令スケジューリング:

命令ウィンドウ内から,実行可能な命令を見つける

実行可能 = 制約を満たす
39
Advanced Computer Architecture
命令スケジューリングの制約
 計算資源 :「実行するハードウエア側の問題」
 命令間の依存:「実行されるプログラム側の問題」

先行制約:命令間の先行関係の制約

制御依存

データ依存
 パイプライン・ハザードと同じ だが,

「どの命令にインターロックかけるか?」より,簡潔
40
Advanced Computer Architecture
データ依存 と レジスタ・リネーミング
 レジスタ・リネーミング:

「1つの命令に1つのレジスタ」
 偽の依存:逆依存,出力依存

リネーミングで解消
 真の依存:フロー依存

リネーミングで簡単

レジスタが「空 (empty)」⇒「一杯 (full)」になったら実行
41
Advanced Computer Architecture
次回
 レジスタ・リネーミングの実際

レジスタは無限にはない
 制御依存

分岐予測
42
Advanced Computer Architecture
クロック速度と IPC
 クロック速度 と IPC はトレードオフ?

“Speed Demon vs. Brainiac”
 AMD Athlon XP 2000+ (1.67GHz)

Intel Pentium 4 2GHz と同等の性能(?)

2/1.67 = 1.20 倍の IPC
44