30
計算機アーキテクチャ特論 前半(並列アーキテクチャの基本、枝廣) 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⽇ 枝廣

計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

計算機アーキテクチャ特論

• 前半(並列アーキテクチャの基本、枝廣)– 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⽇ 枝廣

Page 2: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

ボード

SoC

メモリ・アーキテクチャCPU CPU

メモリ

CPU CPU

メモリ メモリ

集中メモリ方式 分散メモリ方式

CPU

キャッシュ

CPU内蔵メモリ

SoC内蔵メモリ

ボード上メモリ

別ボード上メモリ

ストレージシステム

メモリ階層

高速小容量

低速大容量

Page 3: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

⽬次• キャッシュ・コヒーレンシ

(キャッシュの⼀貫性)

• メモリ・コンシステンシ(メモリの整合性)

Page 3

Page 4: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

キャッシュの⼀貫性(coherency)

Page 4

33

CPU1 CPU2

3→4

メモリバス

キャッシュ

3?

AMP型(ハードウェアサポートなし)

CPU1 CPU2

3→4

共有メモリ

SMP型 (キャッシュのSnoop(盗み見)機構)

AMP型の場合、SW2でメモ

リ上の同じデータを使いたい場合、SW1はキャッシュの内

容を一度共有メモリに戻す必要がある。SW1からSW2への「通信」をプログラムに明示的に書く

SMP型では隣のCPUの

キャッシュの内容を盗み見る(Snoop)ハードウェア機

構を持つ。ソフトでは気にせずにSW1とSW2のデータ共有ができる。(オーバーヘッドが小さい)

キャッシュ

SW1 SW2 SW1 SW2

CPU1

3→4キャッシュ

シングルプロセッサ

SW1 SW2

共有メモリ

メモリバス

シングルプロセッサの場合SW1もSW2も同じ

キャッシュから読むので、オーバーヘッドなく正しい値が読める

Page 5: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

キャッシュの役割(復習)

Page 5

キャッシュは高速だが容量が小さい(入替がある)

Page 6: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

キャッシュの構造(復習)

Page 6

Page 7: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

ダイレクトマップ⽅式(復習)

Page 7

Page 8: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

ライトスルーとライトバック• ライトスルー

– 新しいデータを常にメモリに書き戻す– 書き込みデータをキャッシュに残す⽅式と残さない⽅式がある– いずれにしてもメモリとキャッシュはいつも同じ値– 書き込みの時に時間がかかる

• 後述のストアバッファ(ライトバッファ)を使うことによって改善できるが、それでも多くの書き込みが発⽣するとCPUが⽌まる

• ライトバック– 新しいデータをキャッシュに書き、メモリにはその時には書き戻さな

い– 3つの状態

• インバリッド︓初期値、無効な値• クリーン︓メモリと同じ値を保持• ダーティ︓メモリと異なる新しい値を保持

Page 8

Page 9: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

ライトバックキャッシュの状態遷移

Page 9

ライトのキャッシュミス

Page 10: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

例初期状態→インバリッド

値3を読む→クリーン

値4に書き換える→ダーティ

Page 10

CPU1

3→4キャッシュ

SW1 SW2

Page 11: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

マルチコアのキャッシュ(スヌープ⽅式)

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: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

ライトアップデートとライトインバリデート

• ライトアップデート– 書き込みがあった場合、同じデータをもつす

べてのコアのキャッシュの該当データを書き換える

• ライトインバリデート– 書き込みがあった場合、同じデータをもつす

べてのコアのキャッシュの該当データを無効化(インバリデート)する

– データ書き換えよりも無効化の⽅が簡単なので、組込みプロセッサでは主流

Page 12

Page 13: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

スヌープキャッシュの状態遷移• いろいろな⽅式がある

– MESI、MOESIなど

– M(Exclusive Modified︓モディファイド)データが書き変わっている状態(主記憶と⼀致せず、⾃分だけがデータを持っている)

– O(Owned︓オウンド)主記憶と⼀致していないが、他のコアも同じデータを持っている

– E(Exclusive Clean︓イクスクルーシブ)主記憶と⼀致し、⾃分だけが持っている

– S(Shared Clean︓シェアード)主記憶と⼀致し、他のコアも同じデータを持っている

– I(Invalid︓ インバリッド)無効状態

Page 13

Page 14: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

例(MESI)

Page 14

Page 15: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

Page 15

Page 16: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

Page 16

Page 17: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

Page 17

キャッシュ間コピーができるアーキテクチャもある

Page 18: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

Page 18

キャッシュ間コピーができるアーキテクチャもある

Page 19: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

Page 19

Page 20: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

Page 20

Page 21: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

ディレクトリ型• スヌープ型は集中メモリ型に多く使われるが、メモリが

分散している場合には実装が難しい• その場合にはディレクトリ型が使われる• 今後、⼀つのLSIに多くのプロセッサが搭載される時

代に有⽤になると思われる

Page 21

Page 22: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

Page 22

Page 23: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

Page 23

I

Page 24: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

フォールスシェアリング問題

Page 24

Page 25: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

メモリ整合性

Page 25

CPU1 CPU2

キャッシュ

AMP型(ハードウェアサポートなし)

SW1 SW2

同時に書き込みがあったときの順番は?キャッシュなどの影響は?

Page 26: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

メモリ整合性(メモリコンシステンシ)

• プロセッサP1とP2でそれぞれのプログラムが動く• 変数A、Bは共有メモリ上にあるとする• 両⽅のIF⽂が同時に真になることはないはず。ある種のス

イッチ/排他制御になっているつもり– 例えばP1でIFが真になったとすると、P2はL2の前を実⾏している

はずだからP2のIF⽂の評価のときには既にA=1になっているはず

• しかしながら、実際にはうまく動かない場合が多い

• なんらかの順序関係の記述が必要Page 26

Page 27: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

順序関係• 順序関係の保証をハードでやるのか、ソフトでやるのか

• ハードですべて保証しようと思えばできないことはないが、オーバーヘッドが⼤きい(プログラムのごく⼀部の話で全体が遅くなっていいのか)

• ⼀部ソフトで保証することにしてハードを簡単化• 緩和する順序関係の候補

– Read → Write– Write → Read– Write → Write– (Read → Read)

Page 27

Page 28: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

順序関係

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: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

メモリ整合性モデル

Page 29

W→R

W→R, W→W

ソフトウェアでの対応:同期をとって、(例えば)ライトバッファをはきだす命令を出す。sync()やflush()など

Page 30: 計算機アーキテクチャ特論 2014年10⽉20⽇ 枝廣

ライトバッファ、ライトマージ、ノンブロッキングキャッシュ

• ライトバッファ– 書き込み終了を待つことなく、バッファにためる– ライトバッファがあると、リードがライトを追い越

すことがある

• ライトマージ– 近く(同時にメモリに書きこめる)の書き込み命令

をまとめる– ライトマージすると、ライトがライトを追い越すこ

とがある

• ノンブロッキングキャッシュ– 前データ到着前にCPUはキャッシュアクセスが可能– あらゆるメモリアクセス処理の追い越しがあり得る

Page 30