(1)(キャッシュ)Memory (1) (Cache)

メモリに関する話題(1) - Cache
Memory (1) - Cache
•
•
•
•
Memory-CPUボトルネック/Bottleneck
メモリ階層性/Hierarchy of Memory
メモリ構造/Memory Structure : SRAM/DRAM
Cache(キャッシュ)メモリ
•
•
•
•
Cacheの発明/Innovation of Cache
Cache構造/ Cache Structure
Mapping 方式/Methods
Cache組み込みのキーポイント/Optimization of Cache
• Mapping parametersによる効率(ミス率)
Efficiency (Miss rate) with Mapping methods/parameters
• 更新方式/書き込み制御 Replacement/Restoring
• cacheが有効でない場合(実行プログラム特性)
Cases that the cache works inefficiently (Characteristics of programs)
福永 力; Chikara Fukunaga
1
フォンノイマンボトルネック(隘路)
Von Neumann Bottleneck
• 「プログラム内蔵方式のコンピュータ(フォンノイマン型)」はプロセッサ
のプログラム実行時のメモリ参照に弱点がある.
Computer architecture with the “stored program method” needs
frequent access of memory for program execution.
• 通常メモリのアクセススピードはプロセッサの計算スピードに較べて
遅い
Memory access rates are lower than ones of Arithmetic-Logical
processes
• メモリアクセススピードによってプログラムの実行性能が規定される
The memory access rate becomes one
of the important parameters for the
overall performance of the processor .
⇒フォンノイマン型(Von Neumann)
ボトルネック(Bottleneck)
福永 力; Chikara Fukunaga
2
メモリの階層性とCache
hierarchy of the storage and Cache
•
•
•
•
Register : FF circuits
Cache : Bipolar, CMOS SRAM
Main Storage : SRAM, DRAM
Disk Cache : DRAM
• 早いメモリは消費電力
発熱量が高い.
Memories with high access rate
have high power dissipation and
consequently high thermal emission.
福永 力; Chikara Fukunaga
3
SRAM構造 structure
Static Read Access Memory
Cell Structure (1 bit)
福永 力; Chikara Fukunaga
4
DRAM構造
Dynamic RAM structure
• 構造が簡単、記憶原理が簡単
Simple structure and storage method
• コンデンサの充電(1)・放電(0)による記憶
Charge-up (1) and empty (0) of a capacitors
make the 1 bit information in the memory
• 自然放電に対してRefresh動作が必要
Refresh cycle is required to refrain from the
natural discharge of capacitors
• 読み出しは充電されていた電荷の放出→
破壊的読み出し→W線全体の再書き込み
Readout makes the discharge of capacitors,
which means a destructive readout, we
need re-reading for a W line to keep info.
福永 力; Chikara Fukunaga
5
プログラムのもつ局所性
Locality of a program
• プログラムの特徴としての局所性(Locality)
• ある短い時間に限ってみるとメモリのある特定の領域の情報(命
令+データ)のみで動作
A program is operated with the instructions and data stored in a
limited region of the MS in small time interval
• 情報の再利用あるいは近辺の情報の参照による情報更新
Information is updated with the re-use of it and the reference of
neighbourhood info.
• メモリ参照の局所性(locality of the memory reference)
• temporal locality(時間的)
• spatial locality(空間)
福永 力; Chikara Fukunaga
6
Cacheの登場
Introduction of Cache
• よく参照されるデータの特殊領域への待避(ボトルネックの解消)
We needed a temporally small storage to keep a copy of frequently accessed
parts in the Main Storage (MS) in order to
eliminate the bottle-neck between CPU and MS.
• それは効率的に局所性を再現するもの
でなくてはならない
It must simulate the parts of MS efficiently.
• 時間にともなう内容変化に対応
The contents must be changed with time
⇒ ⇒
• Cacheの登場 / Development of Cache
• Cacheの組み込み
Installation of Cache between MS and
the main processor
福永 力; Chikara Fukunaga
7
Cacheの内部構成
Cache - conceptual structure
• 抽象化されたCacheの構造
Abstracted structure of Cache
• コントロール部(アドレス
デコーダとtag,コンパ
レータ)とCacheメモリ部
Control block (the address decoder, tags,
the comparator) and the Cache memory
(SRAM)
• Main Storage (MS) のアドレス
とtagの素早い参照が重要(Mapping)
Efficient mapping between the actual
address in the Main storage (MS) with
tag is issue for cache design
• データの格納法にもさまざまな工夫
Pick up of hot blocks in MS and Storage
of them in cache are also very important
items for cache construction
福永 力; Chikara Fukunaga
8
いくつかの基本データ
Several Basic Data for Cache
•
•
•
•
•
Block size : 1024~4096Byte
Hit cycle : 1 clock or more
Miss Penalty : 8~32 clock
Miss rate : 1%~20%
Cache size : 1k~1M Byte
• Memory (MS) accessing: handled as
2 dim. Array of row and column
for Physically Linear Array of
Memory
福永 力; Chikara Fukunaga
9
ブロック(バースト)データ転送
Block (Burst) Data Transfer
• 一般のデータ読込みではアドレス
ラインをバスに出してしばらくして
データがバスにメモリからロードさ
れる.
In general data is loaded on bus a
little after the address in on the bus.
• ブロック転送では開始アドレスと転
送バイトサイズを指定すれば最初
のアドレスロード以降データは間髪
をおかずバスにロードされる.
If the start address and size of data
are specified in a instruction, data
is transferred to the target without
any intervention
福永 力; Chikara Fukunaga
10
MSからCacheへのデータ選択法
Mapping method from MS to Cache
Mapping Method
セクター
Sector
ダイレクトマップ
Direct Mapping
フルアソシエーティブ
Full Associative
n-way セットアソシエーティブ
n-way set associative
Mechanism
Characteristics
きめ細やかのMSの領域(ブロッ
ク)の写像
The most sophisticated
algorithm for mapping
アドレス変換に1ステップ必要
Address conversion from
tagging needs an another
hardware step
比較的簡単なマッピング
Simple mapping
ブロックの構成によっては効率悪
い
Inefficiency will be observed
もっとも直感的なマッピング
Simplest idea for mapping
Tag→アドレス変換が複雑
The conversion between
address and tag is complicated
ダイレクトマップとフルアソシエー
ティブ方法の折衷
Mixed idea of Direct Mapping &
Full Associative
福永 力; Chikara Fukunaga
今一般的に使われている
11
セクタ方式
Sector Mapping Method
• Memory Segment:例 Example
Row(10bit addr),Block(1024 Byte,16 Block/Row)
• Max. 16 blocks for 1 Row can be registered in cache at once
• Dataのvalidity bit (validity bit for data in a block)
• invalid bitであれば同じブロックのメインストレージからの再読み込み
If valid bit is off (invalid), reread the columns from the Main Storage
• Tag = 10bit address(Row addr.) & 16bit tagged column pattern/block
• Tag match & valid bit → any block in the Row can be used (cache hit)
• If Tag match & invalid bit → blocks must be retransferred
• If Tag mismatch, exchange an old Row with new (now required)
福永 力; Chikara Fukunaga
12
ダイレクトマップ方式
Direct Map method
• 各Rowにつき、ただ1つのblockが選ばれcache登録されうる
Only a block in a Row can be registered in cache.
• Tagは単純にRowの順番.例えばBlockのcolumn番号をtagに記録する.
Tag number is simply the number of the row (Tag 0 for Row 0, Tag 1 for Row 1, etc.)
Tag contains the column number in the row in which the cached block is assigned.
• Tagとメインアドレスの比較は10bit以下のcolumn番号のみでよいので制御は容易
Matching algorithm of tag and the address in the MS is therefore simple
• 1 rowにつき1個のブロックしかcacheできない.特定のrowに所属するブロックへの
アクセスが集中すると効率は悪くなる.
Since only a block can be cached for one row, the efficiency will be worsen if
accesses are concentrated into several blocks in the same row
福永 力; Chikara Fukunaga
13
フルアソシエーティブ方式
Full Associative mapping
• MSとcache間の対応はBlockで行うがその他の対応はなにもしない.
A block is used still as a unit for mapping between cache and MS, but nothing
others.
• 任意のブロックがcacheの任意の位置に記録される.
No sequential ordering. First block comes in the first free block in Cache
• メインストレージの実アドレスとtagはフルにブロック番号で比較させ,一致をと
るので制御機構が複雑
Matching of the tag and the address in MS is complicated since it needs full bit
comparison.
• 使用頻度の高い複数ブロックの無制限有効利用
Effective use of highly frequently referred blocks without restriction
福永 力; Chikara Fukunaga
14
(n-way) セットアソシエーティブ方式
(n-way) Set Associative mapping
• ダイレクトマップとフーリーアソシエーティブ方式の折衷案
Combined method of the direct and fully associative mapping
• cache内で記録block数が1 rowで1個 だったものを複数個に拡大.この複数
のblock数をwayと呼ぶ.
Extension of number of blocks in a row from one to n (unit is called way) of
the direct mapping method
• 以下の例は2-way,6 bit row addr.、 8 bit column addr.
The example here is 2 way 6 bit row address,8 bit column address
福永 力; Chikara Fukunaga
15
16-way セットアソシエーティブ構成例
16-way Set Associative Mapping Cache-Example
福永 力; Chikara Fukunaga
16
Cache構成のキーポイント(1)
Optimization of Cache (1)
• Cacheメモリの容量
Capacity of Cache Memory
• ブロックサイズ
Size of a block
• マッピング方式の選択
Selection of Mapping methods
• セットアソシエーティブwayの数とrow数(set数)
Number of ways and Rows for the Set Associative Mapping
福永 力; Chikara Fukunaga
17
Cache構成のキーポイント(2)
Optimization of Cache (2)
• Replacement方式
Cache memory replacement method
• Restore動作- 更新アルゴリズム
Restoring of Cache data – rewrite algorithm
• Compulsory(初動遅延; Initial delay; cache initial state)
• Conflict:ブロック集中アクセスによるミス
(ダイレクトマップ,セットアソシエーティブ)
Conflict: Miss with concentrated access of particular blocks
(Direct, Set-associative Mapping)
• 実行プログラムの特性(データアクセスの効率)
Data access characteristics of programs run on the
machine
福永 力; Chikara Fukunaga
18
Cacheパラメータ変更によるMiss rate実測値例
Measurement of Miss rate with Cache parameters
Cache size
From Hennessy & Patterson, CA A Quantum Approach 4th ed.
8,4,2, 1
•
•
•
•
•
•
Cache capacity → increase,
capacity miss,conflict miss → decrease (Fig. C9)
Number of ways → increase,
conflict miss rate → decrease (Fig. C9)
Block size → decrease, inefficient (Fig. C10)
Block size → increase, miss rate → increase
(Fig. C10)
1 ways miss rate ~ cache size 50% of 2 ways
(Fig. C9)
Cache size double → miss rate sqrt(2) (Fig. C9)
福永 力; Chikara Fukunaga
19
リプレースメント(旧データの追出し)方式
Replacement (Kick out) of old unused contents
• ミスヒットによるcache更新時のデータ追出しアルゴリズム
Algorithm for the kick-out of old data with miss-hit
• Invalid bitタグのブロックの追放
Invalid tag bit to indicate the useless block
• LRU(Least Recently Used)ブロックの認定・追放
Recognition of Least Recently Used Block, and kick it out
• 履歴用(タイムスタンプ)のtag bitを必要とする
need a time stamp information for each block
• FIFO(First-In First-Out)
• 最古参ブロックから追い出し
The block entered first must be purged out first
• LRUより制御機構が簡単 (Simpler control logic than LRU, just sequence)
• ブロックのランダム抽出(Random Selection)
• 時間にかかわらずどのブロックのアクセス頻度は同じであろうという考え方
The frequency of access to any blocks will be more-or-less constant regardless of the time
• Cache Access Counter for each block
• cacheアクセスごと,あるいはクロックごとにカウンターを増やす.カウンター値と同じライ
ンのブロックを追放,そしてカウンターリセット
Count up with clock or access, and if it exceeds some limit, it will be candidate to be
purged
20
福永 力; Chikara Fukunaga
データCache 書き込み制御
Restoring Control
• キャッシュ一貫性制御ともいう
It is also called “Cache Coherence Control”.
• Data cacheのみが対象
The operation is applied to the Data cache.
• データ更新にともなうメインストレージへの再書き
込み
• ストアスルーあるいはライトスルー
(Store-Through or Write-Through)
• ストアイン,ライトバックあるいはコピーバック
(Store-In,Write-Back or Copy-Back)
福永 力; Chikara Fukunaga
21
ストア(ライト)スルー
Store(Write)-Through
• 書き込みデータのブロックがcacheでヒット(Write Cache hit)した場合,
cacheデータとMSともに更新(Write)
If the block to be modified by write is found in Cache (Write Cache hit),
Both contents in cache and MS are modified.
• Write Cache missした場合,MSの対応ブロックのデータ更新するとともに
If Write Cache miss, the corresponding block in the MS is updated but
also
• cacheに当該ブロックを読込みMSとcacheをともに更新(Write Allocate),ある
いは
The block is also refilled into the cache, and it is updated, or
• cacheは何もせずMSのみ変更
No touch with the cache (only the MS will be affected).
• ライトバッファ(Write Buffer)
• メインストレージへのアクセス中CPU処理がストールされてしまう.この期間
を最小限にするために中間バッファ(ライトバッファ)を持つ必要がある.
We need a special buffer called “Write Buffer” in order to keep minimize the
access time of the MS to avoid stalls in the CPU pipeline.
福永 力; Chikara Fukunaga
22
ストアインあるいはライト(コピー)バック
(Store In or Write(Copy)-Back)
• Write Cache hitした場合,cacheのみ変更(Dirty)
If write Cache hit, only Cache is modified (Dirty)
• Write Cache missした場合,必ずMSからcacheへ当該ブロックを読込
み,cacheのみを変更しcacheとMSとで当該ブロックのある値が異なる
という旨をマークしておく.
(clean bitをOFF → dirty)
If Write Cache miss, always the corresponding block is load into the
Cache from the MS and is modified only in the cache. The block is
marked up with “dirty” from “clean”.
• このブロックがcacheから追出されるときにメインストレージを更新す
る(ライトバック).
(clean bitをON → clean)
If this block is once kicked out, the MS is updated, and the block is
backed to “clean”.
• Readではcacheのhit/missにかかわらずclean
The block is kept “clean” for Read case regardless of the hit/miss.
福永 力; Chikara Fukunaga
23
ストアイン(ライトバック)キャッシュの状態遷移
State Transition Diagram for Store In (Write back)
Cache mechanism
福永 力; Chikara Fukunaga
24
cacheの多重(マルチ)レベル化
Multi-Level Cache
• L1,L2
• Victim(n-wayセットアソシエーティブ法
cacheの追い出されたデータ保持用)
Victim buffer for temporal storage buffer
for blocks kicked out in the n-way set
associative mapping.
福永 力; Chikara Fukunaga
25
cacheが有効でない場合(1)
Some cases that the cache is not effective (1)
• 長い(要素の多い)ベクトル計算
Calculation of Long one dimensional
arrays
• データ量がcacheサイズを越えるとパ
フォーマンスの低下が見える
If the size exceeds the cache block size,
the degradation of the performance
• サイズのみでなくcacheの構成をも考
慮したプログラミングの配慮が必要
If the cache is structured in multi-level,
the programming must be optimized
with this structure.
Performance (rate) MFLOPS
C=C + A[i] * B[i]
福永 力; Chikara Fukunaga
配列長 Array size
QCD (Physics)
配列長 Array size
26
cacheが有効でない場合(2)
Some cases that the cache is not effective (2)
• 行列計算の繰り返し順序
Loop order for Matrix
multiplication of Zij=ΣXik・Ykj
• CとFortranでは異なることも.
Optimization of C and Fortran is
different.
福永 力; Chikara Fukunaga
27