cpuの速度向上はいかに実現されたのか

32
CPUの速度向上はいかに実現されたのか? - 性能向上を支えた技術 -

Upload: joongjin-bae

Post on 22-May-2015

1.772 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Cpuの速度向上はいかに実現されたのか

CPUの速度向上はいかに実現されたのか?- 性能向上を支えた技術 -

 

Page 2: Cpuの速度向上はいかに実現されたのか

About Me

Name: Joongjin BaeBlog: http://baepiff.blogspot.com/Twitter: bae_j

Page 3: Cpuの速度向上はいかに実現されたのか

世界最古のComputer ENIACは1秒で約5000演算

Page 4: Cpuの速度向上はいかに実現されたのか

現代のCPUは1秒で約100億演算

Page 5: Cpuの速度向上はいかに実現されたのか

洗濯 脱水 乾燥

Page 6: Cpuの速度向上はいかに実現されたのか

寮に洗濯機が1台しかない場合

洗濯機殺す!洗濯機殺す!

Page 7: Cpuの速度向上はいかに実現されたのか

問題の解決方法● 洗濯機の性能を上げて洗濯時間を短縮

● 洗濯機を増やす

● 洗濯機、脱水機、乾燥機に分ける

Page 8: Cpuの速度向上はいかに実現されたのか

CPUの性能指標● レイテンシ(latency)

データ転送などを要求してから、その結果が返送されるまでの遅延時間のこと

● スループット(Throughput)一般に単位時間当たりの処理能力のこと

Page 9: Cpuの速度向上はいかに実現されたのか

分けてみましょう

一体型 学生A(洗濯) 学生A(乾燥) 学生B(洗濯) 学生B(乾燥)

分離型 学生A(洗濯) 学生A(乾燥)

学生B(洗濯) 学生B(乾燥)

時間

Page 10: Cpuの速度向上はいかに実現されたのか

分けてみましょう

一体型 A A B B C C D D E E

分離型 A A

B B

C C

D D

E E

時間

2時間短縮

Page 11: Cpuの速度向上はいかに実現されたのか

4段階に分けると

一体 A A A A B B B B C C C C D D D D E E E E

分離 A A A A

B B B B

C C C C

D D D D

E E E E

時間

3時間短縮

pipelineの説明終了!

Page 12: Cpuの速度向上はいかに実現されたのか

CPU がやっていること● メモリから命令を取得Instruction Fetch, IF

● 命令を解釈・解析Instruction Decoding, ID

● メモリからデータを読込Operand Fetch, OF

● 計算を実行Instruction Execution, EX

● メモリにデータを書込Operand Store, OS又はWrite Back, WB

Page 13: Cpuの速度向上はいかに実現されたのか

CPU がやっていること

Memory

Load/StoreUnit

FetchUnit

DecodeUnit

Register FileUnit

ExecutionUnit

IFID

OF

WB

EX

== 1個の命令実行

Page 14: Cpuの速度向上はいかに実現されたのか

PIPELINEに戻って

命令A 取得 解析 読込 実行 書込

命令B 取得 解析 読込 実行 書込

命令C 取得 解析 読込 実行 書込

命令D 取得 解析 読込 実行 書込

命令E 取得 解析 読込 実行 書込

時間

命令

パイプラインはスループットを飛躍的に向上させた技術

Page 15: Cpuの速度向上はいかに実現されたのか

性能を上げるためには● 均等なパイプライン段階● 同じ処理作業● 独立した作業● パイプラインのコストの最少化

Page 16: Cpuの速度向上はいかに実現されたのか

均等なパイプライン段階

学生A 1 2 3 3 3 3 4 4

学生B 1 2 3 3 3 3 4 4

学生C 1 2 3 3 3 3 4 4

学生D 1 2 3 3 3 3 4 4

時間

一番処理時間が長い段階のパイプラインの影響を受ける。

Stall発生

Page 17: Cpuの速度向上はいかに実現されたのか

同じ処理作業

学生A 洗濯 乾燥

学生B 洗濯 すすぎ 乾燥

学生C Stall 洗濯 乾燥

学生D 洗濯 乾燥

学生E 洗濯 乾燥

時間

すすぎをすることでPipeline Stallが発生してしまう。

Page 18: Cpuの速度向上はいかに実現されたのか

独立した作業

学生A 洗濯 乾燥

学生B 洗濯 乾燥

学生C 確認 洗濯 乾燥

学生D 洗濯 乾燥

学生E 洗濯 乾燥

時間

赤い服を洗濯してもいいかを確認する作業が必要になるため遅くなる。

CPUでは分岐予測、結果予測などの回避策

Page 19: Cpuの速度向上はいかに実現されたのか

パイプラインのコスト● 一体洗濯機から洗濯機、乾燥機への入替えコスト● レイテンシの犠牲

洗濯機から乾燥機への移動コストが発生

Page 20: Cpuの速度向上はいかに実現されたのか

これで充分でしょうか1 x = data[10];2 y = x + 10;3 a = b / c;4 d = e * f;

2行は1行の結果(x)に依存するが、3,4行はxに依存しないため先に実行してもいい

Page 21: Cpuの速度向上はいかに実現されたのか

Out-of-order実行

x=data[10] 取得 解析 読込 実行 書込

y=x+10 取得 解析 読込 実行

a=b/c 取得 解析 読込 実行 書込

d=e*f 取得 解析 読込 実行 書込

時間

命令

x=data[10]

y=x+10

in-order

out-of-order

a=b/c

d=e*f

xとの依存関係がない3行を先に実行してしまる

Page 22: Cpuの速度向上はいかに実現されたのか

もうちょっと頑張って

x=data[10]

y=x+10

a=b/c

d=e*f

時間

命令

SuperScalarプロセッサは複数のパイプラインを用意し同時に命令を実行できるプロセッサ

Page 23: Cpuの速度向上はいかに実現されたのか

CPUのレイテンシを向上するためには???

Page 24: Cpuの速度向上はいかに実現されたのか

The answer is CACHE!!!

Page 25: Cpuの速度向上はいかに実現されたのか

CPUとメモリクロック比較

1990 1995 2000 2005 20100

500

1000

1500

2000

2500

3000

3500

4000

CPU

RAM

Page 26: Cpuの速度向上はいかに実現されたのか

なぜCACHEが必要?● CPUの実行ユニットにメモリ直結した場合

アクセスだけで200cycleが必要

● 命令実行は1cycleで済む

● 待ちが発生してしまう

MemoryExecutionUnit

Page 27: Cpuの速度向上はいかに実現されたのか

Cache用語● cache hit

キャッシュに欲しいデータがある

● cache missキャッシュに欲しいデータがない

● miss penaltycache miss時メモリからデータを取得しキャッシュに入れるコスト

● hit latencycache hit時のコスト

Page 28: Cpuの速度向上はいかに実現されたのか

なぜ複数のCACHE?

MemoryExecution

UnitL1

Cache

2 cycle 200 cycle

● L1 cacheは現実上サイズを簡単に増やせない頑張って256KB

● サイズを増やすことでcache hit rateは上がるがcache latencyは悪くなる

● cacheにほしいデータがなかった場合の時間のロスが大きい

Page 29: Cpuの速度向上はいかに実現されたのか

なぜ複数のCACHE?

MemoryExecution

UnitL1

Cache

2 cycle 10 cycle

L2Cache

200 cycle

● L1 cacheでcache latencyを向上

● L2 cacheでcache hit rateを向上

● 平均アクセスタイムの改善hit latency + (cache hit / cache miss) * cache penalty

Page 30: Cpuの速度向上はいかに実現されたのか

まとめ● Pipeline = 流れ作業の効率化

● Superscalar = pipelineの並列化

● Out-of-Order = 先に進めるなら進め

● Cache = 待ち時間の短縮

● RISC & CISC、分岐予測、結果予測、投機実行、prefetch等は宿題

Page 31: Cpuの速度向上はいかに実現されたのか

参考図書

Page 32: Cpuの速度向上はいかに実現されたのか