Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
計算機アーキテクチャ特論
• 前半(並列アーキテクチャの基本、枝廣)– 10/6, 10/20, 10/27, 11/10, 11/17, 12/1(⽇程は予定)– 内容(変更の可能性あり)
• 序論(マルチコア=並列アーキテクチャ概論)• キャッシュ・コヒーレンシ、メモリ・コンシステンシ• 並列アーキテクチャモデル、OSモデル• スケーラビリティに関する法則• 並列プログラミングモデル、⾔語
– 資料置場︓ http://www.pdsl.jp/class/ (次回から紙配布なし)• 後半(最先端トピックス、加藤)
– 12/8〜– 内容(変更の可能性あり)
• 最先端計算機アーキテクチャのトレンド• Very Large Instruction Word (VLIW)• Simultaneous Multithreading (SMT)• Chip Multiprocessor (CMP)• Networks on Chips (NoC)• Graphics Processing Unit (GPU)• Many Integrate Core (MIC)
Page 1
2014年10⽉20⽇ 枝廣
ボード
SoC
メモリ・アーキテクチャCPU CPU
メモリ
CPU CPU
メモリ メモリ
集中メモリ方式 分散メモリ方式
CPU
キャッシュ
CPU内蔵メモリ
SoC内蔵メモリ
ボード上メモリ
別ボード上メモリ
ストレージシステム
メモリ階層
高速小容量
低速大容量
⽬次• キャッシュ・コヒーレンシ
(キャッシュの⼀貫性)
• メモリ・コンシステンシ(メモリの整合性)
Page 3
キャッシュの⼀貫性(coherency)
Page 4
33
CPU1 CPU2
3→4
メモリバス
キャッシュ
3?
AMP型(ハードウェアサポートなし)
CPU1 CPU2
3→4
共有メモリ
4
SMP型 (キャッシュのSnoop(盗み見)機構)
AMP型の場合、SW2でメモ
リ上の同じデータを使いたい場合、SW1はキャッシュの内
容を一度共有メモリに戻す必要がある。SW1からSW2への「通信」をプログラムに明示的に書く
SMP型では隣のCPUの
キャッシュの内容を盗み見る(Snoop)ハードウェア機
構を持つ。ソフトでは気にせずにSW1とSW2のデータ共有ができる。(オーバーヘッドが小さい)
キャッシュ
SW1 SW2 SW1 SW2
CPU1
3→4キャッシュ
シングルプロセッサ
3
SW1 SW2
共有メモリ
メモリバス
シングルプロセッサの場合SW1もSW2も同じ
キャッシュから読むので、オーバーヘッドなく正しい値が読める
キャッシュの役割(復習)
Page 5
キャッシュは高速だが容量が小さい(入替がある)
キャッシュの構造(復習)
Page 6
ダイレクトマップ⽅式(復習)
Page 7
ライトスルーとライトバック• ライトスルー
– 新しいデータを常にメモリに書き戻す– 書き込みデータをキャッシュに残す⽅式と残さない⽅式がある– いずれにしてもメモリとキャッシュはいつも同じ値– 書き込みの時に時間がかかる
• 後述のストアバッファ(ライトバッファ)を使うことによって改善できるが、それでも多くの書き込みが発⽣するとCPUが⽌まる
• ライトバック– 新しいデータをキャッシュに書き、メモリにはその時には書き戻さな
い– 3つの状態
• インバリッド︓初期値、無効な値• クリーン︓メモリと同じ値を保持• ダーティ︓メモリと異なる新しい値を保持
Page 8
ライトバックキャッシュの状態遷移
Page 9
ライトのキャッシュミス
例初期状態→インバリッド
値3を読む→クリーン
値4に書き換える→ダーティ
Page 10
CPU1
3→4キャッシュ
3
SW1 SW2
マルチコアのキャッシュ(スヌープ⽅式)
Page 11
Snoop Control Unit (SCU) I & D64bit bus
CoherenceControl
BusPrimaryAXI R/W64bit bus
Optional 2nd
AXI R/W64bit bus
Private lines
Interrupt Distributor
Configurable number ofhardware interrupt lines
IRQ
Configurable SMP(1 and 4 PEs)
Per CPUPeripherals
CPU/VFPL1 Cache
CPU/VFPL1 Cache
CPU/VFPL1 Cache
CPU/VFPL1 Cache
TimerWdog
CPUinterface
TimerWdog
CPUinterface
TimerWdog
CPUinterface
TimerWdog
CPUinterface
ARM11 MPCore
ライトアップデートとライトインバリデート
• ライトアップデート– 書き込みがあった場合、同じデータをもつす
べてのコアのキャッシュの該当データを書き換える
• ライトインバリデート– 書き込みがあった場合、同じデータをもつす
べてのコアのキャッシュの該当データを無効化(インバリデート)する
– データ書き換えよりも無効化の⽅が簡単なので、組込みプロセッサでは主流
Page 12
スヌープキャッシュの状態遷移• いろいろな⽅式がある
– MESI、MOESIなど
– M(Exclusive Modified︓モディファイド)データが書き変わっている状態(主記憶と⼀致せず、⾃分だけがデータを持っている)
– O(Owned︓オウンド)主記憶と⼀致していないが、他のコアも同じデータを持っている
– E(Exclusive Clean︓イクスクルーシブ)主記憶と⼀致し、⾃分だけが持っている
– S(Shared Clean︓シェアード)主記憶と⼀致し、他のコアも同じデータを持っている
– I(Invalid︓ インバリッド)無効状態
Page 13
例(MESI)
Page 14
Page 15
Page 16
Page 17
キャッシュ間コピーができるアーキテクチャもある
Page 18
キャッシュ間コピーができるアーキテクチャもある
Page 19
Page 20
ディレクトリ型• スヌープ型は集中メモリ型に多く使われるが、メモリが
分散している場合には実装が難しい• その場合にはディレクトリ型が使われる• 今後、⼀つのLSIに多くのプロセッサが搭載される時
代に有⽤になると思われる
Page 21
Page 22
Page 23
I
フォールスシェアリング問題
Page 24
メモリ整合性
Page 25
CPU1 CPU2
キャッシュ
AMP型(ハードウェアサポートなし)
SW1 SW2
同時に書き込みがあったときの順番は?キャッシュなどの影響は?
メモリ整合性(メモリコンシステンシ)
• プロセッサP1とP2でそれぞれのプログラムが動く• 変数A、Bは共有メモリ上にあるとする• 両⽅のIF⽂が同時に真になることはないはず。ある種のス
イッチ/排他制御になっているつもり– 例えばP1でIFが真になったとすると、P2はL2の前を実⾏している
はずだからP2のIF⽂の評価のときには既にA=1になっているはず
• しかしながら、実際にはうまく動かない場合が多い
• なんらかの順序関係の記述が必要Page 26
順序関係• 順序関係の保証をハードでやるのか、ソフトでやるのか
• ハードですべて保証しようと思えばできないことはないが、オーバーヘッドが⼤きい(プログラムのごく⼀部の話で全体が遅くなっていいのか)
• ⼀部ソフトで保証することにしてハードを簡単化• 緩和する順序関係の候補
– Read → Write– Write → Read– Write → Write– (Read → Read)
Page 27
順序関係
Page 28
スレッド2
Load M[x]
スレッド1
Store M[x]
W→R
W→W
R→W
スレッド2
Load M[x]スレッド1
Store M[x]
スレッド2
Store M[x]
スレッド1
Store M[x]スレッド2
Store M[x]スレッド1
Store M[x]
スレッド2
Store M[x]
スレッド1
Load M[x]スレッド2
Store M[x]スレッド1
Load M[x]
スレッド2
Load M[x]
スレッド1
Store M[x]同期
メモリ整合性モデル
Page 29
W→R
W→R, W→W
ソフトウェアでの対応:同期をとって、(例えば)ライトバッファをはきだす命令を出す。sync()やflush()など
ライトバッファ、ライトマージ、ノンブロッキングキャッシュ
• ライトバッファ– 書き込み終了を待つことなく、バッファにためる– ライトバッファがあると、リードがライトを追い越
すことがある
• ライトマージ– 近く(同時にメモリに書きこめる)の書き込み命令
をまとめる– ライトマージすると、ライトがライトを追い越すこ
とがある
• ノンブロッキングキャッシュ– 前データ到着前にCPUはキャッシュアクセスが可能– あらゆるメモリアクセス処理の追い越しがあり得る
Page 30