分岐予測と TC

09. 微細化への対応
五島 正裕
内容
1. 配線遅延
2. キャッシュのパイプライン化,多階層化
3. 演算器のクラスタ化
4. VLIW プロセッサ
配線遅延
ゲート遅延,配線遅延とスケーリング
 スケーリング:

最小加工寸法: 1/S 倍

ゲート 遅延:
1/S 倍

ローカル 配線遅延 : 1倍

グローバル 配線遅延:
1/S~1倍
配線遅延とスケーリング
 配線遅延 ∝ RCL2



R : 単位長さ当たりの抵抗
C : 単位長さ当たりの容量
L : 配線長
 ローカル配線: 1倍



細くなる(高さ一定)
⇒ R:
S倍
隣の配線と近くなる ⇒ C: S 倍
短くなる
⇒ L: 1/S 倍
L
 グローバル配線: < 1倍



細くしない,高くする
⇒R:
<S倍
隣の配線と離す
⇒C:<S倍
短くなる,リピータを挿入する
⇒ L : < 1/S 倍
最小加工寸法
配線遅延
配線世代(ピッチ)と信号遅延時間の関係
(SIA National Technology Roadmap for Semiconductors 1997)
スーパスカラ・プロセッサのパイプライン
ステージ名
ユニット
分岐予測器
F
命令フェッチ
N
レジスタ・リネーミ
ング
リネーミング・ロジック
D
ディスパッチ
ペイロード RAM
S
命令スケジューリン
グ
スケジューリング・ロジッ
ク
I
発行
ペイロード RAM
R
レジスタ読み出し
レジスタ・ファイル
X
実行(アドレス計
算)
演算器
1
1次データ・キャッ
シュ
1次データ・キャッシュ
W
ライトバック
レジスタ・ファイル
命令キャッシュ
オペランド・バイパス
 演算器
 ゲート遅延
 それ以外:メモリ
 配線遅延
配線遅延
 100nm 世代以前

ゲート遅延が支配的

ARC はそのままでも,微細化するとクロックが上がり,性能が上
がる
 サブ 100nm 世代

配線遅延が支配的に…

ARC がそのままだと,微細化してもクロックは上がらず,性能も
上がらない
サブ 100nm 世代の ARC
 パイプライン化 (pipelining)
 非集中化 (decentralization)

水平

垂直
パイプライン化
 多段に分割

クロックは速くなる が

実時間は変わらない(ちょっと伸びる)

レイテンシ(サイクル数)が長くなる
 レイテンシが性能に与える影響を最小化す
る必要がある

投機との組み合わせが重要
最近のスーパスカラ・プロセッサのパイプライ
ン
サイクル
ステージ名
ユニット
分岐予測器
数
F
命令フェッチ
N
レジスタ・リネーミ
ング
リネーミング・ロジック
2~3
D
ディスパッチ
ペイロード RAM
1~2
S
命令スケジューリン
グ
スケジューリング・ロ
ジック
I
発行
ペイロード RAM
1~2
R
レジスタ読み出し
レジスタ・ファイル
2~3
X
実行(アドレス計
算)
演算器
1
1次データ・キャッ
シュ
1次データ・キャッシュ
2~4
W
ライトバック
レジスタ・ファイル
2~3
命令キャッシュ
オペランド・バイパス
2~4
1
1
非集中化 (decentralization)
 水平

(ほぼ)対等な複数のユニット
に

多バンク化(メモリの場合)

多重化(ポートの削減)
 垂直(多階層化)

小型と大型(元)に

ヒット/ミス
サブ 100nm 世代の ARC
 パイプライン化,非集中化

IPC は,必ず低下する!
 100nm 世代

あまるトランジスタを何に使って,IPC を向上させるか
 サブ 100nm 世代

ILP (Instruction-Level Parallelism) も限界

クロックを上げつつ,IPC をどう維持するか
非集中化の例
 命令ウィンドウの非集中化

整数,ロード/ストア,浮動小数点
 演算器の可変レイテンシ化

キャリーが伝搬しないと予測すれば,1サイクルで

多ビットのシフトは2サイクルで
 演算結果再利用

最近の演算結果をとっておき,入力が同じなら再利用する

入力が同じ(ヒット)なら,1サイクルで
 キャッシュの多階層化
 演算器のクラスタ化 (clustering)
キャッシュのパイプライン化,多階層化
キャッシュのパイプライン化,多階層化
 最近のプロセッサの1次命令/データ・キャッシュ

2~4 サイクル(パイプライン化されている)

ex) Athlon,Core
 16~32KM 程度の RAM のアクセスには,いつでも 1nsec 程度かかる

1GHz の時代: 1サイクル ⇒ 1nsec

3GHz の時代: 3サイクル ⇒ 1nsec
0次キャッシュの追加
 0次キャッシュの追加

1サイクルでアクセスできるように

32B × 32エントリ = 1KB 程度

主に空間局所性を抽出

ヒット率は当然低い(最悪 70% 程度)

ヒット/ミス予測が欲しい
レイテンシ予測
 演算器のレイテンシを予測する


可変レイテンシ演算器

キャリーが伝搬しないとき1サイクルで

入力が同じ(ヒット)なら,1サイクルで
キャッシュ・ヒット/ミス予測
レイテンシ予測
キャッシュ
ヒット/ミス判定
Sched
I OR
EX
L1
Sched
I OR
投機的に発行
cycle
WB
L1
WB
レイテンシ予測
キャッシュ
ミス!
Sched
I OR
EX
L1
Sched
I OR
投機的に発行
(静的にヒットと予測)
キャッシュ
cycle
リフィル
L2
L2
WB
Sched
キャンセル
I OR
EX
WB
再スケジュール
レイテンシ予測
キャッシュ
ミス!
Sched
I OR
EX
Sched
発行しない
(ミスと予測)
L1
キャッシュ
cycle
リフィル
L2
L2
Sched
I OR
WB
EX
WB
演算器のクラスタ化
演算器のクラスタ化
 オペランド・バイパス

長い

配線遅延が問題
オペランド・バイパス
RF
クラスタ化
RF
クラスタ化 レイアウト
RF
RF
63
0
63
0
クラスタ化と命令ステアリング
 クラスタ化

配線長:
1/2

配線遅延:
1/4

配線遅延 ∝ (配線長)2
 クラスタ間のオペランド受け渡し

≥ 1 サイクル

ある種の可変レイテンシ
 命令ステアリング (instruction steering)

命令の振り分け

クリティカルな命令を同じクラスタに
ここまでのまとめ
配線遅延
 配線遅延:

スケーリングされない

ARC がそのままだと,クロックは向上しない
 対策

パイプライン化

非集中化

垂直

水平
配線遅延
 パイプライン化,非集中化

IPC は必ず低下する!

クロックを上げつつ,IPC をどう維持するか

ヒット率の向上
 「あたると速いハードを作って,あてる」
VLIW プロセッサ
VLIW プロセッサとは
 VLIW (Very Long Instruction Word)
 最も naive な定義:

命令は,演算器1つ1つに対して,その操作フィールドを持つ

毎サイクル,すべての演算器の動作を逐一 指定する

することがなければ,nop を指定
VLIW とは
ALU0
VLIW :
≒ 32b
cycle
ALU1
L/S
L/S
branch
f MUL
f ADD
f DIV
VLIW とは
 メリット

簡単
 ディメリット

nop の圧縮が必須

命令互換性がない,特に下位 (backward)

高性能なコンパイラが必須
 商業的な成功例はない
Intel Itanium プロセッサ
 EPIC (Explicitly Parallel Instruction Computing)
 レジスタ

128 x 64b GR

128 x 82b FR

64 x 1b Predication Registers

Stacked Register for Argument Passing

Rotating Register for Software Pipelining
 既存の VLIW 研究の成果など,やりたいことは全部入れた複雑なARC
EPIC
 24 Templates:命令の種類と Stop Bit
 命令グループ (instruction group)
M
M
M
M
M
M

並列に実行可能な命令

Stop Bit から Stop Bit
I
I
I
I
I
I
I
I
LX
LX
M
M
M
M
M
M
M
M
M
M
F
F
128b
I
I
I
I
I
I
M
M
M
M
M
M
M
M
I
I
B
B
F
F
B
B
B
B
B
B
M
M
M
M
B
B
M
M
F
F
: Stop Bit
B
B
B
B
B
B
EPIC
 うまくスケジューリングすると nop を削減できる
M1
I2
M3
M4
M5
M1
M3
M5
I2
M4
F6
nop
nop
nop
M1
M4
M3
M5
I2
F6
M1
M3
M4
F6
cycle
I2
M5
F6
VLIW とは
 より一般的な定義:

ILP プロセッサで,動的に命令をスケジューリング…

す る:
スーパスカラ

しない:
VLIW
 本講義での定義:

分解できない命令グループがある:VLIW
分解できない命令グループ
 分解できない命令グループ

パイプライン・ストール

レイテンシの変化に柔軟に対処できない
I1
I2
I3
I5
I4
I6
cycle
I1
I5
I3
I2
I4
I6
cycle
VLIW
スーパスカラ
分解できない命令グループ
 例えば,1次キャッシュのレイテンシ:


2 にすると,

グループ内にロード命令が1つでもあれば,1サイクル ストールする

ほとんどすべてのグループに,ロード命令はある

実質,性能は半分に
1 のままにすると,

微細化しても,クロックが上がらない
 実際の例(2009/06 現在):

Intel Itanium 2:
1.66GHz (L1: 16KB,1サイクル)

Intel Core i7:
3.06GHz (L1: 32KB,4サイクル)
今日のまとめ
配線遅延
 配線遅延:

スケーリングされない

ARC がそのままだと,クロックは向上しない
 対策

パイプライン化

非集中化
配線遅延
 パイプライン化,非集中化

IPC は必ず低下する!

クロックを上げつつ,IPC をどう維持するか

ヒット率の向上
 Risk-Taking なアーキテクチャ

あたれば速い,そしてあたる

VLIW は,最悪を見込まないといけないのでダメ

Itanium (1.66GHz) が Core (3.06GHz) よりクロックが遅いのは,
理由がある
今後の予定
 マルチスレッド・プロセッサ
 SIMD 命令