SlideShare a Scribd company logo
1 of 32
Download to read offline
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

What's hot

20101220 pixiv tech_meeting
20101220 pixiv tech_meeting20101220 pixiv tech_meeting
20101220 pixiv tech_meetingsemind
 
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術2
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術2CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術2
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術2Hiroshi Watanabe
 
短距離古典分子動力学計算の 高速化と大規模並列化
短距離古典分子動力学計算の 高速化と大規模並列化短距離古典分子動力学計算の 高速化と大規模並列化
短距離古典分子動力学計算の 高速化と大規模並列化Hiroshi Watanabe
 
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術1
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術1CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術1
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術1Hiroshi Watanabe
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用MITSUNARI Shigeo
 
Box2D 今昔物語
Box2D 今昔物語Box2D 今昔物語
Box2D 今昔物語rch850 -
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門Yosuke Onoue
 
2011/06/11 #sfstudy ECCの遊び方。
2011/06/11 #sfstudy ECCの遊び方。2011/06/11 #sfstudy ECCの遊び方。
2011/06/11 #sfstudy ECCの遊び方。Minato Kirino
 
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールMITSUNARI Shigeo
 
Node.js - sleep sort algorithm
Node.js - sleep sort algorithmNode.js - sleep sort algorithm
Node.js - sleep sort algorithmtakesako
 
Deep learningもくもくハッカソンまとめup用
Deep learningもくもくハッカソンまとめup用Deep learningもくもくハッカソンまとめup用
Deep learningもくもくハッカソンまとめup用Akifumi Eguchi
 
続・SECDマシン
続・SECDマシン続・SECDマシン
続・SECDマシンt-sin
 
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutIntroduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutTaisuke Yamada
 
Python で munin plugin を書いてみる
Python で munin plugin を書いてみるPython で munin plugin を書いてみる
Python で munin plugin を書いてみるftnk
 
Async design with Unity3D
Async design with Unity3DAsync design with Unity3D
Async design with Unity3DKouji Hosoda
 

What's hot (20)

20101220 pixiv tech_meeting
20101220 pixiv tech_meeting20101220 pixiv tech_meeting
20101220 pixiv tech_meeting
 
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術2
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術2CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術2
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術2
 
短距離古典分子動力学計算の 高速化と大規模並列化
短距離古典分子動力学計算の 高速化と大規模並列化短距離古典分子動力学計算の 高速化と大規模並列化
短距離古典分子動力学計算の 高速化と大規模並列化
 
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術1
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術1CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術1
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術1
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用
 
Box2D 今昔物語
Box2D 今昔物語Box2D 今昔物語
Box2D 今昔物語
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
 
2011/06/11 #sfstudy ECCの遊び方。
2011/06/11 #sfstudy ECCの遊び方。2011/06/11 #sfstudy ECCの遊び方。
2011/06/11 #sfstudy ECCの遊び方。
 
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
 
Subprocess no susume
Subprocess no susumeSubprocess no susume
Subprocess no susume
 
NGSPICEの基本操作
NGSPICEの基本操作NGSPICEの基本操作
NGSPICEの基本操作
 
Node.js - sleep sort algorithm
Node.js - sleep sort algorithmNode.js - sleep sort algorithm
Node.js - sleep sort algorithm
 
Deep learningもくもくハッカソンまとめup用
Deep learningもくもくハッカソンまとめup用Deep learningもくもくハッカソンまとめup用
Deep learningもくもくハッカソンまとめup用
 
Boost tour 1.60.0 merge
Boost tour 1.60.0 mergeBoost tour 1.60.0 merge
Boost tour 1.60.0 merge
 
続・SECDマシン
続・SECDマシン続・SECDマシン
続・SECDマシン
 
Boost Tour 1.48.0 diff
Boost Tour 1.48.0 diffBoost Tour 1.48.0 diff
Boost Tour 1.48.0 diff
 
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutIntroduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and Dracut
 
Python で munin plugin を書いてみる
Python で munin plugin を書いてみるPython で munin plugin を書いてみる
Python で munin plugin を書いてみる
 
HPC Phys-20201203
HPC Phys-20201203HPC Phys-20201203
HPC Phys-20201203
 
Async design with Unity3D
Async design with Unity3DAsync design with Unity3D
Async design with Unity3D
 

Viewers also liked

高位合成友の会第三回(2015/12/08)LTスライド@ikwzm
高位合成友の会第三回(2015/12/08)LTスライド@ikwzm高位合成友の会第三回(2015/12/08)LTスライド@ikwzm
高位合成友の会第三回(2015/12/08)LTスライド@ikwzm一路 川染
 
ハードウェア技術の動向 2015/02/02
ハードウェア技術の動向 2015/02/02ハードウェア技術の動向 2015/02/02
ハードウェア技術の動向 2015/02/02maruyama097
 
マイコンのIOピンはなぜ入出力の両方に使えるのか?
マイコンのIOピンはなぜ入出力の両方に使えるのか?マイコンのIOピンはなぜ入出力の両方に使えるのか?
マイコンのIOピンはなぜ入出力の両方に使えるのか?nishio
 
20090401 第10回「論理回路のしくみ」
20090401 第10回「論理回路のしくみ」20090401 第10回「論理回路のしくみ」
20090401 第10回「論理回路のしくみ」Hiromu Shioya
 
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術智啓 出川
 
The Story of CPU
The Story of CPUThe Story of CPU
The Story of CPUTakashi Abe
 
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術智啓 出川
 
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ智啓 出川
 

Viewers also liked (11)

高位合成友の会第三回(2015/12/08)LTスライド@ikwzm
高位合成友の会第三回(2015/12/08)LTスライド@ikwzm高位合成友の会第三回(2015/12/08)LTスライド@ikwzm
高位合成友の会第三回(2015/12/08)LTスライド@ikwzm
 
ハードウェア技術の動向 2015/02/02
ハードウェア技術の動向 2015/02/02ハードウェア技術の動向 2015/02/02
ハードウェア技術の動向 2015/02/02
 
CPUの同時実行機能
CPUの同時実行機能CPUの同時実行機能
CPUの同時実行機能
 
マイコンのIOピンはなぜ入出力の両方に使えるのか?
マイコンのIOピンはなぜ入出力の両方に使えるのか?マイコンのIOピンはなぜ入出力の両方に使えるのか?
マイコンのIOピンはなぜ入出力の両方に使えるのか?
 
20090401 第10回「論理回路のしくみ」
20090401 第10回「論理回路のしくみ」20090401 第10回「論理回路のしくみ」
20090401 第10回「論理回路のしくみ」
 
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
 
The Story of CPU
The Story of CPUThe Story of CPU
The Story of CPU
 
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術
 
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
 
Code jp2015 cpuの話
Code jp2015 cpuの話Code jp2015 cpuの話
Code jp2015 cpuの話
 
CPUに関する話
CPUに関する話CPUに関する話
CPUに関する話
 

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

本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown本当にわかる Spectre と Meltdown
本当にわかる Spectre と MeltdownHirotaka Kawata
 
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装Ryosuke Okuta
 
Checkpointing Algorithms on In-memory DBMS
Checkpointing Algorithms on In-memory DBMSCheckpointing Algorithms on In-memory DBMS
Checkpointing Algorithms on In-memory DBMSSho Nakazono
 
Web時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメWeb時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメHideyuki Takeuchi
 
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016Nagato Kasaki
 
第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまで第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまでMugen Fujii
 
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~Akabane Hiroyuki
 
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システムTomohiro Ohtake
 
Java EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpJava EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpNorito Agetsuma
 
CakePHP - The point of upgrade
CakePHP - The point of upgradeCakePHP - The point of upgrade
CakePHP - The point of upgradeYasuo Harada
 
文献紹介:Video Transformer Network
文献紹介:Video Transformer Network文献紹介:Video Transformer Network
文献紹介:Video Transformer NetworkToru Tamaki
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1信之 岩永
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発Kentaro Ohkouchi
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するYoshifumi Kawai
 
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2Tomohiro Namba
 
文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at ScaleToru Tamaki
 

Similar to Cpuの速度向上はいかに実現されたのか (20)

本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown
 
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装
 
Checkpointing Algorithms on In-memory DBMS
Checkpointing Algorithms on In-memory DBMSCheckpointing Algorithms on In-memory DBMS
Checkpointing Algorithms on In-memory DBMS
 
Open stackceilometer
Open stackceilometerOpen stackceilometer
Open stackceilometer
 
ゆるかわPhp
ゆるかわPhpゆるかわPhp
ゆるかわPhp
 
Web時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメWeb時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメ
 
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
 
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 
第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまで第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまで
 
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~
 
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
 
Java EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpJava EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jp
 
CakePHP - The point of upgrade
CakePHP - The point of upgradeCakePHP - The point of upgrade
CakePHP - The point of upgrade
 
文献紹介:Video Transformer Network
文献紹介:Video Transformer Network文献紹介:Video Transformer Network
文献紹介:Video Transformer Network
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2
 
文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
 

More from Joongjin Bae

The secret to building good development teams
The secret to building good development teamsThe secret to building good development teams
The secret to building good development teamsJoongjin Bae
 
Reactive summit 2018
Reactive summit 2018Reactive summit 2018
Reactive summit 2018Joongjin Bae
 
[LT] Continuous Delivery
[LT] Continuous Delivery [LT] Continuous Delivery
[LT] Continuous Delivery Joongjin Bae
 
SEDA – Staged Event-Driven Architecture
SEDA – Staged Event-Driven ArchitectureSEDA – Staged Event-Driven Architecture
SEDA – Staged Event-Driven ArchitectureJoongjin Bae
 
理想の開発論-LT用
理想の開発論-LT用理想の開発論-LT用
理想の開発論-LT用Joongjin Bae
 
Aerospike紹介-LT用
Aerospike紹介-LT用Aerospike紹介-LT用
Aerospike紹介-LT用Joongjin Bae
 
Chapter 8 : Evaluation in Information Retrieval
Chapter 8 : Evaluation in Information RetrievalChapter 8 : Evaluation in Information Retrieval
Chapter 8 : Evaluation in Information RetrievalJoongjin Bae
 
voldemortの技術 - Dynamoとの比較
voldemortの技術 - Dynamoとの比較voldemortの技術 - Dynamoとの比較
voldemortの技術 - Dynamoとの比較Joongjin Bae
 
Programming in Scala Chapter 17 Collections
Programming in Scala Chapter 17 CollectionsProgramming in Scala Chapter 17 Collections
Programming in Scala Chapter 17 CollectionsJoongjin Bae
 

More from Joongjin Bae (10)

The secret to building good development teams
The secret to building good development teamsThe secret to building good development teams
The secret to building good development teams
 
Reactive summit 2018
Reactive summit 2018Reactive summit 2018
Reactive summit 2018
 
[LT] Continuous Delivery
[LT] Continuous Delivery [LT] Continuous Delivery
[LT] Continuous Delivery
 
SEDA – Staged Event-Driven Architecture
SEDA – Staged Event-Driven ArchitectureSEDA – Staged Event-Driven Architecture
SEDA – Staged Event-Driven Architecture
 
理想の開発論-LT用
理想の開発論-LT用理想の開発論-LT用
理想の開発論-LT用
 
Aerospike紹介-LT用
Aerospike紹介-LT用Aerospike紹介-LT用
Aerospike紹介-LT用
 
Chapter 8 : Evaluation in Information Retrieval
Chapter 8 : Evaluation in Information RetrievalChapter 8 : Evaluation in Information Retrieval
Chapter 8 : Evaluation in Information Retrieval
 
voldemortの技術 - Dynamoとの比較
voldemortの技術 - Dynamoとの比較voldemortの技術 - Dynamoとの比較
voldemortの技術 - Dynamoとの比較
 
Programming in Scala Chapter 17 Collections
Programming in Scala Chapter 17 CollectionsProgramming in Scala Chapter 17 Collections
Programming in Scala Chapter 17 Collections
 
MapReduce基礎
MapReduce基礎MapReduce基礎
MapReduce基礎
 

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等は宿題