...

ハードウェアによる CPUの高速化技術

by user

on
Category: Documents
11

views

Report

Comments

Transcript

ハードウェアによる CPUの高速化技術
ハードウェアによる
CPUの高速化技術
長岡技術科学大学
電気電子情報工学専攻
出川智啓
今回の内容

CPUの性能の見積

CPUの進化

CPU(コア)に搭載されている高速化技術
139
GPGPU実践基礎工学
2015/10/07
コンピュータの歴史

世界初のデジタルコンピュータ



世界初の汎用コンピュータ




1944年 ハーバードMark I
機械式リレーを採用
1946年 ENIAC
軍事用に開発(ミサイルの弾道計算など)
300FLOPS
金融や株取引にも利用が拡大

140
様々な用途に利用できるようコンピュータを設計
GPGPU実践基礎工学
2015/10/07
スーパーコンピュータ

様々な用途に利用できるようコンピュータを設計



設計が複雑化
1970年代には性能が停滞
科学技術計算に特化して性能を高めたコンピュータ

Cray‐1


世界初のスーパーコンピュータ
日本製スーパーコンピュータ


141
日立,富士通,NECが製造
たびたび世界トップの性能を達成
GPGPU実践基礎工学
2015/10/07
TOP500 List(2015, Jun.)

http://www.top500.org/
計算機名称(設置国)
アクセラレータ
1
Tianhe‐2 (China)
Intel Xeon Phi
2
Titan (U.S.A.)
NVIDIA K20x
3
Sequoia (U.S.A.)
4
実効性能[PFlop/s]
/ピーク性能[PFlop/s]
33.9/54.9
消費電力[MW]
17.8
17.6/27.1
8.20
−
17.2/20.1
7.90
K computer (Japan)
−
10.5/11.3
12.7
5
Mira (U.S.A.)
−
8.59/10.1
3.95
6
Piz Daint
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
Vulcan (U.S.A.)
−
4.29/5.03
1.97
10
142
(Switzerland)
NVIDIA K20x
GPGPU実践基礎工学
2015/10/07
CPUの理論性能

Floating Point Operations Per Second


1秒あたりに浮動小数演算を何回実行できるか
なぜ浮動小数点演算だけ?

整数の加算はアドレス計算(プログラムカウンタなど)で頻繁に
使うので高速になるよう設計

浮動小数点演算と比較すると整数演算の影響は非常に小さい

143
影響が小さくないシステムは使い物にならない
GPGPU実践基礎工学
2015/10/07
CPUの理論性能

公式


FLOPS = 1コアの演算性能 [?]
× コア数
[Core]
× CPUの動作周波数 [Hz=Clock/sec]
1コアの演算性能



144
=1度に発行出来る浮動小数点演算命令
単位は[Floating Point Operations/Clock /Core]
性能の評価には動作周波数だけでなく,1コアが1クロックで
発行できる命令数が重要
GPGPU実践基礎工学
2015/10/07
CPUの理論性能

FLOPS = 1コアの演算性能
× コア数
× CPUの動作周波数

1コアの演算性能の向上


コア数の増加


演算器(トランジスタ)の増加
様々な機能を追加(今日の内容)
トランジスタの増加
CPUの動作周波数

145
回路の効率化や印可電圧の向上
GPGPU実践基礎工学
動作周波数の向上に注力
(ほぼ全ての処理が速くなる)
2015/10/07
CPUの性能の変化

Intelの予告(Intel Developer Forum 2003)

2007年頃には10GHzに達する
http://pc.watch.impress.co.jp/docs/2003/0227/kaigai01.htmより引用
146
GPGPU実践基礎工学
2015/10/07
CPUの性能の変化

2004年頃からクロックが停滞
http://www.gdep.jp/page/view/248より引用
147
GPGPU実践基礎工学
2015/10/07
CPUの性能向上*

(2012)
電子回路の構成部品






*姫野龍太郎,絵でわかるスーパーコンピュータ,講談社
機械式リレー
真空管
トランジスタ
IC (Integrated Circuit)
LSI (Large Scale Integrated Circuit)
集積率が上昇
製造技術の進歩による配線の細線化

250nm→180nm→130nm→90nm→65nm→45nm→32nm→22nm



148
10nmまではなんとかなりそう→3次元構造へ
集積できるトランジスタ数の増加
抵抗の低下による消費電力低減
GPGPU実践基礎工学
2015/10/07
CPUの性能向上*

*姫野龍太郎,絵でわかるスーパーコンピュータ,講談社
(2012)
製造技術の進歩による配線の細線化
1.集積できるトランジスタ数の増加


同じ面積に集積できるトランジスタ数が増加
複雑な回路を構成
2.プロセッサの処理速度の向上


149
抵抗が線幅に比例して減少し,消費電力が低下
減少した電力を周波数向上に利用

1秒あたりに0と1を切り替える回数(動作周波数)を増加

(トランジスタ スイッチング速度,消費電力等のキーワードでGoogling)
GPGPU実践基礎工学
2015/10/07
ムーアの法則*

*Moore, G.E., Electronics, Vol.38,No.8(1965).
http://ja.wikipedia.org/wiki/ムーアの法則
http://en.wikipedia.org/wiki/Moore%27s_law
インテルの共同設立者ムーアによる経験則


半導体の集積率は1年で倍になる
後に「18ヶ月で2倍」に修正
姫野龍太郎,絵でわかるスーパーコンピュータ,講談社 (2012)より引用
150
GPGPU実践基礎工学
2015/10/07
1サイクルあたりの命令数,トランジスタ数(×106)
CPUの性能向上の方向性
Makino, J., SC07
151
GPGPU実践基礎工学
2015/10/07
1サイクルあたりの命令数,トランジスタ数(×106)
CPUの性能向上の方向性
1サイクルで発行できる
命令数が増加
命令数が停滞
増加するトランジスタ数を
利用して複雑な回路を構成
152
GPGPU実践基礎工学
2015/10/07
マイクロアーキテクチャの進化

フォン・ノイマン型コンピュータ



プログラムが主記憶に置かれ,1命令ごとにメモリから取り出
して逐次実行
現在のコンピュータではメモリへのアクセス時間>>演算時間
あまりにも遅いので基本原理から逸脱して高速化





153
キャッシュ
命令パイプライン
アウト・オブ・オーダー実行
命令の同時実行(命令レベル並列),スーパースカラ実行
分岐予測・投機的実行
GPGPU実践基礎工学
2015/10/07
命令パイプライン

複数の命令を少しずつずらしながらオーバーラップさせ
て実行


一種のバケツリレー
フォン・ノイマン型コンピュータの動作原理

フェッチ,デコード,実行の3段階

ある命令の実行が終わってから次の命令をフェッチ

分岐命令以外は実行の終了を待つ必要はない
命令の実行中に次の命令を実行(フェッチ,デコード)可能
154
GPGPU実践基礎工学

2015/10/07
命令パイプラインの模式図
命令1
フェッチ
命令2
命令3
命令4
デコード
実行
フェッチ
デコード
実行
フェッチ
デコード
実行
フェッチ
デコード
実行
実行開始
処理時間
2個の命令を実行する時間で4個の命令を実行
155
GPGPU実践基礎工学
2015/10/07
命令の構成

1命令の実行は5ステップで構成

各ステップを担当するユニット(処理器)が存在
フェッチ
IF
ID
デコード
OF
IF : Instruction Fetch
ID : Instruction Decode
OF : Operand Fetch
EX : Execution
WB : Write Back
156
実行
EX
WB
命令をメモリから読み込み
命令をデコード
データをメモリから読み込み
演算の実行
演算結果をレジスタへ書き込み
GPGPU実践基礎工学
2015/10/07
命令パイプラインの模式図(詳細)

各ユニットの利用効率が上昇

15ステップで3回利用→7ステップで3回利用
命令1
IF
ID
OF
EX
WB
IF
ID
OF
EX
WB
IF
ID
OF
EX
命令2
命令3
実行開始
157
WB
処理時間
GPGPU実践基礎工学
2015/10/07
パイプライン処理を阻害する要因

全てのプログラムをパイプライン処理で高速化すること
は不可能

パイプライン処理を阻害する要因

物理的な資源の不足(構造的ハザード)

直前の命令が未完了(データハザード)

分岐命令による命令の未確定(制御ハザード)
158
GPGPU実践基礎工学
2015/10/07
構造的ハザード

プロセッサ内の資源の不足



演算ユニットやレジスタなどの取り合い
優先する命令に資源を割り当て,その他の命令は待機
資源を追加すれば解消
命令1
IF
演算結果をレジスタへ
書き込み
ID
OF
EX
WB
IF
ID
OF
EX
WB
IF
ID
OF
EX
命令2
命令3
WB
データをメモリから読み
込み,レジスタへ格納
実行開始
159
処理時間
GPGPU実践基礎工学
2015/10/07
データハザード

直前の命令の結果を利用


直前の命令の結果がレジスタに無く,フェッチが不可能
結果をレジスタに戻さず次の命令のオペランドとして使用
(レジスタバイパス)
WBが終わっていないので
cの値が未確定
命令1
IF
OF
EX
WB
IF
ID
OF
EX
WB
e = c + d
IF
ID
OF
EX
WB
命令2
命令3
実行開始
160
c = a + b
ID
処理時間
GPGPU実践基礎工学
2015/10/07
命令の同時実行(スーパースカラ実行)

お互いに無関係な命令を並行して(同時に)実行


並行して実行しても,順序を変えて実行しても結果は同じ
命令レベル並列性
t1 = a*b
t2 = c*d
t = t1 + t2



tの計算にはt1とt2の両方が必要
t1とt2はどちらを先に実行しても,並列に実行してもよい
t1とt2を同時に処理することで高速化

161
a,b,c,dを読み出し,CPUで乗算命令を2個同時に発行できるなら
GPGPU実践基礎工学
2015/10/07
命令の同時実行(スーパースカラ実行)


お互いに無関係な命令を並行して(同時に)実行
並行して実行できる演算


t1,t2が浮動小数と整数なら同時実行が可能
t1,t2が同じ型なら構造的ハザードを回避できる場合に同時
実行可能
命令1
IF
ID
OF
EX
WB
命令2
IF
ID
OF
EX
WB
IF
ID
OF
EX
命令3
実行開始
162
t1 = a*b
t2 = c*d
WB
t = t1 + t2
処理時間
GPGPU実践基礎工学
2015/10/07
アウト・オブ・オーダー実行

命令の順序を入れ替えて実行




命令をいくつもフェッチし,デコードを行い,オペランドが得ら
れた順に実行
順番通り計算した場合と同じ結果が得られるように制御
実行の効率が向上
メモリアクセスの改善

現在の計算機はメモリへのアクセス時間>>演算時間


163
1個のデータを読み出す間に100回以上演算が可能
メモリ読み出し命令を可能な限り早く発行
GPGPU実践基礎工学
2015/10/07
アウト・オブ・オーダー実行
依存性
あり
依存性
あり
164
int
a,b,c;
float x,y,z;
int
a,b,c;
float x,y,z;
c = a+b;
c = c*c;
c = a+b;
z = x+y;
同時に命令を
フェッチ,デコード
c = c*c;
z = z*z;
同時に命令を
フェッチ,デコード
z = x+y;
z = z*z;
依存性なし
依存性なし
GPGPU実践基礎工学
2015/10/07
アウト・オブ・オーダー実行

命令の順序を入れ替えて実行

命令をいくつもフェッチし,デコードを行い,オペランドが得ら
れた順に実行
命令1
命令2
IF
ID
OF
EX
WB
IF
ID
OF
EX
WB
c = a+b;
z = x+y;
オペランドが得られた方を先に実行(うまくいけば同時実行)
命令3
IF
命令4
ID
OF
EX
WB
IF
ID
OF
EX
実行開始
165
WB
c = c*c;
z = z*z;
処理時間
GPGPU実践基礎工学
2015/10/07
制御ハザード

条件分岐命令が存在


どちらに分岐するかわからないため,命令をフェッチできない
ループアンロールによる条件分岐(判断)の削減,分岐予測・
投機的実行
命令1
IF
ID
OF
EX
WB
IF
ID
OF
EX
IF
ID
OF
命令2? 3?
命令4
実行開始
166
if(命令1){
命令2
}else{
命令3
WB
}
命令4
EX
WB
処理時間
GPGPU実践基礎工学
2015/10/07
分岐予測

条件の判定を事前に予測


予測した先の命令の実行を準備
予測が当たると時間を大きく節約
条件確定
命令1
IF
ID
OF
EX
WB
IF
命令2
if(命令1){
命令2
}else{
命令3
}
命令4
ID
OF
EX
WB
IF
ID
OF
EX
条件予測無し
命令4
実行開始
167
処理時間
GPGPU実践基礎工学
2015/10/07
WB
分岐予測

条件の判定を事前に予測


予測した先の命令の実行を準備
予測が当たると大きな時間の節約になる
条件確定
命令1
命令2
IF
ID
OF
EX
WB
IF
ID
OF
EX
WB
IF
ID
OF
EX
命令4
実行開始
168
if(命令1){
命令2
}else{
命令3
}
命令4
命令2に分岐すると予測
WB
処理時間
GPGPU実践基礎工学
2015/10/07
分岐予測

条件の判定を事前に予測


予測した先の命令の実行を準備
予測が当たると大きな時間の節約になる
条件確定
命令1
命令2
IF
ID
OF
EX
WB
IF
ID
OF
EX
WB
IF
ID
OF
EX
命令4
実行開始
169
if(命令1){
命令2
}else{
命令3
}
命令4
命令2に分岐すれば
そのまま実行
WB
処理時間
GPGPU実践基礎工学
2015/10/07
分岐予測

条件の判定を事前に予測


予測した先の命令の実行を準備
予測が当たると大きな時間の節約になる
条件確定
命令1
IF
ID
OF
EX
WB
命令3に分岐すれば,命令
2を破棄して命令3を準備
命令3
IF
命令4
実行開始
170
if(命令1){
命令2
}else{
命令3
}
命令4
ID
OF
EX
WB
IF
ID
OF
EX
処理時間
GPGPU実践基礎工学
2015/10/07
WB
静的な分岐予測

ループの回数だけ条件判断

i<Nならループ継続

N‐1回はi<Nが成立,最後の1回でi<Nが不成立

常に成立すると予測しておけば,予測が外れるのは1回のみ
for(i=0;i<N;i++){
命令1
}
命令2
171
GPGPU実践基礎工学
2015/10/07
投機的実行

両方の分岐先の実行を並列に進め,判定が出た段階で
正しい方の結果のみを残す


大量のトランジスタを集積できるようになって実現
GPUのif分岐は投機的実行に類似
if(命令1){
条件確定
ID
OF
EX
WB
命令2
IF
ID
OF
EX
WB
命令3
IF
ID
OF
EX
WB
IF
ID
OF
EX
命令1
IF
命令4
実行開始
172
条件が成立
した方を残す
命令2
}else{
命令3
}
命令4
WB
処理時間
GPGPU実践基礎工学
2015/10/07
Fly UP