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