クラスタ型プロセッサのための 分散投機メモリフォワーディング 入江英嗣#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
© Copyright 2024 ExpyDoc