データ値の局所性を利用した ライン共有キャッシュの提案 九州大学大学院 ○岡 慶太郎 福本 尚人 井上 弘士 村上 和彰 1 キャッシュメモリの大容量化 • マルチコア・プロセッサが主流 • メモリウォール問題の深刻化 – メモリアクセス要求増加 – IOピンの制限 →大容量のLL(Last Level)キャッシュを搭載 8MBの L3キャッシュを搭載 Core i7のチップ写真* * http://www.atmarkit.co.jp/fsys/zunouhoudan/102zunou/corei7.html 2 キャッシュメモリの大容量化の問題点 • リーク消費電力増加 – 容量1MB→8MBで8倍* • アクセスレイテンシ増加 – 容量1MB→8MBで2.1倍* 大幅な面積増加を伴わず, オフチップメモリアクセス回数を削減する手法が必要 * CACTIによりブロックサイズ64B,連想度8で実験した結果 3 目次 • • • • 研究背景 着目点:データ値の局所性 ライン共有キャッシュ 評価 – ミス率,面積,L1ミスペナルティ • まとめ • 今後の課題 4 従来型キャッシュメモリは 容量を無駄遣い!? • 従来型キャッシュメモリのキャッシング方法 – 参照アドレスに基づいてブロックの格納場所を決定 • データ値の局所性が高い データ値の局所性:メモリアドレスが異なる多数のデータが同一の値を有する性質 • 仮説 – キャッシュ内に同一データ値を有するブロックが多数存在 参照アドレス タグ インデックス 0100 001 書込みブロック A LLキャッシュメモリ インデックス タグ 000 001 0100 010 011 100 101 110 111 ライン A ブロックの格納場所 ブロック: キャッシュのレベル間で 取り交わすデータ データ値: ブロックのデータの値 B 5 従来型キャッシュメモリは 容量を無駄遣い!? • 従来型キャッシュメモリのキャッシング方法 – 参照アドレスに基づいてブロックの格納場所を決定 • データ値の局所性が高い データ値の局所性:メモリアドレスが異なる多数のデータが同一の値を有する性質 • 仮説 – キャッシュ内に同一データ値を有するブロックが多数存在 参照アドレス タグ インデックス 0000 101 書込みブロック A LLキャッシュメモリ インデックス タグ 000 001 0100 010 011 100 101 0000 110 111 ライン A A B ブロックの格納場所 ブロック: キャッシュのレベル間で 取り交わすデータ データ値: ブロックのデータの値 6 従来型キャッシュメモリにおける データ値の局所性分析 キャッシュメモリ内のデータ値の局所性を平均圧縮率を用いて分析 1 平均圧縮率=𝑛 𝑛 キャッシュメモリ内のユニークなデータ値の数 𝑖=0 キャッシュメモリ内の有効ブロック数 n:ブロック置き換え回数 平均圧縮率が低い程,キャッシュメモリ内のデータ値の局所性が高い 平均圧縮率 キャッシュ容量:1MB 0.8 0.6 0.4 0.2 0 ブロックサイズ 64B 32B 16B 8B キャッシュメモリ A B A C B 3 5 圧縮率= 多くのプログラムでキャッシュメモリ内のデータ値の局所性が高い 7 研究概要 • 着目点 – キャッシュメモリ内に同一値を有するデータが多く存在 • 研究目的 – LLキャッシュメモリの面積を大きく増加することなく LLキャッシュミス率を削減 • 提案手法 – 同一データ値を有するラインを共有し,容量を効率的 に利用 – 同容量の従来型キャッシュと比較し,最大でミス率を 18ポイント削減可能 8 目次 • • • • 研究背景 着目点:データ値の局所性 ライン共有キャッシュ 評価 – ミス率,面積,L1ミスペナルティ • まとめ • 今後の課題 9 ライン共有キャッシュの概念 LSC(Line Sharing Cache) 従来型キャッシュ ライン共有キャッシュ 参照アドレスに基づきブロックを 格納するラインを決定 タグアレイ データアレイ 同一データ値を有するブロックを 格納するラインを1箇所に限定 タグアレイ A データアレイ A A … … … A タグの エントリ数増加 従来型キャッシュに比べ,より多くのデータ値を キャッシュメモリに格納可能 10 解決すべき課題その1 ~如何にしてタグとラインを紐付けるか?~ • タグに対応するラインを特定する必要あり • 問題点:各タグに対応するラインを特定不可能 • 解決策:行番号によるラインの区別と各タグに行ポインタ配置 タグアレイ データアレイ タグ ライン 0100 … 0110 ? ? 11111 各タグは対応するラインを 特定できない 11 解決すべき課題その1 ~如何にしてタグとラインを紐付けるか?~ • タグに対応するラインを特定する必要あり • 問題点:各タグに対応するラインを特定不可能 • 解決策:行番号によるラインの区別と各タグに行ポインタ配置 タグアレイ データアレイ タグ 0100 … 0110 ? ? 行番号 000 001 010 011 100 101 110 111 ライン 11111 各タグは対応するラインを 特定できない 12 解決すべき課題その1 ~如何にしてタグとラインを紐付けるか?~ • タグに対応するラインを特定する必要あり • 問題点:各タグに対応するラインを特定不可能 • 解決策:行番号によるラインの区別と各タグに行ポインタ配置 タグ・ポインタアレイ タグアレイ タグ 行ポインタ 0100 100 … … 0110 100 データアレイ 行番号 000 001 010 011 100 101 110 111 ライン 11111 13 解決すべき課題その2 ~如何にして効率の良いデータ検索を実現するか?~ • 書込み動作:データアレイの全ラインを探索する必要あり • 問題点:検索コストが大 • 解決策:データ値を用いたハッシング タグ・ポインタアレイ インデックス 0000 参照アドレス 0001 タグ インデックス 0010 0011 0100 0001 タグ 0100 11111 1001 1011 1100 1101 1110 1111 0110 … … 書込みブロック 行ポインタ 111 データアレイ 行番号 000 001 010 011 = 100 101 一致 110 111 ライン 11111 書 き 込 み デ ー タ 値 の 検 索 14 解決すべき課題その2 ~如何にして効率の良いデータ検索を実現するか?~ • 書込み動作:データアレイの全ラインを探索する必要あり • 問題点:検索コストが大 • 解決策:データ値を用いたハッシング タグ・ポインタアレイ タグ 書込みブロック 0110 11111 1001 1011 1100 1101 1110 1111 行ポインタ … 0100 … インデックス 0000 参照アドレス 0001 タグ インデックス 0010 0011 0100 0001 111 データアレイ 行番号 書 き 000 込 001 み 010 デ 011 ー 100 11111 タ 101 行番号 値 110 のサイズ の 検 11111 111 索 行番号とデータ値の下位3ビット 15 を対応付けてブロックを配置 ライン 解決すべき課題その2 ~如何にして効率の良いデータ検索を実現するか?~ • 書込み動作:データアレイの全ラインを探索する必要あり • 問題点:検索コストが大 • 解決策:データ値を用いたハッシング タグ・ポインタアレイ インデックス 0000 参照アドレス 0001 タグ インデックス 0010 0011 0100 0001 タグ 行ポインタ 0100 … … 1001 0110 1011 行番号のサイズ 11111 1100 1101 1110 書込みデータ値の下位3ビット 1111 に対応する行番号にアクセス 111 書込みブロック データアレイ 行番号 000 001 010 011 = 100 一致 101 110 111 ライン 11111 書込みデータ値がラインに存在 (データ値ヒット) 書 き 込 み デ ー タ 値 の 検 索 16 解決すべき課題その2 ~如何にして効率の良いデータ検索を実現するか?~ • 書込み動作:データアレイの全ラインを探索する必要あり • 問題点:検索コストが大 • 解決策:データ値を用いたハッシング タグ・ポインタアレイ インデックス 0000 参照アドレス 0001 タグ インデックス 0010 0011 0100 0001 タグ 0100 行ポインタ 111 … … 1001 0110 1011 行番号のサイズ 11111 1100 1101 1110 書込みデータ値の下位3ビット 1111 に対応する行番号にアクセス 111 書込みブロック データアレイ ライン 000 行番号を行ポインタに 001 010書込み 011 100 101 110 11111 111 書込みデータ値がラインに存在 (データ値ヒット) 17 解決すべき課題その3 ~如何にしてデータアレイでの書込み競合を回避するか?~ • データアレイ:各行番号に1ラインを対応付け • 問題点:ブロックの追出しが頻発 • 解決策:データアレイの水平分割と列ポインタの導入 データアレイ タグ・ポインタアレイ タグ 書込みブロック 0110 00111 1001 1011 1100 1101 1110 1111 行ポインタ … 0100 … インデックス 0000 参照アドレス 0001 tag index 0010 0011 0100 0001 111 行番号 000 001 010 011 = 100 一致101 110 111 ライン 11111 18 解決すべき課題その3 ~如何にしてデータアレイでの書込み競合を回避するか?~ • データアレイ:各行番号に1ラインを対応付け • 問題点:ブロックの追出しが頻発 • 解決策:データアレイの水平分割と列ポインタの導入 データアレイ タグ・ポインタアレイ インデックス 0000 参照アドレス 0001 tag index 0010 0011 0100 0001 タグ 行ポインタ 0100 1001 0110 1011 行番号のサイズ 00111 1100 1101 1110 書込みデータ値の下位3ビット 1111 に対応する行番号にアクセス … … 書込みブロック 111 行番号 000 001 010 011 100 101 110 111 ライン ブロックの追出し が必要 11111 書込みデータ値がラインに非存在 (データ値ミス) 19 解決すべき課題その3 ~如何にしてデータアレイでの書込み競合を回避するか?~ • データアレイ:各行番号に1ラインを対応付け • 問題点:ブロックの追出しが頻発 • 解決策:データアレイの水平分割と列ポインタの導入 データアレイ タグ・ポインタアレイ タグ 書込みブロック 0110 00111 1001 1011 1100 1101 1110 1111 行ポインタ … 0100 … インデックス 0000 参照アドレス 0001 tag index 0010 0011 0100 0001 111 行番号 000 001 010 011 100 101 110 111 ライン 11111 20 解決すべき課題その3 ~如何にしてデータアレイでの書込み競合を回避するか?~ • データアレイ:各行番号に1ラインを対応付け • 問題点:ブロックの追出しが頻発 • 解決策:データアレイの水平分割と列ポインタの導入 データアレイ タグ・ポインタアレイ タグ 書込みブロック 0110 00111 1001 1011 1100 1101 1110 1111 行ポインタ 行番号 00 01 10 11 ライン ライン 11111 … 0100 … インデックス 0000 参照アドレス 0001 tag index 0010 0011 0100 0001 111 各行番号に複数のラインを対応付け 21 解決すべき課題その3 ~如何にしてデータアレイでの書込み競合を回避するか?~ • データアレイ:各行番号に1ラインを対応付け • 問題点:ブロックの追出しが頻発 • 解決策:データアレイの水平分割と列ポインタの導入 データアレイ タグ・ポインタアレイ タグ 書込みブロック 0110 00111 1001 1011 1100 1101 1110 1111 行ポインタ 行番号 00 01 10 11 ライン ライン 11111 … 0100 … インデックス 0000 参照アドレス 0001 tag index 0010 0011 0100 0001 111 列番号0 列番号1 行番号,列番号により ラインを区別 22 解決すべき課題その3 ~如何にしてデータアレイでの書込み競合を回避するか?~ • データアレイ:各行番号に1ラインを対応付け • 問題点:ブロックの追出しが頻発 • 解決策:データアレイの水平分割と列ポインタの導入 列ポインタ タグ・ポインタアレイ タグ 0110 00111 1001 1011 1100 1101 1110 1111 … 書込みブロック 行ポインタ … 0100 … インデックス 0000 参照アドレス 0001 tag index 0010 0011 0100 0001 11 1 行番号 00 01 10 11 データアレイ ライン ライン 11111 列番号0 列番号1 列番号を格納するために 列ポインタの導入 23 解決すべき課題その3 ~如何にしてデータアレイでの書込み競合を回避するか?~ • データアレイ:各行番号に1ラインを対応付け • 問題点:ブロックの追出しが頻発 • 解決策:データアレイの水平分割と列ポインタの導入 列ポインタ タグ・ポインタアレイ インデックス 0000 参照アドレス 0001 tag index 0010 0011 0100 0001 タグ 行ポインタ 0100 … 1001 0110 1011 行番号のサイズ 00111 1100 1101 1110 書込みデータ値の下位2ビット 1111 に対応する行番号にアクセス … … 書込みブロック 11 1 行番号 00 01 10 11 = データアレイ ライン ライン 11111 00111 列番号0 一致データ値ミス 列番号1 ブロックを追い出すことなく 書込み 24 読み出し動作 読出し要求発行後の動作 1. インデックスアクセス 2. タグ比較 3. ポインタ読出し 4. ブロック読出し 列ポインタ タグ・ポインタアレイ タグ 行ポインタ … 1001 1011 1100 1101 1110 1111 0110 01 0 … 0100 … インデックス 0000 参照アドレス 0001 tag index 0010 0011 0100 0001 11 1 行番号 00 01 10 11 データアレイ ライン ライン 11101 列番号0 列番号1 25 読み出し動作 読出し要求発行後の動作 1. インデックスアクセス 2. タグ比較 3. ポインタ読出し 4. ブロック読出し 列ポインタ タグ・ポインタアレイ インデックス 0000 参照アドレス 0001 tag index 0010 0011 0100 0001 タグ 行ポインタ 0100 … 0110 0 … … 1001 1011 1100 1101 1110 1111 01 11 1 行番号 00 01 10 11 = 一致 データアレイ ライン ライン 11101 列番号0 列番号1 26 読み出し動作 読出し要求発行後の動作 1. インデックスアクセス 2. タグ比較 同時に動作可能 3. ポインタ読出し 列ポインタ 4. ブロック読出し データアレイ タグ・ポインタアレイ タグ 行ポインタ … 1001 1011 1100 1101 1110 1111 0110 01 0 … 0100 … インデックス 0000 参照アドレス 0001 tag index 0010 0011 0100 0001 11 1 行番号 00 01 10 11 ライン 11101 列番号0 01 ライン 列番号1 0 27 読み出し動作 読出し要求発行後の動作 1. インデックスアクセス 2. タグ比較 同時に動作可能 3. ポインタ読出し 列ポインタ 4. ブロック読出し データアレイ タグ・ポインタアレイ タグ 行ポインタ … 1001 1011 1100 1101 1110 1111 0110 01 0 … 0100 … インデックス 0000 参照アドレス 0001 tag index 0010 0011 0100 0001 11 1 行番号 00 01 10 11 ライン ライン 11101 列番号0 01 0 列番号1 11101 28 従来型キャッシュVSライン共有キャッシュ LSCの従来型キャッ シュに対する違い ミス率 減少 理由 データアレイ容量を有効利用 読出し レイテンシ 変化なし 書込み レイテンシ 増加 • 書込みデータ値の探索 • 追出しの動作が複雑化 データアレイ に対する 書込み回数 減少 データ値ヒットの場合データアレイ に対する書込みを行わない タグとポインタを同時に読み出し 29 目次 • • • • 研究背景 データ値の局所性 ライン共有キャッシュ 評価 – ミス率,面積,L1ミスペナルティ • まとめ • 今後の課題 30 評価指標と求め方 • 面積 – 実装に必要なSRAMビット数で評価 • L1ミスペナルティ – モデルにより評価 • L2アクセスレインテンシ→キャッシュメモリシミュレータCACTI • キャッシュミス率 – 従来型キャッシュのミス率と平均圧縮率からの見積もりにより評価 • 従来型キャッシュのミス率→マルチコアシミュレータM5 従来型キャッシュ のL2ミス率 平均圧縮率 ベンチマーク・ プログラム M5によるシミュ splash2 レーション L2アクセス トレース 容量 LSCのミス 率に換算 ミス率 LSCのミス率の評価方法 平均圧縮率 容量 31 評価方法 LSCの容量 従来型キャッシュ LSC L2キャッシュサイズ 従来型キャッシュのミス率 L2キャッシュミス率 L2キャッシュミス率 • 面積:ミス率を従来型キャッシュ8MBにおける値に固定 • ミス率:データアレイ容量を1MBに固定 • L1ミスペナルティ:データアレイ容量を1MBに固定 従来型 キャッシュ LSC LSCのミス率 必要ビット数 8MB データメモリ:1MB ミス率およびL1ミスペナルティの比較 面積の比較 M5の評価環境 コア数 8 L1キャッシュ サイズ:32KB,連想度:2,ブロックサイズ:64B L2キャッシュ 連想度:8ブロックサイズ:64B 32 キャッシュミス率一定とした場合の 面積削減効果 ブロックサイズ64B,従来型キャッシュ容量8MB 圧縮率 0.21 0.69 0.43 必要メモリ容量[MB] データアレイ容量 12 10 8 6 4 2 0 0.48 0.86 ポインタアレイ容量 0.55 タグ容量 52%面積削減 base LSC base LSC base LSC base LSC base LSC base LSC Cholesky Barnes FFT FMM LUCon ベンチマーク・プログラム OceanCon 圧縮率が低い程,面積を大幅に削減 33 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 ブロックサイズ64B,データアレイ容量1MB base LSC 圧縮率 0.21 18ポイント 削減 0.8 L2キャッシュミス率 キャッシュミス率 データアレイ容量を一定とした場合の ミス率削減効果 0.6 0.4 ミス率を大幅に 0.2 削減できない 0 1 8 16 32 L2キャッシュ容量[MB] 容量を増加するとミス率がすぐに飽和 容量を増加した場合,ミス率の減少幅小 ベンチマーク・プログラム すべてのプログラムでミス率を削減 34 1 0.80.9 0.8 0.60.7 0.6 0.40.5 0.20.4 0.3 00.2 1 0.1 0 ブロックサイズ64B,データアレイ容量1MB base LSC 圧縮率 0.55 キャッシュミス率 L2キャッシュミス率 データアレイ容量を一定とした場合の ミス率削減効果 ミス率を18ポイント削減 8 16 32 L2キャッシュ容量[MB] 容量を増加する場合,ミス率の減少幅大 ベンチマーク・プログラム すべてのプログラムでミス率を削減 35 データアレイ容量一定とした場合の L1ミスペナルティ削減効果 L1ミスペナルティ比 ブロックサイズ64B,データアレイ容量1MB 従来型キャッシュのL1ミスペナルティで正規化 1.2 1 0.8 0.6 0.4 0.2 0 L1ミスペナル ティ30%削減 ベンチマーク・プログラム アクセス時間を考慮した場合でも L1ミスペナルティを大幅に削減 36 まとめ • データ値の局所性を利用したライン共有キャッ シュを提案 – ミス率一定条件において • 面積:最大52%削減 – 容量一定条件において • ミス率:最大18ポイント削減 • L1ミスペナルティ:最大30%削減 • ライン共有キャッシュの有効性を確認 37 今後の課題 • ライン共有キャッシュの詳細な評価 – キャッシュミス率 – アクセスレイテンシ – アクセスあたりの消費電力 • ライン共有キャッシュの適用範囲を拡張 – LSCはデータアレイへの書込み回数を削減 →不揮発性メモリに利用 • 既存研究との比較 38 ご清聴ありがとうございました 39 バックアップスライド 40 既存研究 Frequent Value Compression in Data Cache • 目的 – L1キャッシュの消費電力大 • アプローチ – L1キャッシュにCC(Compression Cache)を導入 • ブロックのデータ値がFVT(Frequent Value Table)に存在 →ブロックを半分に圧縮し格納 • 結果 – ミス率,消費電力,オフチップのトラフィックを大幅に削減 • LSCとの違い – 圧縮対象のデータを予め決定 Jun Yang,et al.”Frequent Value Compression in Data Caches”,MICRO’00 41 既存研究 Dynamic Zero Compression for Cache Energy Reduction • 目的 – L1キャッシュの消費電力大 • アプローチ – L1キャッシュにFVC(Frequent Value Cache)を導入 • 結果 – ミス率,消費電力,オフチップのトラフィックを大幅に削減 • LSCとの違い – 圧縮対象データを予め決定 Jun Yang,et al.”Frequent Value Compression in Data Caches”,MICRO’00 42 質問内容 • ミス率の求め方について – 質問圧縮率で大丈夫なのか (A,A,A,B,C),(A,A,B,B,C)だと圧縮率が同じ – 解答 今のままではダメ • 手法について – 質問 データ値が0のやつばっかりだったら意味なくない? – 解答 その通りだがデータにより示されている. • 圧縮率について – 質問 具体的にはどんなデータを圧縮しているのか?(浮動小数点?アドレスポインタ?) 43 ライン共有キャッシュ アーキテクチャ データアレイ タグ ポインタ 00 行 番 01 号 10 11 CAM CAM CAM v CAM イ0 ン1 デ2 ッ ク3 ス 4 5 6 7 タグ・ポインタアレイ v タグ ポインタ ライン 10011 ライン 11011 データウェイ0 データウェイ1 (列番号0) (列番号1) ラインセット タグウェイ0 タグウェイ1 ポインタセット 44 データ値の局所性に着目 • データ値の局所性 – メモリアドレスが異なるデータが同一の値を持つ性質 • 同一データ値の書込み頻度分析 1. 書込みデータ値のごとに書込み回数を取得 • 書込みデータ値:プロセッサがストアする64bitのデータ 2. 書込み回数が多い順に並び替え 3. 書込み回数を累計 4. 書込みデータ値の種類数と累計書込み回数をプロット データ 書込み回数 データ 書込み回数 累計書込み回数 40 35 A 10回 B 20回 20回 30 25 10回 B 20回 A C 3回 D 5回 D 5回 C 3回 30回 20 35回 10 38回 0 15 5 45 1 2 3 4 同一データ値の書込み頻度分析 FFT 累計書き込み回数 Cholesky 75% Barnes 70% 65% 20% 20% 書込みデータ値の種類数 FMM 20% LUContig OceanContig 55% 50% 25% 20% 20% 20% 多くのプログラムでデータ値の局所性が高い 46 キャッシュミス率 データアレイ容量を一定とした場合の ミス率削減効果 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 ブロックサイズ64B,データアレイ容量1MB base LSC 0.33 0.55 0.21 0.61 0.44 18ポイント 削減 0.58 0.50 0.72 0.68 0.37 0.55 0.39 ベンチマーク・プログラム すべてのベンチマークでミス率を削減 47 容量の影響 L2キャッシュミス率 base LSC Cholesky 4MB 1MB FFT LUContig 8MB 4MB 2MB 1MB 8MB 4MB 2MB 8MB 2MB 1MB 8MB 4MB 2MB 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 1MB キャッシュミス率 ブロックサイズ:64B OceanContig • ミス率削減ポイント増加FFT 容量を増加するとミス率削減幅大 • ミス率削減ポイント低下:LUContig,OceanContig 容量を増加するとミス率削減度 合い小 48 容量の影響 L1ミスペナルティ ブロックサイズ:64B 1 0.8 0.6 0.4 0.2 Cholesky FFT LUContig 8MB 4MB 2MB 1MB 8MB 4MB 2MB 1MB 8MB 4MB 2MB 1MB 8MB 4MB 2MB 1MB 0 OceanContig • ミス率削減ポイント増加FFT • ミス率削減ポイント低下:LUContig,OceanContig L1ミスペナルティはキャッシュミス率と同じ傾向 49 ブロックサイズの影響 L2キャッシュミス率 L2キャッシュ容量1MB base 19%ミス 率削減 1 キャッシュミス率 0.8 LSC 12%ミス 率削減 17%ミス 率削減 0.6 18%ミス 率削減 0.4 0.2 0 8 16 32 64 Cholesky 8 16 32 64 FFT 8 16 32 64 LUContig 8 16 32 64 OceanContig • ブロックサイズ減少 • ミス率削減:Cholesky,FFT • ミス率増加:LUContig,OceanContig 空間的局所性を利用できないため効果が低い 50 ブロックサイズの影響 L1ミスペナルティ L1ミスペナルティ L2キャッシュ容量1MB ブロックサイズ64BのL1ミスペナルティで正規化 L1ミスペナルティ 25%増加 L1ミスペナルティ 17%削減 1.4 1.2 1 0.8 0.6 0.4 0.2 0 L1ミスペナルティ 18%削減 L1ミスペナルティ 22%削減 8 16 32 64 8 16 32 64 8 16 32 64 Cholesky FFT LUContig • ブロックサイズ減少 • ミス率削減:Cholesky,FFT • ミス率増加:LUContig,OceanContig L1ミスペナルティはキャッシュミス率と同じ傾向 8 16 32 64 OceanContig 51 L1ミスペナルティのモデル 52 動作フロー 53 読み出し 開始 アドレス 入力 No 主記憶からデータ読み出し タグ入替え 書き込み操作 終了 Tag比較? Yes ポインタアレイから 読出し対象の 行ポインタと列ポインタ を読み出し データアレイから 読出し対象データ 読み出し 終了 54 書きこみ 開始 アドレスと データ入力 No 主記憶からデータ読出し Tag一致? タグ更新 Yes 書き込み操作 終了 55 書きこみ操作 56 評価 57 評価環境 L1ミスペナルティ • • • • 周波数:2GHz L2レイテンシ:7cc L2アクセス時間:3.37179ns 主記憶アクセスレイテンシ:200cc テクノロジサイズ 90nm キャッシュ容量 1MB ブロックサイズ 64B バス幅 256B Cactiの設定値 58 圧縮率の求め方 59 ライン共有キャッシュの 面積の見積もり方法 • LSCのデータアレイ容量 – 圧縮率×従来型キャッシュのデータアレイ容量 • ポインタアレイ容量 – ポインタのビット数×セット数×連想度 • ポインタのビット数 – Log(LSCのデータアレイ容量/(ブロックサイズ)) • セット数,連想度 – 従来型キャッシュにおけるセット数と同じ • タグアレイ – 従来型キャッシュの容量と同じ 60 ライン共有キャッシュにおける L2キャッシュミス率の見積もり方法 LSCキャッシュ に対する圧縮率 従来型キャッシュ容量[MB] 従来型キャッシュの容量と圧縮率CRの関係 を求める ③ 見かけ容量= 見かけ容量= LSC容量 圧縮率(CR) 2M 4M 0.5 LSCの見かけ容量を求める 0.5 2M LSCキャッシュの容量 LSCの容量と圧縮率CRの関係を求める ④ L2キャッシュ ミス率 従来型キャッシュ に対する圧縮率 LSC容量:2MBにおけるL2キャッシュミス率を求める場合 ① ② ミス率 4M L2キャッシュ容量[MB] 容量とL2キャッシュミス率の関係から 61 L2キャッシュミス率を求める
© Copyright 2024 ExpyDoc