キャッシュ 頻繁にアクセスされるデータを入れておく小規模高速なメモリ 当たる(ヒット)、はずれる(ミスヒット) マッピング(割り付け)

Slides:



Advertisements
Similar presentations
情報理工学系研究科 コンピュータ科学専攻 上嶋裕樹
Advertisements

キャッシュの高速化手法と仮想記憶 天野英晴.
07. 値予測 五島 正裕.
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
■ディレクトリエントリキャッシュ linuxではdentryという構造体に、ファイルパス名の情報を格納しメモリ上にキャッシングしている。
情報検索概説II 第8回 パソコン組み立てと記憶装置 1999/11/25.
計算機工学III オペレーティングシステム #14 ファイル: より進んだファイルシステム 2006/07/21 津邑 公暁
07. 値予測 五島 正裕.
ヘテロジニアスマルチコアプロセッサ 環境を対象としたキャッシュシステム 自動生成ツールの開発
記憶の階層とキャッシュ 天野英晴.
情報システム基盤学基礎1 コンピュータアーキテクチャ編 第6回 記憶階層
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
Ibaraki Univ. Dept of Electrical & Electronic Eng.
計算機システムⅡ キャッシュと仮想記憶 和田俊和.
ダイレクトマップキャッシュの構成 例: メモリアドレス=32ビット キャッシュ容量C=256Kbyte C=B×A×S ブロックサイズ(ラインサイズ)B=32byte セット数(ブロック数、ライン数)S=8K アソシアティビティA=1 (ダイレクトマップは1) メモリアドレス=32ビット タグ 14ビット.
第6回 仮想記憶とページング ページング ページ取り出し方式 ページ置き換え方式 中間テスト(40分)
オペレーティングシステム 第10回 仮想記憶管理(1)
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
メモリに関する話題(1) - Cache Memory (1) - Cache
基本情報技術概論(第12回) 埼玉大学 理工学研究科 堀山 貴史
計算機システムⅡ 主記憶装置とALU,レジスタの制御
情報塾( ) CPUとメモリがどんなふうに動くのだろう。 レジスタやI/O プログラムの実行、マシン語。
計算機システム概論・4回目 本日のトピック:メモリの管理と仮想記憶 メモリ管理におけるOSの役割 メモリの割当方法について
オペレーティングシステム 第11回 仮想記憶管理(2)
オペレーティングシステム 第9回 実記憶管理 38号館4階N-411 内線5459
Explorations in Symbiosis on two Multithreaded Architectures
記 憶 管 理(2) オペレーティングシステム 第10回.
小型デバイスからのデータアクセス 情報処理系論 第5回.
オペレーティングシステム 第12回 仮想記憶管理(3)
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
LogStructuredFileSystem Servey
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
メモリに関する話題(2) - 仮想メモリ Memory (2) – Virtual Memory
計算機システムⅡ 入出力と周辺装置 和田俊和.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
専門演習Ⅰ 国際経済学部 国際産業情報学科 2年 石川 愛
コンピュータ基礎 記憶階層とキャッシュ テキスト第10章
メモリ管理 4.3, 4.4 章 さだ.
Lazy Release Consistency
キャッシュの高速化手法と仮想記憶 作りながら学ぶコンピュータアーキテクチャ(改訂版)授業資料 テキスト152-157ページ対応 天野英晴.
作りながら学ぶコンピュータアーキテクチャ(改訂版)授業資料 テキスト ページ対応 天野英晴
非レイテンシ指向 レジスタ・キャッシュ・システム
コンピュータを知る 1E16M009-1 梅津たくみ 1E16M017-8 小沢あきら 1E16M035-0 柴田かいと
Advanced Computer Architecture
オペレーティングシステム イントロダクション
Advanced Computer Architecture
Ibaraki Univ. Dept of Electrical & Electronic Eng.
アルゴリズムとデータ構造 補足資料5-1 「メモリとポインタ」
Advanced Computer Architecture
オペレーティングシステムJ/K (仮想記憶管理)
コンピュータの仕組み 1E16M048 圓谷 英一 1E16M050 徳弘 徹也 1E16M051 戸張 将義 1E16M052 飛田 優輝
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
先進的計算基盤システムシンポジウム SACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」
メモリ投機を支援する CMPキャッシュコヒーレンスプロトコルの検討
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
慶應義塾大学理工学部 天野英晴 共有メモリ型計算機  慶應義塾大学理工学部 天野英晴
コンピュータの仕組み 〜ハードウェア〜 1E15M009-3 伊藤佳樹 1E15M035-2 柴田将馬 1E15M061-1 花岡沙紀
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
コンピュータアーキテクチャ 第 9 回.
第4回 メモリ管理 主記憶(メインメモリ)の管理 固定区画方式と可変区画方式 空き領域の管理 スワッピング.
Mondriaan Memory Protection の調査
コンピュータアーキテクチャ 第 5 回.
コンピュータアーキテクチャ 第 4 回.
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 5 回.
コンピュータ工学基礎 マルチサイクル化とパイプライン化 テキスト9章 115~124
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Presentation transcript:

キャッシュ 頻繁にアクセスされるデータを入れておく小規模高速なメモリ 当たる(ヒット)、はずれる(ミスヒット) マッピング(割り付け) CacheであってCashではないので注意 元々はコンピュータの主記憶に対するものだが、IT装置の色々なところに使われるようになった ディスクキャッシュ、ページキャッシュ..etc.. 当たる(ヒット)、はずれる(ミスヒット) ミスヒットしたら、下のメモリ階層から取ってきて入れ替える(リプレイス) マッピング(割り付け) 主記憶とキャッシュのアドレスを高速に対応付ける Direct map ⇔ Full associative cache 書き込みポリシー ライトスルー、ライトバック リプレイス(追い出し)ポリシー LRU (Least Recently Used)

アドレスマッピング(割り付け) ワード単位に割り付けるのは効率が悪い 順番に割り付けていって1周したら、元に戻る 一定の連続アドレスのブロック(ライン)を管理単位とする ブロックサイズは8byte-128byte程度 ここでは8word(16byte)を使う やや小さい 順番に割り付けていって1周したら、元に戻る キャッシュのブロック数(セット数)が2のn乗、ブロックサイズが2のm乗とすると、、、 残り n m タグ (キー) インデックス ブロック内アドレス

… Direct Map のアドレス 割り付け 主記憶:1024ワード ブロックサイズ:8ワード キャッシュ:64ワード =8ブロック 0000000000     … 0000000111 0000010000     … 0000010111 0000100000     … 0000100111 0000110000     … 0000110111 0001000000     … 0001000111 0001010000     … 0001010111 1111111000     … 1111111111 0000001000     … 0000001111 0000011000     … 0000011111 0000101000     … 0000101111 0000111000     … 0000111111 0001001000     … 0001001111 1111110000     … 1111110111 … Direct Map のアドレス 割り付け 主記憶:1024ワード ブロックサイズ:8ワード キャッシュ:64ワード        =8ブロック 000 001 010 011 100 101 110 111 Index Tag (Key) 0000101000     … 0000101111 ブロック内 アドレス

Direct Map From CPU 0011010 0011 010 100 … … 010 010 Main Memory (1KB=128Lines) Yes:Hit = Data 0011 Cache (64B=8Lines) Cache Directory (Tag Memory) 8 entries X (4bit ) ディレクトリは小さくて済む

Direct Map (Conflict Miss) From CPU 0000010 0000 010 100 … … 010 010 Main Memory No: Miss Hit = 0000 0011 Cache 010を共通するキャッシュラインは Conflict Missを起こす Cache Directory (Tag Memory)

… 2-way set associative のアドレス 割り付け 00 01 10 11 Index Tag (Key) キャッシュ内 0000000000     … 0000000111 0000010000     … 0000010111 0000100000     … 0000100111 0000110000     … 0000110111 0001000000     … 0001000111 0001010000     … 0001010111 1111111000     … 1111111111 0000001000     … 0000001111 0000011000     … 0000011111 0000101000     … 0000101111 0000111000     … 0000111111 0001001000     … 0001001111 1111110000     … 1111110111 … 2-way set associative のアドレス 割り付け 00 01 10 11 Index Tag (Key) 0000101000     … 0000101111 キャッシュ内 アドレス

2-way set associative Map From CPU 0011010 00110 10 100 … … 10 Main Memory (1KB=128Lines) Yes: Hit = Data 00110 Cache (64B=8Lines) 10 No = 00000 Cache Directory (Tag Memory) 4 entries X 5bit X 2

2-way set associative Map From CPU 0000010 0011010 00000 10 100 … … 10 Main Memory (1KB=128Lines) No = 00110 Cache (64B=8Lines)   10 Data Yes: Hit = 00000 Cache Directory (Tag Memory) 4 entries X 5bit X 2 Conflict Missが減る

4-way set associative Map From CPU 0000010 0011010 001101 100 … … Main Memory (1KB=128Lines) 001101 = Data = = 000000 Cache (64B=8Lines) Cache Directory (Tag Memory) 2 entries X 6bit X 4 =

8-way set associative Map → Full Map From CPU 0000010 0011010 … … 0011010 100 Main Memory (1KB=128Lines) 0011010 = = = Data = = = = 0000001 Cache (64B=8Lines) Cache Directory (Tag Memory) 7bit X 8 =

Way数のトレードオフ 大きくすると、、、 ヒット率が改善 遅延時間が大きくなる(マルチプレクサの遅延) 8くらいまでが多い Direct Map→2way set associative 32人で1つの椅子を争う VS. 64人で2つの椅子を争う   偶然同じ時間に椅子を狙うライバルが居る場合は効果的 サイズを倍にするのと同じ程度の効果が見込まれる それ以上はどんどん効果が減る 4以上はあまり効果が上がらない 遅延時間が大きくなる(マルチプレクサの遅延) 8くらいまでが多い

書き込みポリシー Write Through Write Back 書き込み時に主記憶にもデータを書く Direct Write:ミス時は主記憶だけに書く Fetch-on-write:ミス時はリプレイスしてから書く 主記憶に合わせると性能ががた落ち(Verilogの設計はそうなっている)だが、Write bufferがあれば性能がさほど落ちることはない Write Back 書き込みはキャッシュのみ キャッシュと主記憶が一致:Clean、違う:Dirty Dirtyなキャッシュブロックは書き戻し(Write Back)をしてからリプレイス

Write Through (Hit) 0011010 … … From CPU Main Memory (1KB=128Lines) 100 主記憶も同時に更新 0011 Hit Cache (64B=8Lines) Write Data Cache Directory (Tag Memory) 8 entries X (4bit )

Write Through (Miss:Direct Write) 0000010 0011010 … … From CPU Main Memory (1KB=128Lines) 0000 010 100 主記憶のみ更新 0011 Miss Cache (64B=8Lines) Write Data Cache Directory (Tag Memory) 8 entries X (4bit )

Write Through (Miss:Fetch on Write) 0000010 0011010 … … From CPU Main Memory (1KB=128Lines) 0000 010 100 0011 0000 Miss Cache (64B=8Lines) Write Data Cache Directory (Tag Memory) 8 entries X (4bit )

Write Back (Hit) 0011010 … … From CPU Main Memory (1KB=128Lines) 0011 100 Dirty 0011 1 Hit Cache (64B=8Lines) Write Data Cache Directory (Tag Memory) 8 entries X (4bit+1bit )

Write Back (Replace) 0000010 0011010 … … From CPU Write Back Main Memory (1KB=128Lines) 0000 010 100 Dirty 0000 0011 1 Miss Cache (64B=8Lines) Cache Directory (Tag Memory) 8 entries X (4bit+1bit )

ライトスルーとライトバック 「ライトスルーは主記憶を待たなければならないので非効率」というのは嘘 ライトバック ちゃんとライトバッファを装備すれば性能的に悪くはならない しかし、シングルライトが必要→DRAMに合わない 常にデータの一致が取れるのがメリット、観測性が高い、I/Oで有利 ライトバック 常にデータ転送がブロック単位→DRAM、高速バスに適合 バスの利用率が下がる→マルチコアに適合 大体世の中はライトバックになりつつある

リプレイスポリシー リプレイスの際、どのWayを選ぶか? LRU (Least Recently Used) Direct map以外のキャッシュで問題になる LRU (Least Recently Used) 最近もっとも使っていないwayを選ぶ 2-wayならば簡単→ Verilog記述参照 4-way以上は結構面倒→ 擬似的なLRUでも大体OK 他にランダム、FIFOなどが考えられるが実際上あまり用いられない

キャッシュの性能 キャッシュオーバーヘッド付きCPI(Clock cycles Per Instruction)= 理想のCPI +   命令キャッシュのミス率×ミスペナルティ +   データキャッシュの読み出しミス率×読み出し命令の生起確率×ミスペナルティ この式の問題点 ミスペナルティは書き戻しを伴うかどうかで違ってくる(Write Back) ライトバッファの容量、連続書き込み回数によっては書き込みミスでもストールする 書き込み直後に読み出しをするとキャッシュが対応できないでペナルティが増えることもある→ノンブロッキングキャッシュ 実際は階層化されているのでそれぞれの階層を考えないといけない プロセッサがOut-of-order実行可能ならば読み出し時にストールしないかもしれない(この話は後ほど、、、) ちゃんと評価するにはシミュレータを使うしかない、、、、

ミスの原因:3つのC Capacity Miss:容量ミス Conflict Miss:衝突ミス 絶対的な容量不足により起きる Conflict Miss:衝突ミス 容量に余裕があっても、indexが衝突することで、格納することができなくなる Compulsory Miss (Cold Start Miss) 初期化ミス スタート時、プロセス切り替え時に最初にキャッシュにブロックを持ってくるためのミス。避けることができない

キャッシュサイズと それぞれもミスの 割合 Hennessy & Patterson Computer Architectureより

ミスを減らす 容量を増やす Way数を増やす ブロックサイズを大きくする 〇容量ミスはもちろん減る。衝突ミスも減る。 ×コストが大きくなる。ヒット時間が増える。チップ(ボード)に載らない Way数を増やす 〇衝突ミスが減る キャッシュ容量が小さいと効果的、2Wayは、2倍の大きさのDirect Mapと同じ位のミス率になる キャッシュ容量が大きい場合、残った不運な衝突ミスを減らす効果がある ×コストが大きくなる。ヒット時間が増える。4以上はあまり効果がない。 ブロックサイズを大きくする  〇局所性によりミスが減る。  ×ミスペナルテイが増える。(ブロックサイズに比例はしないが、、)    キャッシュが小さいと衝突ミスが増える 容量に応じて適切なブロックサイズを選ぶ。32byte-128byte

ブロックサイズと ミスの割合 Hennessy & Patterson Computer Architectureより

演習 xとyは互いにコンフリクトミスを起こす番地に配置されている。Direct Mapキャッシュで、以下のパターンで読み書きを行ったとき、Write Through(Direct Write)とWrite Backキャッシュで(1)ヒットするかミスするか(2)リプレイスが起きるかライトバックが起きるかを示せ。なお最初のxに対する読み出しはミスすると仮定する。 1.xから読み出し 2.yに書き込み 3.yを読み出し 4.xを読み出し 5.yに書き込み 6.xに書き込み