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


          
About Me

Name: Joongjin Bae
Blog: http://baepiff.blogspot.com/
Twitter: bae_j
世界最古のComputer ENIACは1秒で約5000演算
現代のCPUは1秒で約100億演算
洗濯   脱水   乾燥
寮に洗濯機が1台しかない場合


           洗濯機殺す!
問題の解決方法
●
    洗濯機の性能を上げて洗濯時間を
    短縮
●   洗濯機を増やす
●
    洗濯機、脱水機、乾燥機に分ける
CPUの性能指標
●   レイテンシ(latency)
    データ転送などを要求してから、
    その結果が返送されるまでの遅延時間のこと
●   スループット(Throughput)
    一般に単位時間当たりの処理能力のこと
分けてみましょう
                                      時間


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



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



                学生B(洗濯)   学生B(乾燥)
分けてみましょう
                                        時間


一体型   A   A   B   B   C   C   D   D     E     E
分離型   A   A
          B   B
              C   C
                  D   D
                      E   E           2時間短縮
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の説明終了!
CPU がやっていること
●
  メモリから命令を取得
  Instruction Fetch, IF
● 命令を解釈・解析

  Instruction Decoding, ID
●
  メモリからデータを読込
  Operand Fetch, OF
● 計算を実行

  Instruction Execution, EX
● メモリにデータを書込
CPU がやっていること
                  Fetch   ID     Decode
  IF
                   Unit           Unit


                               Register File
                 OF               Unit

                                        EX
 Memory
                                Execution
                                  Unit         WB


          Load/Store
             Unit




== 1個の命令実行
PIPELINEに戻って
                                                     時間


      命令A   取得   解析   読込   実行   書込
      命令B        取得   解析   読込   実行   書込
      命令C             取得   解析   読込   実行   書込
命     命令D                  取得   解析   読込   実行   書込
令
      命令E                       取得   解析   読込   実行   書込




    パイプラインはスループットを飛躍的に向上させた技術
性能を上げるためには
●
  均等なパイプライン段階
● 同じ処理作業

● 独立した作業

●
  パイプラインのコストの最少化
均等なパイプライン段階
                                                                                時間



学生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発生




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


学生A   洗濯   乾燥
学生B        洗濯   すすぎ     乾燥
学生C             Stall   洗濯   乾燥
学生D                          洗濯   乾燥
学生E                               洗濯   乾燥




      すすぎをすることでPipeline Stall
      が発生してしまう。
独立した作業
                                              時間


学生A   洗濯   乾燥
学生B        洗濯   乾燥
学生C                  確認   洗濯   乾燥
学生D                            洗濯   乾燥
学生E                                 洗濯   乾燥



赤い服を洗濯してもいいかを確認する
作業が必要になるため遅くなる。
CPUでは分岐予測、結果予測などの回避策
パイプラインのコスト
●   一体洗濯機から洗濯機、乾燥機への入替えコスト
●   レイテンシの犠牲
    洗濯機から乾燥機への移動コストが発生
これで充分でしょうか
1 x = data[10];
2 y = x + 10;
3 a = b / c;
4 d = e * f;

2行は1行の結果(x)に依存するが、3,4行はxに依
存しないため先に実行してもいい
Out-of-order実行
in-order
                       x=data[10]

                                                        y=x+10
                                                                 a=b/c

                                                                         d=e*f



out-of-order                                                      時間


      x=data[10] 取得   解析   読込       実行   書込
      y=x+10                                  取得   解析    読込       実行
      a=b/c           取得   解析       読込   実行   書込
  命   d=e*f                取得       解析   読込   実行   書込
  令
        xとの依存関係がない3行を先に実行してしまる
もうちょっと頑張って
                                  時間


         x=data[10]
                         y=x+10
                 a=b/c
命
令                d=e*f




    SuperScalarプロセッサ
    は複数のパイプラインを用意し同時に命令を実行できる
    プロセッサ
CPUのレイテンシ
を向上するため
には???
The answer is
  CACHE!!!
CPUとメモリクロック比較
4000


3500


3000


2500


                                     CPU
2000
                                     RAM


1500


1000


500


  0
  1990   1995   2000   2005   2010
なぜCACHEが必要?
●   CPUの実行ユニットにメモリ直結した場合
    アクセスだけで200cycleが必要
●   命令実行は1cycleで済む
●   待ちが発生してしまう


        Execution    Memory
          Unit
Cache用語
●   cache hit
    キャッシュに欲しいデータがある
●   cache miss
    キャッシュに欲しいデータがない
●   miss penalty
    cache miss時メモリからデータを取得しキャッシュ
    に入れるコスト
●   hit latency
    cache hit時のコスト
なぜ複数のCACHE?
     Execution      L1
       Unit                        Memory
                   Cache




         2 cycle       200 cycle
●   L1 cacheは現実上サイズを簡単に増やせない
    頑張って256KB
●   サイズを増やすことでcache hit rateは上がるがcache latency
    は悪くなる
●   cacheにほしいデータがなかった場合の時間のロスが大きい
なぜ複数のCACHE?
Execution             L1                 L2
  Unit                                                       Memory
                     Cache              Cache




     2 cycle                 10 cycle       200 cycle
●   L1 cacheでcache latencyを向上
●   L2 cacheでcache hit rateを向上
●   平均アクセスタイムの改善
    hit latency + (cache hit / cache miss) * cache penalty
まとめ
●   Pipeline = 流れ作業の効率化
●   Superscalar = pipelineの並列化
●   Out-of-Order = 先に進めるなら進め
●   Cache = 待ち時間の短縮
●   RISC & CISC、分岐予測、結果予測、投機実
    行、prefetch等は宿題
参考図書
Cpuの速度向上はいかに実現されたのか

More Related Content

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

  • 1. CPUの速度向上はいかに実現されたのか? - 性能向上を支えた技術 -  
  • 2. About Me Name: Joongjin Bae Blog: http://baepiff.blogspot.com/ Twitter: bae_j
  • 5. 洗濯 脱水 乾燥
  • 7. 問題の解決方法 ● 洗濯機の性能を上げて洗濯時間を 短縮 ● 洗濯機を増やす ● 洗濯機、脱水機、乾燥機に分ける
  • 8. CPUの性能指標 ● レイテンシ(latency) データ転送などを要求してから、 その結果が返送されるまでの遅延時間のこと ● スループット(Throughput) 一般に単位時間当たりの処理能力のこと
  • 9. 分けてみましょう 時間 一体型 学生A(洗濯) 学生A(乾燥) 学生B(洗濯) 学生B(乾燥) 分離型 学生A(洗濯) 学生A(乾燥) 学生B(洗濯) 学生B(乾燥)
  • 10. 分けてみましょう 時間 一体型 A A B B C C D D E E 分離型 A A B B C C D D E E 2時間短縮
  • 11. 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の説明終了!
  • 12. CPU がやっていること ● メモリから命令を取得 Instruction Fetch, IF ● 命令を解釈・解析 Instruction Decoding, ID ● メモリからデータを読込 Operand Fetch, OF ● 計算を実行 Instruction Execution, EX ● メモリにデータを書込
  • 13. CPU がやっていること Fetch ID Decode IF Unit Unit Register File OF Unit EX Memory Execution Unit WB Load/Store Unit == 1個の命令実行
  • 14. PIPELINEに戻って 時間 命令A 取得 解析 読込 実行 書込 命令B 取得 解析 読込 実行 書込 命令C 取得 解析 読込 実行 書込 命 命令D 取得 解析 読込 実行 書込 令 命令E 取得 解析 読込 実行 書込 パイプラインはスループットを飛躍的に向上させた技術
  • 15. 性能を上げるためには ● 均等なパイプライン段階 ● 同じ処理作業 ● 独立した作業 ● パイプラインのコストの最少化
  • 16. 均等なパイプライン段階 時間 学生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発生 一番処理時間が長い段階のパイ プラインの影響を受ける。
  • 17. 同じ処理作業 時間 学生A 洗濯 乾燥 学生B 洗濯 すすぎ 乾燥 学生C Stall 洗濯 乾燥 学生D 洗濯 乾燥 学生E 洗濯 乾燥 すすぎをすることでPipeline Stall が発生してしまう。
  • 18. 独立した作業 時間 学生A 洗濯 乾燥 学生B 洗濯 乾燥 学生C 確認 洗濯 乾燥 学生D 洗濯 乾燥 学生E 洗濯 乾燥 赤い服を洗濯してもいいかを確認する 作業が必要になるため遅くなる。 CPUでは分岐予測、結果予測などの回避策
  • 19. パイプラインのコスト ● 一体洗濯機から洗濯機、乾燥機への入替えコスト ● レイテンシの犠牲 洗濯機から乾燥機への移動コストが発生
  • 20. これで充分でしょうか 1 x = data[10]; 2 y = x + 10; 3 a = b / c; 4 d = e * f; 2行は1行の結果(x)に依存するが、3,4行はxに依 存しないため先に実行してもいい
  • 21. Out-of-order実行 in-order x=data[10] y=x+10 a=b/c d=e*f out-of-order 時間 x=data[10] 取得 解析 読込 実行 書込 y=x+10 取得 解析 読込 実行 a=b/c 取得 解析 読込 実行 書込 命 d=e*f 取得 解析 読込 実行 書込 令 xとの依存関係がない3行を先に実行してしまる
  • 22. もうちょっと頑張って 時間 x=data[10] y=x+10 a=b/c 命 令 d=e*f SuperScalarプロセッサ は複数のパイプラインを用意し同時に命令を実行できる プロセッサ
  • 24. The answer is CACHE!!!
  • 25. CPUとメモリクロック比較 4000 3500 3000 2500 CPU 2000 RAM 1500 1000 500 0 1990 1995 2000 2005 2010
  • 26. なぜCACHEが必要? ● CPUの実行ユニットにメモリ直結した場合 アクセスだけで200cycleが必要 ● 命令実行は1cycleで済む ● 待ちが発生してしまう Execution Memory Unit
  • 27. Cache用語 ● cache hit キャッシュに欲しいデータがある ● cache miss キャッシュに欲しいデータがない ● miss penalty cache miss時メモリからデータを取得しキャッシュ に入れるコスト ● hit latency cache hit時のコスト
  • 28. なぜ複数のCACHE? Execution L1 Unit Memory Cache 2 cycle 200 cycle ● L1 cacheは現実上サイズを簡単に増やせない 頑張って256KB ● サイズを増やすことでcache hit rateは上がるがcache latency は悪くなる ● cacheにほしいデータがなかった場合の時間のロスが大きい
  • 29. なぜ複数のCACHE? Execution L1 L2 Unit Memory Cache Cache 2 cycle 10 cycle 200 cycle ● L1 cacheでcache latencyを向上 ● L2 cacheでcache hit rateを向上 ● 平均アクセスタイムの改善 hit latency + (cache hit / cache miss) * cache penalty
  • 30. まとめ ● Pipeline = 流れ作業の効率化 ● Superscalar = pipelineの並列化 ● Out-of-Order = 先に進めるなら進め ● Cache = 待ち時間の短縮 ● RISC & CISC、分岐予測、結果予測、投機実 行、prefetch等は宿題