シングルコアとマルチコア
今回の内容
前々回の授業の復習
CPUの進化 半導体集積率の向上→CPUの動作周波数の向上 + 複雑な処理を実行する回路を構成(前々回の授業) マルチコアCPUへの進化
均一・不均一なプロセッサ
コプロセッサ,アクセラレータ
コンピュータの歴史
世界初のデジタルコンピュータ
1944年 ハーバードMark I 機械式リレーを採用 世界初の汎用コンピュータ
1946年 ENIAC 軍事用に開発(ミサイルの弾道計算など) 300FLOPS 金融や株取引にも利用が拡大
スーパーコンピュータ
様々な用途に利用できるようコンピュータを設計
設計が複雑化 1970年代には性能が停滞 科学技術計算に特化して性能を高めたコンピュータ
Cray‐1 世界初のスーパーコンピュータ 日本製スーパーコンピュータ
日立,富士通,NECが製造 たびたび世界トップの性能を達成スーパーコンピュータの性能
TOP500
http://www.top500.org スーパーコンピュータの世界ランキング 6月と11月に更新 次の発表は11月16~21日(New Orleans, LA)の Supercomputing Conferenceで 日本のスーパーコンピュータもたびたび世界一に
数値風洞 SR2201(東大) CP‐PACS(筑波大) 地球シミュレータ 前期トップのコンピュータから5倍の性能向上,2年半にわたって首位TOP500 List(2015, Jun.)
http://www.top500.org/
計算機名称(設置国) アクセラレータ 実効性能[PFlop/s] /ピーク性能[PFlop/s] 消費電力[MW] 1 Tianhe‐2 (China) Intel Xeon Phi 33.9/54.9 17.8 2 Titan (U.S.A.) NVIDIA K20x 17.6/27.1 8.20 3 Sequoia (U.S.A.) − 17.2/20.1 7.90 4 K computer (Japan) − 10.5/11.3 12.7 5 Mira (U.S.A.) − 8.59/10.1 3.956 Piz Daint (Switzerland) NVIDIA K20x 6.27/7.79 2.33
7 Shaheen II(Saudi Arabia) 5.54/7.24 2.83
8 Stampede (U.S.A.) Intel Xeon Phi 5.17/8.52 4.51
9 JUQUEEN (Germany) − 5.01/5.87 2.30
理論ピーク性能と実効性能
Floating Point Operations Per Second
1秒あたりに浮動小数演算を何回実行できるか 理論ピーク性能
プロセッサの数(プロセッサ上に実装された演算器の数)や動 作周波数から求める理論的な速度 「全ての機能が全て同時に使えれば」という理論的な値 実効性能(実行性能)
ある問題に対してプログラムを実行したときに得られた性能 プログラムの中で行っている計算(浮動小数点演算)の回数 を数え,プログラムの実行にかかった時間を測定して割り算理論ピーク性能と実効性能
Floating Point Operations Per Second
1秒あたりに浮動小数演算を何回実行できるか なぜ浮動小数点演算だけ?
整数の加算はアドレス計算(プログラムカウンタなど)で頻繁に 使うので高速になるよう設計 浮動小数点演算と比較すると整数演算の影響は非常に小さい 影響が小さくないシステムは使い物にならないCPUの理論性能
公式
FLOPS = 1コアの演算性能 [?] × コア数 [Core] × CPUの動作周波数 [Hz=Clock/sec] 1コアの演算性能
=1度に発行出来る浮動小数点演算命令 単位は[Floating Point Operations/Clock /Core] 性能の評価には動作周波数だけでなく,1コアが1クロックで 発行できる命令数が重要代表的な
CPUの理論性能
Pentium
1コアあたりの演算性能 1 コア数 1 動作周波数(最高) 300M 1 Floating Point Operations/clock/core × 1 core × 300M clock/s = 300M flop/s代表的な
CPUの理論性能
Pentium II
1コアあたりの演算性能 1 コア数 1 動作周波数(最高) 450M 1 Floating Point Operations/clock/core × 1 core × 450M clock/s = 450M flop/s代表的な
CPUの理論性能
Pentium III
1コアあたりの演算性能 1.5 コア数 1 動作周波数(最高) 1.4G 1.5 Floating Point Operations/clock/core × 1 core × 1.4G clock/s = 2.1G flop/s 初のSSE命令搭載代表的な
CPUの理論性能
Pentium 4
1コアあたりの演算性能 2 コア数 1 動作周波数(最高) 3.8G 2 Floating Point Operations/clock/core × 1 core × 3.8G clock/s = 7.6G flop/s代表的な
CPUの理論性能
Core 2 Duo
1コアあたりの演算性能 4 コア数 2 動作周波数(最高) 3.33G 4 Floating Point Operations/clock/core × 2 core × 3.33G clock/s = 26.64G flop/s Core 2 Quad
1コアあたりの演算性能 4 コア数 4 動作周波数(最高) 3.2G 4 Floating Point Operations/clock/core × 4 core × 3.2G clock/s = 51.2G flop/s代表的な
CPUの理論性能
Core i7 (Nehalem)
1コアあたりの演算性能 4 コア数 4 動作周波数(最高) 3.2G 4 Floating Point Operations/clock/core × 4 core × 3.2G clock/s = 51.2G flop/s Core i7 (Sandy Bridge)
1コアあたりの演算性能 8 コア数 6 動作周波数(最高) 3.5G 8 Floating Point Operations/clock/core AVX命令を搭載代表的な
CPUの理論性能
Core i7 (Haswell)
1コアあたりの演算性能 16 コア数 4 動作周波数(最高) 3.5G 16 Floating Point Operations/clock/core × 4 core × 3.5G clock/s = 224G flop/s AVX2命令CPUの性能向上
FLOPS =
1コアの演算性能
× コア数
× CPUの動作周波数
1コアの演算性能の向上
演算器(トランジスタ)の増加 コア数の増加
トランジスタの増加 CPUの動作周波数
動作周波数の向上に注力 (ほぼ全ての処理が速くなる) 様々な機能を追加 • パイプライン処理 • スーパースカラ実行 • 分岐予測等CPUの性能の変化
Intelの予告(Intel Developer Forum 2003)
CPUの性能の変化
CPUの性能向上
* 電子回路の構成部品
機械式リレー 真空管 トランジスタ IC (Integrated Circuit) LSI (Large Scale Integrated Circuit) 製造技術の進歩による配線の細線化
250nm→180nm→130nm→90nm→65nm→45nm→32nm→22nm 10nmまではなんとかなりそう→3次元構造へ 集積できるトランジスタ数の増加 集積率が上昇 *姫野龍太郎,絵でわかるスーパーコンピュータ,講談社 (2012)CPUの性能向上
* 製造技術の進歩による配線の細線化
1.集積できるトランジスタ数の増加
同じ面積に集積できるトランジスタ数が増加 複雑な回路を構成 2.プロセッサの処理速度の向上
抵抗が線幅に比例して減少し,消費電力が低下 減少した電力を周波数向上に利用 1秒あたりに0と1を切り替える回数(動作周波数)を増加 *姫野龍太郎,絵でわかるスーパーコンピュータ,講談社 (2012)ムーアの法則
* インテルの共同設立者ムーアによる経験則
半導体の集積率は1年で倍になる 後に「18ヶ月で2倍」に修正 http://en.wikipedia.org/wiki/Moore%27s_law *Moore, G.E., Electronics, Vol.38,No.8(1965). http://ja.wikipedia.org/wiki/ムーアの法則CPUの性能向上の限界
製造技術の進歩による配線の細線化
抵抗が線幅に比例して減少し,消費電力が低下 減少した電力を周波数向上に利用 細線化により絶縁部分も狭小化
漏れ電流が発生し,消費電力が減少できない 駆動する電力を上げると発熱量も増加 空冷の限界に到達 動作周波数が停滞
ポラックの法則
* 2倍のトランジスタを使っても,プロセッサの性能はその
平方根倍(1.4倍)程度にしか伸びない
消費電力は2倍,性能は1.4倍 一つのCPUに複数のプロセッサ(コア)を搭載
消費電力を上げずに“理論的な”性能を倍に プログラムの作り方に工夫が必要 *http://ja.wikipedia.org/wiki/ポラックの法則 http://en.wikipedia.org/wiki/Pollack%27s_RuleCPUの性能向上
半導体回路 の細線化 消費電力が 低下 低下分の電 力をトランジ スタのスイッ 動作周波数 向上 性能向上 ムーアの法則CPUの性能向上
半導体回路 の細線化 消費電力が 低下 低下分の電 力をトランジ スタのスイッ チングに利用 動作周波数 向上 性能向上 絶縁部が狭くなり 漏れ電流が発生, 電力が低下しない 消費電力の増加に よって発熱量が増 加,空冷の限界 2倍のトランジスタ を使っても性能は 1.4倍程度にしか 伸びない ムーアの法則CPUの性能向上
半導体回路 の細線化 消費電力が 低下 低下分の電 力をトランジ スタのスイッ 動作周波数 向上 性能向上 絶縁部が狭くなり 漏れ電流が発生, 電力が低下しない 消費電力の増加に よって発熱量が増 2倍のトランジスタ を使っても性能は 1.4倍程度にしか 伸びない コア数の増加 ムーアの法則CPUの性能向上
FLOPS =
1コアの演算性能
× コア数
× CPUの動作周波数
1コアの演算性能の向上
演算器(トランジスタ)の増加 コア数の増加
トランジスタ数の増加 CPUの動作周波数
回路の効率化や印可電圧の向上 劇的な性能向上は期待できない コンパイラの最適化を利用 複数のコアを使うように プログラムを書かないと 速くならないマルチコア化による高速化
処理をN個に分割して各コアが処理を分担
実行時間が1/Nに高速化されると期待 資源1 資源2 資源3 資源4 シングルコアCPU マルチコアCPU 資源1 資源2 資源3 資源4 資源1 資源2疑似的なマルチコア
Hyper Threading Technology
一つの物理CPUを複数のCPUに見せる技術 CPU内のレジスタやパイプラインの空きを利用 10~20%程度の高速化 資源1 資源2 資源3 資源4 シングルコアCPU Hyper Threading Technology 資源1 資源2 資源3 資源4 処理時間マルチコア
CPUの種類
均一(ホモジニアス,Homogeneous)なプロセッサ
一つのCPUの中に,同じ構造を持ったコアを複数持つ 全てのコアが同じ性能を持つ プログラムの並列化が容易 不均一(ヘテロジニアス,Heterogeneous)なプロセッサ
一つのCPUの中に,異なる構造を持った数種類のコアを持つ 複雑な処理が得意なコア(少数)と簡単な処理が得意なコア (多数)を持つ それぞれのコアを意識したプログラミングが必要マルチコア
CPU
均一(Homogeneous)なプロセッサ
Intel Coreシリーズ
AMD Phenomシリーズ