システムLSIとアーキテクチャ技術  (part II:オンチップ並列            アーキテクチャ)

Similar documents
システムLSIとアーキテクチャ技術  (part II:オンチップ並列            アーキテクチャ)

システムLSIとアーキテクチャ技術  (part II:オンチップ並列            アーキテクチャ)

講義計画 1. コンピュータの歴史 1 2. コンピュータの歴史 2 3. コンピュータの歴史 3 4. 論理回路と記憶, 計算 : レジスタとALU 5. 主記憶装置とALU, レジスタの制御 6. 命令セットアーキテクチャ 7. 演習問題 8. パイプライン処理 9. メモリ階層 : キャッシュ

この方法では, 複数のアドレスが同じインデックスに対応づけられる可能性があるため, キャッシュラインのコピーと書き戻しが交互に起きる性のミスが発生する可能性がある. これを回避するために考案されたのが, 連想メモリアクセスができる形キャッシュである. この方式は, キャッシュに余裕がある限り主記憶の

DRAM SRAM SDRAM (Synchronous DRAM) DDR SDRAM (Double Data Rate SDRAM) DRAM 4 C Wikipedia 1.8 SRAM DRAM DRAM SRAM DRAM SRAM (256M 1G bit) (32 64M bit)

Operating System 仮想記憶

OS

PowerPoint プレゼンテーション

Microsoft PowerPoint - No7note.ppt

Microsoft PowerPoint - OS12.pptx

Microsoft PowerPoint - No6note.ppt

スライド 1

cpu2007lectureno2.ppt

Microsoft PowerPoint - OS09.pptx

< B8CDD8AB B83685D>

020105.メモリの高機能化

Microsoft PowerPoint - OS12.pptx

Microsoft PowerPoint - OS11.pptx

Microsoft PowerPoint - os ppt [互換モード]

hard5.pptx

Microsoft PowerPoint - ARC-SWoPP2011OkaSlides.pptx

スライド 1

Microsoft PowerPoint - ARC2009HashiguchiSlides.pptx

Microsoft PowerPoint - arc5

Microsoft PowerPoint - sp ppt [互換モード]

システムLSIとアーキテクチャ技術  (part II:オンチップ並列            アーキテクチャ)

メモリ管理

10-vm1.ppt

Microsoft PowerPoint - No15›¼‚z‰L›¯.ppt

Microsoft PowerPoint - os ppt [互換モード]

定 義 アクセス 要 求 を 発 行 する 機 構 と,その 供 給 に 応 える 機 構 との 中 間 に 位 置 し,すべての 要 求 を 検 知 して 処 理 するよう 構 築 される. キャッシュは 選 択 されたデータの 局 所 的 なコピーを 保 持 し, 可 能 な 場 合 にはアクセ

Microsoft PowerPoint - sp ppt [互換モード]

Microsoft PowerPoint - OS07.pptx

Microsoft PowerPoint - 11Web.pptx

スライド 1

Microsoft PowerPoint - 11_4-4-5pagerepl.pptx

OS

Microsoft PowerPoint mm

スライド 1

スライド 1

Microsoft PowerPoint mm2

計算機アーキテクチャ

メモリ管理

Microsoft PowerPoint - ARCICD07FukumotoSlides.pptx

26 FPGA FPGA (Field Programmable Gate Array) ASIC (Application Specific Integrated Circuit) FPGA FPGA FPGA FPGA Linux FreeDOS skewed way L1

6. パイプライン制御

&A : A = k j 1: 4-way., A set x, way y, way y LRU y, way., A (x,y).,,, L1( 1) L2, L3 3. L1., L2,L3., TLB(Translation Lookaside Buffer). OS,. TLB, ( ),

Microsoft PowerPoint - OpenMP入門.pptx

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

Microsoft PowerPoint - ARCEMB08HayashiSlides.ppt [互換モード]

PowerPoint Presentation

Microsoft Word LenovoSystemx.docx

router_cachehit.eps

Microsoft PowerPoint - Lec pptx

メモリについて考えてみよう_REL_

N08

M SRAM 1 25 ns ,000 DRAM ns ms 5,000,

Microsoft PowerPoint - pc11.ppt

PowerPoint プレゼンテーション

ComputerArchitecture.ppt

16.16%

本文ALL.indd

Microsoft PowerPoint - ICD2011TakadaSlides.pptx

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

NUMAの構成

スライド タイトルなし

コンピュータ工学Ⅰ

TFTP serverの実装

SCIMA アーキテクチャと性能評価 - SCIMA アーキテクチャの概要 - 中村宏東京大学先端科学技術研究センター

の 内 容 の 一 貫 性 )を 保 つために 用 いられるのが スヌープ キャッシュ 方 式 である. キャッシュメモリにおいて, 主 記 憶 のアドレスの 下 部 (インデックス)を 用 いてキャッシュメモリ 上 のインデックスを 求 める 方 法 を ダイレクトマッピング と 呼 ぶ.キャッシ

Microsoft PowerPoint - sales2.ppt

04-process_thread_2.ppt

Microsoft PowerPoint - OS08.pptx

出 アーキテクチャ 誰が 出 装置を制御するのか 1

ソフトウェア基礎技術研修

Microsoft Word - レポート回答集.docx

Microsoft PowerPoint - No14…L………b…V…–…†…‡…−.ppt

コンピュータ工学Ⅰ

研究報告用MS-Wordテンプレートファイル

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

MIPSのマイクロアーキテクチャ

テクニカルガイド 増設メモリ

INDEX Demo の目的 ゴール Scenario 1: 自動化 Scenario 2: 効率化 2

計算機システム概論

V8_教育テキスト.dot

テクニカルガイド「増設メモリ」(2006/09/15)

Microsoft PowerPoint - NxLec ppt

ex04_2012.ppt

計算機ハードウエア

C に必要なコンピュータ知識 C はコンピュータの力を引き出せるように設計 コンピュータの知識が必要

Microsoft Word - nvsi_050110jp_netvault_vtl_on_dothill_sannetII.doc


(ch2 + i)->next = ch1 + r; doit(ch1, ch2); 図 1 ランダムアクセスする C ソース 時間 (elapsed) 32 ビットプログラム (gcc -O2 -m32 でコンパイル ) 6.23 秒 秒 64 ビットプログラム (gcc -O2 -m

Microsoft Word - dg_sataahciip_refdesign_jp.doc

MMUなしプロセッサ用Linuxの共有ライブラリ機構

増設メモリ 1. 機能仕様 型番 製品名 備考 N GB 増設メモリボード DDR3-1333(PC ) SDRAM, Unbuffered N GB 増設メモリボード DDR3-1333(PC ) SDRAM, Unbuffered N8

プロセッサ・アーキテクチャ

増設メモリ 1. 機能 型名 N N N N N GB 16GB 3 (x2 枚 ) (x2 枚 ) (x2 枚 ) (8GBx2 枚 ) (16GBx2 枚 ) DDR3-1066(PC3-8500) 動作クロック

Monthly Research / セキュアハードウェアの登場とその分析

Transcription:

コンピュータ基礎記憶階層とキャッシュその2 テキスト第 10 章 天野英晴 hunga@am.ics.keio.ac.jp

記憶システム 膨大な容量を持ち アクセス時間 ( 読み出し 書き込み ) が短いメモリが欲しい! しかし 容量の大きい ( ビット単価が安い ) メモリは遅い 高速なメモリは容量が小さいお金にモノを言わせて高速なメモリをたくさん揃えても大容量化の段階で遅くなってしまう そこでアクセスの局所性 (Locality) を利用 時間的局所性 (Temporal Locality) 一度アクセスされたアドレスは近いうちにまたアクセスされる 空間的局所性 (Special Locality) 一度アクセスされたアドレスに近い場所がまたアクセスされる

記憶の階層 高速小容量の CPU の近くに置きよく使うデータを入れておく そこになければより遅い大容量メモリに取りに行く CPU L1 キャッシュ L2 キャッシュ L3 キャッシュ SRAM ソフトウェアからは透過 ( トランスペアレント ) チップ内メモリ ~64KB 1-2clock ~256KB 3-10clock 2M~4MB 10-20clock 主記憶 DRAM 4~16GB 50-100clock OS が管理 補助記憶 (2 次記憶 ) μ-msec オーダー数百 GB

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

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

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

ライトスルー (Miss: ダイレクトライト ) 0000010 0011010 From CPU 0000 010 100 Main Memory (1KB=128Lines) 主記憶のみ更新 0011 Miss Cache (64B=8Lines) Cache Directory (Tag Memory) 8 entries X (4bit ) Write Data

ライトスルー (Miss: フェッチオンライト ) 0000010 0011010 From CPU 0000 010 100 Main Memory (1KB=128Lines) 0000 0011 Miss Cache (64B=8Lines) Cache Directory (Tag Memory) 8 entries X (4bit ) Write Data

ライトバック (Hit) 0011010 From CPU 0011 010 100 Dirty Main Memory (1KB=128Lines) 0011 1 Hit Cache (64B=8Lines) Cache Directory (Tag Memory) 8 entries X (4bit+1bit ) Write Data

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

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

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

演習 1 キャッシュブロック A とキャッシュブロック B は Conflict Miss を起こすアドレスである 以下のアクセスを行った場合にライトスルーキャッシュ ( ダイレクトライト ) ライトバックキャッシュについて ヒットするかミスするかを示しなさい ライトバックの場合ブロックの状態を示しなさい また リプレイスとライトバックが起きるかどうかも示しなさい 1. ブロック A から読み出し 2. ブロック A に書き込み 3. ブロック B から読み出し 4. ブロック A から読み出し 5. ブロック A に書き込み 6. ブロック B に書き込み 7. ブロック A から読み出し

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

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

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

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

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

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

ブロックサイズと平均アクセス時間 Hennessy & Patterson Computer Architecture より

ミスペナルティを減らす 階層キャッシュ CPU-Memory 間に複数のキャッシュを設ける ノンブロッキングキャッシュ ミス処理の間にも次のアクセスを受け付ける Critical Word First と Early Restart CPU に対して可能な限り早くアクセスされたデータ ( 命令 ) を渡す

マルチレベルキャッシュ CPU L1 キャッシュ ~64KB 1-2clock CPU に近い方から L1,L2.. と番号を付ける L2 L3 キャッシュの局所ミス率は L1 キャッシュより高い L2 キャッシュ L3 キャッシュ 主記憶 ~256KB 3-10clock 2M~4MB 10-20clock 4~16GB 50-100clock

マルチレベルキャッシュの制御 Multi-level Inclusion 上位階層のキャッシュが下位階層の内容を全て含む 階層間のやり取りは キャッシューメモリ間と同じ メモリシステム中にデータの重複が数多く存在 Multi-level Exclusion 上位階層のキャッシュと下位階層のキャッシュの内容が重なることはない 階層間のやり取りは リプレースというよりはスワップ

ノンブロッキングキャッシュ キャッシュが動作中にも次のアクセスを受け付ける キャッシュの操作をパイプライン化する メモリアクセスを強化しないとノンブロッキングキャッシュにはできない 実際はミス中のヒットを 1 回許せば大体 OK CPU がアウトオブオーダ実行可能でないと効果が小さい 来週

Critical Word First と Early Restart CPU キャッシュに転送する前に CPU にワードを渡す (Early Restart) キャッシュ 主記憶 アクセスしたワードを先に送る (Critical Word First)

プリフェッチ アクセスする前にキャッシュに取って来る ( 問題点 ) 使うかどうか分からないデータ ( 命令 ) のために他のラインを追い出していいのか?? プリフェッチバッファを使う場合が多い 本当にアクセスされたらキャッシュに入れる ハードウェアプリフェッチ 命令キャッシュで用いる 一つ ( 二つ ) 先のブロックまで取って来る 命令キャッシュは局所性が高いので効果的 ソフトウェアプリフェッチ プリフェッチ命令を使う : データキャッシュ コンパイラが挿入 命令実行のオーバーヘッドを伴う

コンパイラによる最適化 ループ構造の最適化 ループの入れ子を入れ替える for(j=0; j<100; j=j+1) for(i=0; i<5000; i=i+1) x[i][j] = a * x[i][j]; for(i=0; i<5000; i=i+1) for(j=0; j<100; j=j+1) x[i][j] = a * x[i][j]; ループをくっつける ブロック化 キャッシュにうまく入るようにデータ構造を変更する 科学技術計算には効果的

仮想記憶 (Virtual Memory) プロセッサから見たアドレス ( 論理アドレス ) と実際のメモリ上のアドレス ( 物理アドレス ) を分離する 実メモリよりも大きいメモリを扱うことができる 複数のプロセスを互いのアドレスを気にせずに並行実行可能 管理単位で記憶の保護 ページ : 固定サイズ (4K-16KB) vs. セグメント : 可変サイズ ページを用いる場合が多い 概念はキャッシュに似ているが OS が管理 用語も違う ブロック ( ライン ):32-128B ページ :4KB リプレイス スワップイン ライトバック スワップアウト ページの割り付けは OS が管理 リプレイスは LRU(Least Recently Used) 書き込み制御は当然ライトバック

仮想記憶のアドレス変換 論理アドレス空間 (4GB) ページ番号 20bit ページ内アドレス 12bit 物理アドレス空間 (16MB) TLB 12bit 12bit 20bit 12bit の変換テーブルは巨大ソフトウェアで管理 TLB(Translation Lookaside Buffer) はこの変換テーブルに対するキャッシュ

TLB(Translation Lookaside Buffer) 論理アドレス ページ番号 ページ内アドレス 00110101011100000010 001011001100 00110101011100000010 = 111011001110 = = = = Dirty bit Priority bit = = = 物理アドレス 111011001110 001011001100

ページフォルト (Page Fault) の発生 TLB ミス ページ自体は主記憶中に存在 TLB の入れ替え ページ自体が主記憶中にない スワップイン + TLB の入れ替え ヒットしたが Dirty bit が 0 のページに書き込みを行った Dirty bit のセット ヒットしたが特権命令でないのに特権ページを扱った いずれのケースも OS で処理する

TLB 変換時間の短縮 仮想アドレスキャッシュ キャッシュは仮想アドレスで参照する プロセスによってアドレスがダブる問題 ( シノニム問題 ) の解決が難しい 仮想アドレスインデックス - 物理アドレスタグ方式 (Virtually indexed, Physically Tagged) 変換を行わないページ内アドレスをキャッシュのインデックスに使う タグ参照 キャッシュ参照 TLB 変換が同時に可能 Direct Map だとキャッシュサイズが 4KB に制限される 2 way だと 8K 4 way だと 16K 8 way だと 32K 1 次キャッシュだけの話なので 多少小さくてもいいか

仮想アドレスインデックス 物理アドレス タグ方式 ページ番号 20bit ページ内アドレス (12bit) index TLB Tag Mem. キャッシュ 12bit Tag = Hit CPU へ

演習 2 以下の条件でキャッシュのオーバーヘッドを含めた CPI はどのようになるか計算せよ 理想の CPI: 1 キャッシュのミスペナルティ :10 クロック 命令キャッシュのミス率 :1% データキャッシュのリード時のミス率 :3% LD 命令の確率 15%