第12回講義

計算機アーキテクチャー Computer Architecture
1
柔軟性の高いブロック配置
ダイレクト・マップ方式
特定の一箇所に配置
ブロック タグ
データ
0
1
2
3
4
5
6
7
フル・アソシアティブ方式
メモリ・ブロックをキャッシュ内の任意のロケーションに配置
タグ
データ
タグ
データ
タグ
データ
タグ
データ
タグ
データ
タグ
データ
タグ
データ
タグ
△ 要求されたデータを引き出すには、キャッシュ内の全ブロックを検索要
データ
計算機アーキテクチャー Computer Architecture
2
mウェイ・セット・アソシアティブ方式
セット・アソシアティブ方式
ダイレクト・マップとフル・アソシアティブの中間 (配置可能な場所がm個存在)
インデックスによって選択されたセット内の要素だけを検索すればよい
セットの位置=メモリのブロック・アドレス modulo キャッシュ・セット数
1ウェイ・セット・アソシアティブ方式
2ウェイ・セット・アソシアティブ方式
(ダイレクト・マップ方式)
ブロック タグ
セット
タグ
データ
タグ
データ
0
1
2
3
データ
0
1
2
3
4
5
6
7
4ウェイ・セット・アソシアティブ方式
セット
タグ
データ
タグ
データ
タグ
データ
タグ
データ
データ
タグ
データ
0
1
8ウェイ・セット・アソシアティブ方式(フル・アソシアティブ方式)
タグ
データ
タグ
データ
タグ
データ
タグ
データ
タグ
データ
タグ
データ
タグ
計算機アーキテクチャー Computer Architecture
キャッシュの連想度例(1)
1語のブロック4つから成る以下の3つの方式キャッシュがある。 (1)ダイレクト・マップ方式 (2)2ウェイ・セット・アソシアティブ方式 (3)フル・アソシアティブ方式
メモリのブロック・アドレスを0, 8, 0, 6, 8の順にアクセスするとき、各方式でミスの発生数
を求めよ。
(1)ダイレクト・マップ方式
メモリ・ブロック・アドレス
0
6
8
メモリ・ブロック
のアドレス
0
8
0
6
8
キャッシュ・ブロック
(0 mod 4) = 0
(6 mod 4) = 2
(8 mod 4) = 0
ヒット/ミス
ミス
ミス
ミス
ミス
ミス
ブロック
0
1
2
3
タグ
データ
参照後の各キャッシュ・ブロックの内容
0
1
2
3
メモリ[0]
メモリ[8]
メモリ[0]
メモリ[0]
メモリ[6]
メモリ[8]
メモリ[6]
3
計算機アーキテクチャー Computer Architecture
4
キャッシュの連想度例(2)
(2)2ウェイ・セット・アソシアティブ方式
メモリ・ブロック・アドレス
0
6
8
メモリ・ブロック
のアドレス
0
8
0
6
8
キャッシュ・ブロック
(0 mod 2) = 0
(6 mod 2) = 0
(8 mod 2) = 0
ヒット/ミス
ミス
ミス
ヒット
ミス
ミス
セット
0
1
タグ
データ
タグ
参照後の各キャッシュ・ブロックの内容
セット0
セット0
セット1
セット1
メモリ[0]
メモリ[0]
メモリ[8]
メモリ[0]
メモリ[8]
メモリ[0]
メモリ[6]
メモリ[8]
メモリ[6]
データ
計算機アーキテクチャー Computer Architecture
キャッシュの連想度例(3)
(3)フル・アソシアティブ方式
タグ
データ
メモリ・ブロック
のアドレス
0
8
0
6
8
タグ
ヒット/ミス
ミス
ミス
ヒット
ミス
ヒット
データ
タグ
データ
タグ
データ
参照後の各キャッシュ・ブロックの内容
セット0
セット0
セット1
セット1
メモリ[0]
メモリ[0]
メモリ[8]
メモリ[0]
メモリ[8]
メモリ[0]
メモリ[8]
メモリ[6]
メモリ[0]
メモリ[8]
5
計算機アーキテクチャー Computer Architecture
mウェイ・セット・アソシアティブ方式
連想度: 1セットのブロック数
連想度mを増やすと、○ミス率が低下、△ヒット時間が増大
セット・アソシアティブ方式のコスト
・比較器の増加
・キャッシュ・ブロック当たりのタグのビット数増大
・セットの中から比較および選択するための時間が余分にかかる
置き換えブロックの選択
LRU(least recently used)方: 使用されずにいた時間が最も長いブロックを置換
・使われた時間の情報を持つ必要有り
・連想度があがるも実現が難しくなる
6
計算機アーキテクチャー Computer Architecture
マルチ・レベル・キャッシュ
マルチ・レベル・キャッシュ
1次キャッシュと主記憶の間に、大きな2次キャッシュを追加して
1次キャッシュのミスを処理
⇒ ミス・ペナルティ削減
・1次キャッシュはCPUを構成するマイクロプロセッサと同じチップ上に搭載
・シリコン容量の制限およびクロック周波数を高くしたい場合、
1次キャッシュは大きく出来ない
・2次キャッシュはメイン・チップとは別のSRAMで構成
(1次キャッシュの10倍程度の容量)
7
計算機アーキテクチャー Computer Architecture
マルチ・レベル・キャッシュの性能例
データの参照は全て1次キャッシュに対してなされる下記のプロセッサがある。
基本CPI=1.0、クロック周波数=1GHz、主記憶へのアクセス=100ns
1次キャッシュにおける命令当たりのミス率=5%
このマシンに2次キャッシュを追加した場合、マシンの速度はどのくらい向上す
るか?ただし、2次キャッシュのアクセス時間=10ns、主記憶へのミス率=2%。
主記憶に対するミス・ペナルティ
=100ns/(1/1GHz)=100ns/(1ns/クロック・サイクル)=100クロック・サイクル
合計CPI1次キャッシュのみ=基本CPI+命令当たりのメモリ・ストール・サイクル数
=1.0+5%×100=6.0
2次キャッシュを追加した場合、
2次キャッシュに対するミス・ペナルティ
=10ns/(1ns/クロック・サイクル)=10クロック・サイクル
合計CPI2次キャッシュ追加=基本CPI+命令当たりのメモリ・ストール・サイクル数1次キャッシュ
+命令当たりのメモリ・ストール・サイクル数2次キャッシュ
=1.0+5%×10+2%×100=1.0+0.5+2.0=3.5
合計CPI1次キャッシュのみ/合計CPI2次キャッシュ追加=6.0/3.6=1.7倍
8
計算機アーキテクチャー Computer Architecture
9
キャッシュメモリによる計算機性能向上
• 年々広がるプロセッサ対DRAMの性能格差
• キャッシュメモリによるコンピュータ性能向上の効果大
1ns
ターゲット
プロセッサ(1.5年で2倍;60%/年)
Mooreの法則
10ns
100
較差は50%/年
で広がる一方
10
100ns
DRAM (10年で2倍;10%/年)
1
1980
1000ns
1985
1990
1995
年
2000
2005
レイテンシ
周波数 (MHz)
1000
計算機アーキテクチャー Computer Architecture
10
キャッシュメモリの効果
サーバーの特徴
- 複数 CPU 搭載
- 高い動作周波数
- 小容量オンチップキャッシュ
CPU
L1
L2
CPU
L1
L2
ノード制御
ボトルネック
メインメモリとのデータスルー
プットが性能アップの鍵
CPU
L1
L2
CPU
L1
L2
ノード制御
- 広いバンド幅
- 狭いインターフェース L3 キャッシュ - 高速アクセス
- 大容量
バンド幅
L3 キャッシュにより
- 遅いアクセス時間
メインメモリ 30%の性能向上
メインメモリ
L3キャッシュなし
L3キャッシュあり
計算機アーキテクチャー Computer Architecture
11
高速性と大容量の両立
2003年2月10日
世界最高速の動作クロック周波数750MHzと大容量
144Mbitを実現した「キャッシュDRAM LSI」を開発
このたび、次世代の高性能サーバ用に、世界最高速の動作クロック周波
数750MHzと144Mbitの大容量を実現した「キャッシュDRAM LSI」を開発し
ました。本LSI開発技術は、高速SRAMに取って代わりキュッシュメモリの
大容量化を行うことで、今後のIT社会の基盤となる次世代サーバの高性
能化に道を拓くものです。(以下、略)
• 0.18µm Logic-DRAM混載プロセス
• DRAM 144Mb/chip,
SRAM 108Kb, 論理800KGを集積
•動作クロック周波数 750MHz
•DRAMアクセス性能
ランダム(tRAC): 8.0ns
シーケンシャル(tCAC): 5.3ns
•内部バンド幅48GB/s
DRAM DRAM DRAM DRAM
SOG
SRAM
SRAM
SOG
I/O回路
SRAM
I/O回路
DRAM DRAM DRAM DRAM
計算機アーキテクチャー Computer Architecture
12
7.容量と速度の両立:記憶階層の利用
・記憶階層
時間的局所性・空間的局所性、メモリの基本
・キャッシュ
ダイレクト・マップ方式
コンパイラ
キャッシュの性能測定
インタフェース
コンピュータ
セット・アソシアティブ方式
マルチ・レベル・キャッシュ
制 御
・仮想記憶
記 憶
データ
TLB
パ ス
プロセッサ
入 力
出 力
計算機アーキテクチャー Computer Architecture
仮想記憶
仮想記憶 :
通常は磁気ディスクでできている2次記憶に対して、
主記憶にキャッシュの役割を果たさせる技法
○複数プログラム間でメモリを効率よく共有
○主記憶容量の限界に対処するプログラミング上の負荷を軽減
1つのマシン上で複数のプログラムが稼動しているケースでは
・全プログラムが要求するメモリの合計量は、
マシン上の利用可能な主記憶の量よりもはるかに大きくなりうる
・主記憶には各プログラムの実働している一部分だけを置けばよい
↓
仮想記憶では
・キャッシュと基本的に同じ概念である
・各プログラム独自のアドレス空間を実アドレスに変換する機能と、
他のプログラムのアドレス空間を保護する機能を備えねばならない
13
計算機アーキテクチャー Computer Architecture
14
仮想記憶
変換
物理アドレス
仮想アドレス
仮想ページ番号 ページ内オフセット
ページサイズ
決定
物理ページ番号 ページ内オフセット
ディスク上でのアドレス
計算機アーキテクチャー Computer Architecture
ページの配置と検索
ページ・フォールト: キャッシュでのミスに相当
・ディスクのアクセスは遅いので、ミス・ペナルティが途方も無く大きい
ミスの発生低減 → ページ配置はフル・アソシアティブ方式
エントリの検索容易化 → ページ表
ページの所在を突き止める為の
メモリを全面的にインデックス付
けした表
15
計算機アーキテクチャー Computer Architecture
16
ページ表
仮想アドレス(232=4Gバイト空間)
31
仮想ページ番号
ページ表
レジスタ
20
有効ビット
12 11
0
ページ内オフセット
12
ページ表
物理ページ番号
2 20
=1M
ページ
1
0
2 12バイト
=4Kバイト
/ページ
18
29
物理ページ番号
ディスク装置
12 11
0
ページ内オフセット
物理アドレス(230=1Gバイト空間)
計算機アーキテクチャー Computer Architecture
アドレス変換バッファ(translation-lookaside buffer:TLB)
TLB:主記憶に格納されるページ表の上位階層にある
キャッシュ
ページ表の
仮想ページ番号
有効 タグ
TLB
物理ページ・アドレス
物理メモリ
1
1
0
1
ページ表
有効 物理ページorディスク上アドレス
1
1
1
1
0
1
1
0
1
ディスク装置
17
計算機アーキテクチャー Computer Architecture
18
TLBとキャッシュの構成
仮想
アドレス
31
12 11
仮想ページ番号
有効
ビット
0
ページ内オフセット
TLBインデックス
タグ
物理ページ番号
仮想アドレス・タグ
1
TLB
29
物理
アドレス
12 11
0
物理ページ番号
ページ内オフセット
物理アドレス・タグ
キャッシュ・インデックス
31
16 15
有効
ビット
タグ
1
物理アドレス・タグ
キャッシュ
2
データ
0
バイト
オフセット
計算機アーキテクチャー Computer Architecture
19
記憶階層のデータ参照手順
データ存在場所
キャッシュヒット
TLBアクセス
キャッシュアクセス
キャッシュ
TLBミス
キャッシュミス
仮想記憶ヒット
主メモリ・ページ
ページ表アクセス
仮想記憶ミス=ページフォールト
ディスク装置
TLBヒット
TLB
仮想ページ番号
タグ
TLB
インデックス t
ページ表
インデックス p
t 有効
ビット
ページ内
オフセット
タグ
p 有効
ビット
主メモリ・ページ
インデックス m
物理ページ番号
キャッシュ
ページ内
オフセット
キャッシュ
インデックス c
物理ページ番号
ページ表
ページ内
オフセット
物理アドレス
物理ページ番号
タグ
c 有効
ビット
バイト
オフセット
タグ
主メモリ・ページ
m
データ
データ
ディスク装置
データ
計算機アーキテクチャー Computer Architecture
マルチ・レベル・キャッシュの性能(2)
20
2レベルのキャッシュ、1レベルのDRAM、およびディスクを備えた1GHzのプロセッサが
ある。メモリ・システムは下記の性能を持つ。
構成要素
ヒット時間
ミス率
ブロック・サイズ
1st キャッシュ
1サイクル
5% (data), 1% (inst)
64 bytes
2nd キャッシュ 20サイクル+1サイクル/64bits
2%
128 bytes
DRAM
50ns+25ns/8bytes
0.1% (Page Fault) 16K bytes (Page Size)
TLB
1サイクル
0.1% (data), 0% (inst)
ディスクの平均アクセス時間(AMATdisk)は20msec、TLBのミス・ペナルティを100cycleと
して、命令の平均メモリ・アクセス時間(AMATinst)およびデータの平均メモリ・アクセス時
間(AMATdata)を求めよ。
AMATdram=(50ns+25ns×128bytes/8bytes)+0.001×AMATdisk
=(50ns+25ns×16)+0.001×20msec=20.45μsec⇒20.45μsec×1GHz=20450cycle
AMAT2lev=(20cycle+1cycle×64bytes/64bit)+0.02×AMATdram
=(20cycle+1cycle×8)+0.02×20450=437cycle
AMATinst=1cycle+0.01×AMAT2lev=5.37cycle
AMATdata=1cycle+0.05×AMAT2lev+1cycle+0.001×100cycle=23.95cycle