クラスタ型プロセッサのための分散投機メモリ

クラスタ型プロセッサのための
分散投機メモリフォワーディング
入江英嗣#1 服部直也#2 高田正法
坂井修一 田中英彦#3
東京大学情報理工学系研究科
#1 現在、科学技術振興機構
#2 現在、日立中央研究所
#3 現在、情報セキュリティ大学院大学
2004/05/27
SACSIS2004スライド資料
1
研究の背景:クラスタ型プロセッサ
フロントエンド処理
フロントエンド処理
実行コア
発行キュー
レジスタ
クラスタ化
実行クラスタ0
実行クラスタ1
発行キュー
発行キュー
レジ
スタ
バックエンド処理
レジ
スタ
バックエンド処理
• 複数の実行コアの接続で一つのマイクロプロ
セッサを構成
– 近年注目されている
2004/05/27
SACSIS2004スライド資料
2
研究の背景:クラスタ化の利点
発行キュー
発行キュー レジスタ
レジスタ
クラスタ化
1cycle
クラスタ間
通信遅延
発行キュー レジスタ
1cycle
タイミング・クリティカル・パスが縮まる
同じ規模の集中型プロセッサに較べて
○:より速い動作クロックの実現(連続実行可)
×:処理が分散してしまうとIPC低下
ポテンシャル:高クロック動作&積極的な並列実行の両立
2004/05/27
SACSIS2004スライド資料
3
研究の目的
• クラスタ型プロセッサに必要なメモリ参照
(load/store)処理
– クラスタ化の利点:高クロック高IPC(Instructions Per
Cycle)
乖離– メモリ参照がボトルネックとならないためには
• 高クロックハードウェアで(シンプル、小容量)
• 後続命令の実行を滞らせないデータ供給が必要
– 特にロード命令の遅延はIPCに大きく影響する
• 実際のメモリ参照:長い遅延
– クラスタ化によりさらに増大
←この後議論
オーバヘッド隠蔽手法を提案
2004/05/27
SACSIS2004スライド資料
4
発表の流れ
• ロード命令オーバヘッドの検討
– クラスタ型プロセッサにおけるメモリ命令
• ロード命令高速化のアイデア
– 発行、参照の局所化
• 提案手法の実装
– スケジューラと連動したフォワーディング制御
• 評価
• まとめ
2004/05/27
SACSIS2004スライド資料
5
クラスタ型プロセッサにおける
ロード命令オーバヘッドの検討
2004/05/27
SACSIS2004スライド資料
6
想定プロセッサ
frontend
steering
(fetch/decode/
logic
rename)
tag
forward
issue queue
register file
LSQ
高クロックで動作する
1命令実行幅の
クラスタ
バイナリ互換を持ち、
動的に実行クラスタを
決定する
クラスタ型スーパスカラ
2004/05/27
以降の評価で
ベースラインモデル
として利用
data
forward
×8
issue queue
register file
SACSIS2004スライド資料
D1
cache
高速なクラスタ
8個による構成
で高クロック高
IPCを狙う
7
クラスタ型プロセッサにおけるメモリ構成(1)
• ローカルなキャッシュ(D0)を各クラスタに配置
して高速化する事が自然だが・・
– ここでは“キャッシュ”:キャッシュ+ストアキュー
frontend
steer issue/execute memory
cluster
cache(D0)
cluster
cache(D0)
cluster
cache(D0)
?
load
steer時に依存関係が
判明していないので
どのD0にデータが
あるのか分からない
2004/05/27
SACSIS2004スライド資料
cache
(D1)
8
クラスタ型プロセッサにおけるメモリ構成(2)
• 先行研究では、メモリステートを一括して管理
する集中キャッシュで近似する事が多い
frontend
steer issue/execute memory
cluster
load
どこを選択しても
OK!
2004/05/27
cluster
cache
(D1)
この構成について
ロード命令の
オーバヘッドを
考える
cluster
SACSIS2004スライド資料
9
ロード命令処理の遅延
• 処理遅延は主に二つの要素から成る
• (メモリ)発行遅延
– メモリ依存関係を正しく反映するため
• ロード命令は依存のあるストア命令の発行を待つ
• ストア命令は一般に順番に処理される
– メモリ依存関係は演算後まで確定しない
• メモリ依存予測の精度が悪いと、待ちすぎたり早
すぎたり
• 参照遅延
– キャッシュ参照にかかる遅延
発行キュー内の
メモリ発行条件
チェイン
Store a
Store b
Store c
Store d
Load x
• キャッシュアレイが大きいと長くなる
– アドレス計算終了から、ロード値が利用可能
となるまで
2004/05/27
SACSIS2004スライド資料
10
ロード処理遅延
発行遅延 参照遅延
発行遅延の増加
• クラスタ型プロセッサ
– より深いパイプライン
– より広い実行幅
(一部の投機不可能なロード命令では)
発行条件チェインが長くなる
– ステアリング次第では、メモリ発行条件の伝播
に通信遅延が加わる
Store a
Store b
• simによる計測
– 通常のメモリ依存予測(wait table)を用いたも
のにくらべて、理想メモリ依存予測を仮定した
場合のIPCは約70%増し(想定アーキテク
チャ)
2004/05/27 •
SACSIS2004スライド資料
集中型では約40%増し
Store c
Store d
Load x
11
ロード処理遅延
発行遅延 参照遅延
参照遅延の増加
• クラスタ型プロセッサのキャッ
シュ参照遅延は?
– 往復の通信遅延+キャッシュアレ
イ参照遅延
• 通信遅延を2サイクルとすると、往復
で4サイクルの遅延
– 双方とも配線遅延のため、クラスタ
型実行コアの動作遅延に較べて
相対的に増大
cluster
cache
(D1)
cluster
通信 + アレイ参照
• simによる計測
– 参照遅延が1サイクル増えると約5%のIPC低下
2004/05/27
SACSIS2004スライド資料
12
ロード命令オーバヘッド:まとめ
• クラスタ型プロセッサでは、ロード命令のオーバ
ヘッドが増大する
– クラスタ化の利点を活かせない
• なぜ増大するか?
– 発行遅延が増える原因:メモリ発行条件がクラスタ外
から来る
• 親ストアが発行したという情報がなかなか伝わってこない
– 参照遅延が増える原因:クラスタ外と通信しなくては
ならない/参照アレイが大きい
2004/05/27
SACSIS2004スライド資料
13
クラスタ型プロセッサにおける
ロード命令高速化のアイデア
2004/05/27
SACSIS2004スライド資料
14
ロード命令処理の局所化
• なぜロード命令処理遅延が増大するか?
– 発行遅延が増える原因:発行条件がクラスタ外
から来る
– 参照遅延が増える原因:クラスタ外と通信しなくて
はならない/参照アレイが大きい
• これを防ぐためには・・
– 発行条件がクラスタ内から来る
– クラスタ内の小容量バッファを参照する
ロード命令処理をクラスタ内に
局所化できれば速い!
2004/05/27
SACSIS2004スライド資料
15
分散投機メモリフォワーディング
• steer時にメモリ依存予測を利用することにより分散
局所化の利点を得る事はできないだろうか?
読むべきデータはメモリ依存関係のある親ストア命令が
実行されたクラスタにあるはず
frontend
store
steering
scheme
2004/05/27
steer issue/execute memory
cluster
buffer
cluster
buffer
cluster
buffer
SACSIS2004スライド資料
cache
(D1)
16
分散投機メモリフォワーディング
• steer時にメモリ依存予測を利用することにより分散
局所化の利点を得る事はできないだろうか?
読むべきデータはメモリ依存関係のあるストア命令が
実行されたクラスタにあるはず
frontend
steer issue/execute memory
cluster
buffer
cluster
buffer
親storeIDを
キーとして参照
<高速>
buffer
verify
?
load
memory dep.
predictor
2004/05/27
cluster
SACSIS2004スライド資料
cache
(D1)
アドレスを
キーとして
ベリファイ
17
手法の特徴
• クラスタ内の小容量バッファを介して親ストア
値を直接利用(投機メモリフォワーディング)
– 投機フォワーディングの利点
• バッファ容量の利用効率高→小容量
• アドレスではなく動的IDで参照→制御がシンプル
• ステアリングを利用して局所化
– 発行、参照共にクラスタ外と通信しなくて良い
2004/05/27
SACSIS2004スライド資料
18
提案手法の実装
2004/05/27
SACSIS2004スライド資料
19
クラスタ型プロセッサへの実装
• タイミング・クリティカルパスへの追加ロジックを極力
さける
– 出来ることはフロントエンド、バックエンドで
– 依存予測情報はフロントエンド時に取得
• スケジューラ駆動
– ロード処理遅延が早まるなら、後続命令の発行も早まら
なくてはならない
• データ駆動方式では高速化できない
– ×:“アクセスした結果データがバッファにあったら~”
– フォワーディングをconsumer命令のソースオペランドに
対して行う
• consumer命令:ロード結果を使用する命令
2004/05/27
SACSIS2004スライド資料
20
store set予測と同様の
提案ハードウェア
メモリ依存予測器
過去依存のあった
ストア-ロード命令の対をPCで保持
load PC, store PC
依存予測器
(store set)
PC
fetch
store
クラスタ
cluster
store ID
decode
steer
rename
親store-consumer対を
同じクラスタへ
2004/05/27
依存検出器
address
issue
REG execute
LFB
store value/ID
“ローカルフォワードバッファ”
依存予測に基づいて
値をローカルに受け渡し
REG execute
LFB
SACSIS2004スライド資料
store value/ID
retire
issue
21
提案ハードウェア
confidence
store set
loadPC storePC
steered
LFSTID
LFSID cluster
counter
動的IDを保持
ステア先を
自分は親ストア
load PC, store PC 記録
依存予測器
(store set)
PC
store ID
decode
steer
rename
2004/05/27
依存検出器
store
cluster
STPC
store
fetch
storePC
issue
address
OP.B
OP.A
REG execute
LFB LFBへ値を保持
store value/ID
発行条件
issueOP.AREG
OP.B execute
LFB
通常のステアリング SACSIS2004スライド資料
store value/ID
スキームに従う
キャッシュへ
書き込み
STID value
retire
STID value
STID value
22
提案ハードウェア
confidence
store set
loadPC storePC
storePC
steered
LFSTID
LFSID cluster
counter
load PC, store PC
依存予測器
(store set)
loadPC
store
cluster
store ID
レジスタ依存
PC
解析
fetch
consumer
decode
steer
rename
2004/05/27
issue
親ストアIDと
ステア先を
渡す
依存検出器
address
OP.B
REG
execute
LFB
OP.A
store value/ID
発行条件
issueOP.AREG
OP.B execute
STIDLFB
親ストアのステア先へ
SACSIS2004スライド資料
store value/ID
<フォワーディングによる発行>
STID value
retire
STID value
STID value
23
パイプラインへの効果
分散メモリフォワーディング適用
store inst.
ISSUE
REG
READ
EXE
CUTE
MEM
data
forward
tag
forward
ISSUE
load inst.
speculative
wakeup
REG
READ
EXE
CUTE
data
forward
tag
local
forward forward
latency
prediction
ISSUE
consumer inst.
2004/05/27
MEM
SACSIS2004スライド資料
REG
READ
EXE
CUTE
MEM
24
評価
2004/05/27
SACSIS2004スライド資料
25
提案手法の評価
• 分散局所化の適用率
– ハードウェアはどの程度必要か
• もっとも影響があると思われるのはバッファサイズ
• 性能(IPC)への影響
– ゲインはあるか
• SPECint95から10種類のベンチマークにつ
いて、最大256M命令を実行して計測、平均
をとる
– タイミングシミュレータ使用
2004/05/27
SACSIS2004スライド資料
26
ベースライン設定(構成)
最初に紹介した“想定アーキテクチャ”
フェッチ/リタイアスループット
up to16insts/cycle
メモリ依存予測
wait table予測(16kエントリ)
クラスタ数
8clusters
各クラスタの構成
ooo発行キュー(64エントリ), 複製物理レジス
タ(256エントリ), ALU×1
D-cache
64kB, 2-waySA, 64byte lines
3 read ports 1read/write port
steering scheme
reg. dependence + load balance
(Parcerisa方式)
2004/05/27
SACSIS2004スライド資料
27
ベースライン設定(遅延)
総パイプライン段数
16stages
フロントエンド処理(fetch – dispatch)
11cycles
issue – issue latency
1cycle
execute latency (int)
1cycle
execute latency (int MULT)
15cycles
execute latency(float)
4cycles
クラスタ間通信遅延
2cycles
2004/05/27
SACSIS2004スライド資料
28
分散局所化の適用率
依存予測は成功してい
るが、バッファ容量が足
りていない
45%
40%
35%
ロード命令の何%が予測対象となり、
何%がフォワードされたか
正しく依存予測
(≒フォワード適用の上限)
30%
predict
25%
forwarded consumer/all
load
20%
15%
少ないエントリ数で
上限に近い値
10%
5%
フォワード適用
(高速化されたロード命令)
2004/05/27
128 entry LFB
64 entry LFB
32 entry LFB
16 entry LFB
8 entry LFB
4 entry LFB
2 entry LFB
1 entry LFB
0%
SACSIS2004スライド資料
1エントリ96bit
(STID32bit+value64bit)
とすると、128entryで
1.5Kbyte
29
IPCへのインパクト
分散投機メモリフォワーディ
ング
ベースライン
1.6
1.5
1.4
IPC
1.3
提案手法によるゲイン
1.2
1.1
1
0.9
0.8
1
2
3
4
5
6
7
D1 cache latency
2004/05/27
SACSIS2004スライド資料
8
キャッシュ参照遅延の設定
(クラスタ型アーキテクチャ
では右の方へシフトする)
30
まとめ
2004/05/27
SACSIS2004スライド資料
31
まとめ
• クラスタ型プロセッサのロード命令処理遅延に着目
– 参照遅延、発行遅延共に増大
– 対策は? クラスタ内への局所化
• 分散投機メモリフォワーディングの提案
– メモリ依存関係を予測して、メモリ依存のある命令同士を
同じクラスタへ割り当て
– クラスタ内に小容量のバッファを設け、値を受け渡す
• 評価
– 小容量のバッファを加えることにより、ロード命令の30%
以上を局所化(高速化)
– IPCへのインパクト
2004/05/27
SACSIS2004スライド資料
32
今後の課題
• 最適なステアリングの検討
– メモリ依存、レジスタ依存、クラスタ負荷の最適な
バランス
• 最適なメモリ構成の検討
– バンク分割型、複製型との比較評価
2004/05/27
SACSIS2004スライド資料
33