Transcript ppt - 早稲田大学
キャッシュヒント自動付加を用いた ソフトウェア高速化 早稲田大学 理工学研究科 情報・ネットワーク専攻 稲垣 良一 上田 和紀 FIT2005 研究の背景と目的 プロセッサとメモリの速度差の拡大 一般的な対処方法 メモリアクセス遅延の隠蔽 キャッシュの有効活用 メモリアクセスコストの 相対的な増加 キャッシュヒント (Itanium) 適切に使用することでキャッシュの有効活用 既存のコンパイラはキャッシュヒントを使用したメモリ アクセス命令を生成しない 研究の目的 ①コンパイル時のキャッシュヒント自動付加 ②キャッシュヒント付加によるソフトウェア高速化 FIT2005 発表の流れ 背景と目的 キャッシュヒント キャッシュヒント自動付加手法 - CHSU 評価・まとめ FIT2005 キャッシュヒント データを配置するキャッシュ階層を制御 取り込むキャッシュ階層、 LRU の更新、etc… データの局所性を意識したキャッシュの有効活用 Itanium プロセッサのキャッシュヒント メモリアクセス命令にヒントを付加する形式で表現 ストア・ロード命令に応じて4種類 例) ld4.nt1, st8.nta .nta ヒント データをキャッシュに最も残さないヒント データを L2 キャッシュだけに配置 LRU を更新しない ⇒一度使うだけで再利用しないメモリアクセスに有効 FIT2005 キャッシュヒント 通常のストア命令によるキャッシュの変化 .nta ヒントを付加したストア命令によるキャッシュの変化 cf. ストリーミングストア (Pentium3~) FIT2005 キャッシュヒントとコンパイラ 現状 既存のコンパイラはキャッシュヒントを 使用したコードを生成していない! GCC, Intel Compiler #pragma memref_control (Intel Compiler 9 ~) 関連研究 Beyls (Gent Univ) ら K.Beyls and E.D'Hollander. Compile-Time Cache Hint Generation for EPIC Architectures, In Proc. EPIC2, pp.19--29, Nov 2002. Reuse Distance に基づいてキャッシュヒントを選択 Open Research Compiler FIT2005 背景と目的 キャッシュヒント キャッシュヒント自動付加手法 - CHSU 評価・まとめ FIT2005 キャッシュヒントの自動付加手法 Source Program (C, C++, Fortran, etc…) Binary Program Compiler/Assembler/Linker Assembly Program Assembly Program (annotated Cachehint) Cachehint Annotation Unit (CHSU-core) CacheHint Supply Utility (CHSU) ・・・ 従来のコード生成 ・・・ 提案する手法 FIT2005 本手法の特徴 1. プログラミング言語に依存しない アセンブリプログラムを生成できるコンパイラが必要 使用するコンパイラも選択可能 2. 透過性 既存のコンパイラのラッパーとして動作 $ icc –O3 –o foo foo.c Intel Compiler の場合 $ chsu –O3 –o foo foo.c 本手法の場合 既存のコンパイラの最適化機能 + キャッシュヒント付加 3. ヒントの自動付加 ヒントを付加すべきメモリアクセス命令を自動的に選択 FIT2005 CHSUの設計・実装 Java で実装 Source Program フロントエンド CHSU-core Compiler/Assembler/Linker Assembly Program フロントエンド Binary Program Assembly Program (annotated Cachehint) Cachehint Annotation Unit (CHSU-core) コマンドラインの解析 設定ファイルの解析 コンパイラ、アセンブラの起動 アセンブリプログラムを CHSU-core に渡す FIT2005 CHSUの設計・実装 CHSU-core Source Program アセンブリプログラムの 解析 キャッシュヒントの付加 キャッシュヒント付加済 プログラムの出力 Binary Program FIT2005 Compiler/Assembler/Linker Assembly Program Assembly Program (annotated Cachehint) Cachehint Annotation Unit (CHSU-core) アセンブリプログラムの解析 3階層のデータ構造に分類 Program - プログラム Procedure - プロシージャ Block – アセンブリプログラム中 のラベルで区切られる部分 Block 単位で保持する情報 プログラム原文、命令の種類・数、 分岐先、etc… 以降の解析は Procedure 単位 で行う FIT2005 Block Program Block Procedure Block Block Block Block Block Block Block Procedure キャッシュヒントの付加方針 本研究では .nta ヒントを付加 .nta ヒント・・・1度使うだけで再利用しないメモリアクセスに有効 方針・・・プログラムの局所性に注目 多くのメモリアクセスがループ等の局所性の高い部分 で実行されている 1.局所性が高い部分 2.局所性が低い部分 3.(どちらでもない部分) FIT2005 それぞれの部分について、 メモリアクセスの再利用性 を仮定し、ヒントの付加方 針を導く キャッシュヒントの付加方針 (cont’d) 局所性に応じた仮定 局所性が高い部分について ストア命令 同じメモリアドレスにデータを何度もストアすることはない ⇒再利用しないメモリアクセスと仮定 ロード命令 同じデータを何度もロードすることはないが、同じキャッシュライン 上の別のメモリアドレスからデータがロードされる可能性はある ⇒キャッシュラインは再利用される ⇒再利用されるメモリアクセスと仮定 局所性が低い部分について 実行回数が他の部分に比べて相対的に少ない ⇒再利用しないメモリアクセスであると仮定 FIT2005 キャッシュヒントの付加方針 (cont’d) プログラムの局所性と.nta ヒント付加の関係 局所性の高い部分 局所性の低い部分 それ以外 ストア命令 ○ ○ × ロード命令 × ○ × どちらにも該当しなければ、ヒントは付加しない この方針に基づいてアセンブリプログラムから 局所性が高い部分 局所性が低い部分 を見つける FIT2005 .nta ヒントの付加 Procedure 単位で処理 Block 単位で CFG を構築 局所性の高い部分 自Blockへの分岐を持つBlock ループ構造そのもの Block の局所性が高いと判断 → ストア命令に .nta ヒントを付加 局所性の低い部分 実行回数が少ない Block CFG から判断 Block の局所性が低いと判断 → ストア・ロード命令に .nta ヒントを付加 FIT2005 label_a: … br label_p … label_q: … br.ret label_b: … label_r: br label_b … 背景と目的 キャッシュヒント キャッシュヒント自動付加手法 - CHSU 評価・まとめ FIT2005 評価 評価環境 – SGI Altix 350 Itanium2 1.4GHz L1D:16KB, L2:256KB, L3:3MB 使用コンパイラ Intel Compiler 8.1, GCC 3.2.3 CHSU を使用してキャッシュヒントを付加、性能比較 FFTE 4.0 FFT ライブラリ、キャッシュ内での高速な動作 ATLAS 3.6.0 自動チューニング機構を持つ数値計算ライブラリ NAS Parallel Benchmark 並列計算機用のベンチマーク集 FIT2005 評価(1) – FFTE 4.0 1次元FFT データサイズを変化させて性能を測定 キャッシュヒントの有無による性能を比較 15%性能向上 性能向上率 (%) 120 115 110 105 100 95 90 14 Itanium2 L3上限 15 16 20 19 18 17 FFTデータ数 (2^m) Intel Compiler 8.1 FIT2005 21 GCC 3.2.3 22 23 評価(1) – FFTE 4.0 N=217 Original w/Cache Hint L2 cache hit 0.981 0.982 L3 cache hit 0.401 0.551 IPC 1.703 1.754 Total stalls 0.625 0.605 プロセッサイベントの計測 15% 結果から Original w/Cache Hint L2 cache hit 0.979 0.979 L3 cache hit 0.331 0.337 IPC 1.541 1.570 Total stalls 0.668 0.662 FIT2005 L3 キャッシュのヒット率向上 N=217の場合で15% N=220 perfmon 使用 IPC の向上 Total stalls (全実行時間に 占めるプロセッサストールの 割合)の減少 評価(2) – ATLAS 3.6.0 行列積計算 データサイズを変化させて性能を測定 MFLOP ベースで 1%~2% の性能向 上 FIT2005 評価(3) – NPB 3.2 NAS Parallel Benchmark 3.2 今回使用したのは逐次実行版 (NPB-SER) Class W, Class A の二種類について評価 120 性能向上率(%) 110 100 90 80 70 EP MG CG FT Class W FIT2005 IS Class A LU SP BT まとめ 既存のコンパイラを使用して、コンパイル時に キャッシュヒントを付加する手法を提案した 高い汎用性 L3 キャッシュのヒット率向上 → 全体性能向上 今後の課題 性能評価の充実 キャッシュヒント付加方針の検討 バイナリプログラムに対するキャッシュヒント付加 CHSU 公開中 http://www.ueda.info.waseda.ac.jp/~inagaki/chsu/ FIT2005