09. 微細化への対応
description
Transcript of 09. 微細化への対応
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
倍
グローバル配線: < 1 倍 細くしない,高くする ⇒ R : < S 倍 隣の配線と離す ⇒ C : < S 倍 短くなる,リピータを挿入する
⇒ L : < 1/S 倍
L
最小加工寸法
配線遅延
配線世代(ピッチ)と信号遅延時間の関係( SIA National Technology Roadmap for Semiconductors 1997 )
スーパスカラ・プロセッサのパイプラインステージ名 ユニット
F 命令フェッチ分岐予測器
命令キャッシュ
Nレジスタ・リネーミング
リネーミング・ロジック
D ディスパッチ ペイロード RAM
S命令スケジューリング
スケジューリング・ロジック
I 発行 ペイロード RAM
R レジスタ読み出し レジスタ・ファイル
X実行(アドレス計算)
演算器
オペランド・バイパス
11 次データ・キャッシュ
1 次データ・キャッシュ
W ライトバック レジスタ・ファイル
演算器ゲート遅延
それ以外:メモリ配線遅延
配線遅延
100nm 世代以前 ゲート遅延が支配的 ARC はそのままでも,微細化するとクロックが上がり,性能が
上がる
サブ 100nm 世代 配線遅延が支配的に… ARC がそのままだと,微細化してもクロックは上がらず,性能
も上がらない
サブ 100nm 世代の ARC
パイプライン化 (pipelining)
非集中化 (decentralization) 水平 垂直
パイプライン化
多段に分割 クロックは速くなる が 実時間は変わらない(ちょっと伸び
る) レイテンシ(サイクル数)が長くなる
レイテンシが性能に与える影響を最小化する必要がある 投機との組み合わせが重要
最近のスーパスカラ・プロセッサのパイプライン
ステージ名 ユニットサイクル
数
F 命令フェッチ分岐予測器
命令キャッシュ2 ~ 4
Nレジスタ・リネーミング
リネーミング・ロジック 2 ~ 3
D ディスパッチ ペイロード RAM 1 ~ 2
S命令スケジューリング
スケジューリング・ロジック
1
I 発行 ペイロード RAM 1 ~ 2
R レジスタ読み出し レジスタ・ファイル 2 ~ 3
X実行(アドレス計算)
演算器
オペランド・バイパス1
11 次データ・キャッシュ
1 次データ・キャッシュ 2 ~ 4
W ライトバック レジスタ・ファイル 2 ~ 3
非集中化 (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 サイクルで
キャッシュ・ヒット/ミス予測
SchedSched
レイテンシ予測
cycle
II OROR EXEX L1L1 WBWB
SchedSched II OROR L1L1 WBWB
キャッシュヒット/ミス判
定
投機的に発行
SchedSched
レイテンシ予測
cycle
II OROR EXEX
SchedSched
キャッシュ
ミス!
L1L1
II OROR
L2L2 L2L2
SchedSched
WBWB
再スケジュール
II OROR EXEX WBWB
キャッシュ
リフィル
キャンセル
投機的に発行(静的にヒットと予
測)
SchedSched
レイテンシ予測
II OROR EXEX
SchedSched
cycle
L1L1 L2L2
SchedSched
L2L2
II OROR
キャッシュ
リフィル
WBWB
EXEX
キャッシュ
ミス!
WBWB
発行しない(ミスと予
測)
演算器のクラスタ化
演算器のクラスタ化
オペランド・バイパス 長い 配線遅延が問題
オペランド・バイパス
RFRF
クラスタ化
RFRF
RF
クラスタ化 レイアウト
063
RF
063
クラスタ化と命令ステアリング
クラスタ化 配 線 長 : 1/2 配線遅延: 1/4
配線遅延 ∝ (配線長) 2
クラスタ間のオペランド受け渡し ≥ 1 サイクル ある種の可変レイテンシ
命令ステアリング (instruction steering) 命令の振り分け クリティカルな命令を同じクラスタに
ここまでのまとめ
配線遅延
配線遅延: スケーリングされない ARC がそのままだと,クロックは向上しない
対策 パイプライン化 非集中化
垂直 水平
配線遅延
パイプライン化,非集中化 IPC は必ず低下する! クロックを上げつつ, IPC をどう維持するか ヒット率の向上
「あたると速いハードを作って,あてる」
VLIW プロセッサ
VLIW プロセッサとは
VLIW (Very Long Instruction Word)
最も naive な定義: 命令は,演算器 1 つ 1 つに対して,その操作フィールドを持つ 毎サイクル,すべての演算器の動作を逐一 指定する
することがなければ, nop を指定
VLIW とは
ALU0 ALU1 L/S L/S f MUL f ADD
≒ 32b
branch f DIV
VLIW :
cycle
VLIW とは
メリット 簡単
ディメリット nop の圧縮が必須 命令互換性がない,特に下位 (backward) 高性能なコンパイラが必須
商業的な成功例はない
Intel Itanium プロセッサ
EPIC (Explicitly Parallel Instruction Computing)
レジスタ 128 x 64b GR 128 x 82b FR 64 x 1 b Predication Registers
Stacked Register for Argument Passing Rotating Register for Software Pipelining
既存の VLIW 研究の成果など,やりたいことは全部入れた複雑なARC
EPIC
24 Templates :命令の種類と Stop Bit
命令グループ (instruction group) 並列に実行可能な命令 Stop Bit から Stop Bit
M I I
M I I
M LX
M M I
M M I
M F I
M M F
M I B
M B B
B B B
M M B
M F B
M I I
M I I
M LX
M M I
M M I
M F I
M M F
M I B
M B B
B B B
M M B
M F B
: Stop Bit128b
EPIC
うまくスケジューリングすると nop を削減できる
M1
M3
F6
I2
M4 M5
M1 I2 nopM3 M4 nopM5 F6 nop
M1 M3 I2M4 M5 F6
M1M3 I2M4 M5 F6
cycle
VLIW とは
より一般的な定義: ILP プロセッサで,動的に命令をスケジューリング…
す る: スーパスカラ しない: VLIW
本講義での定義: 分解できない命令グループがある: VLIW
分解できない命令グループ
分解できない命令グループ パイプライン・ストール
レイテンシの変化に柔軟に対処できない
cycle cycle
VLIW スーパスカラ
I4
I1 I2
I3
I5 I6
I4
I1 I2
I3
I5
I6
分解できない命令グループ 例えば, 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 命令