第2回講義

計算機アーキテクチャー Computer Architecture
1
計算機アーキテクチャー
1章:コンピュータの構成とテクノロジ(5つの構成要素、半導体、コスト)
コンパイラ
2章:性能の評価
(CPU時間、CPI)
3章:命令
(MIPS命令セット)
インターフェース
コンピュータ
制御
記憶
4章:算術論理演算
(符号付整数、ALU)
入力
5章:データパスと制御
6章:パイプライン
(ストール、フォワーディンク)
9章:並列プロセッサ
(SMP)
データパス
プロセッサ
7章:
記憶階層
(キャッシュ、
仮想記憶)
8章:
(バス)
出力
計算機アーキテクチャー Computer Architecture
2.性能の役割
2
・ コンピュータの性能の確実な尺度は時間だけ
・ コンピュータの性能を左右する重要な要因は何か?
アプリケーションの
タイプが異なれば
・ 適切な性能の測定法も異なる。
・ コンピュータ・システムのどの
要素が全体性能を決定づける
かも変ってくる。
・ 性能を測定する最善の方法、その限界の理解が重要。
・マシン要素が性能に及ぼす影響の判定法方の理解が
各部の設計意図の理解に不可欠。
計算機アーキテクチャー Computer Architecture
3
コンピュータの性能定義
性能指標には2つの側面
・ 応答(response)/経過(elapsed)/実行(execution)時間(time)
: 作業を開始してから終了するまでの時間
・ スループット(throughput)
: 一定時間内に終了した作業の総量
応答時間
スループット
コンピュータ1
○
×
コンピュータ2
×
○
計算機アーキテクチャー Computer Architecture
4
性能(応答時間)の測定(1)
タイムシェアリング方式の場合
プロセッサは同時に複数のプログラムを処理
待ち時間も含め、先にジョブを終えた計算機の方が速い
時刻
ユーザ1
ユーザ2
:
:
ユーザN
0
6
コンピュータの負荷は
時間帯・月日で変化
12
18
24
計算機アーキテクチャー Computer Architecture
性能(応答時間)の測定(2)
応答時間 (実行時間)
応答時間 (実行時間)
CPU時間
CPU時間
ユーザCPU時間 システムCPU時間
入出力、他のプログラム
入出力、他のプログラム
待ち時間
待ち時間
実行時間 :ユーザ・プログラムの実行をシステムが制御している時間
CPU時間 :プロセッサが実際に処理に費やした時間
ユーザCPU時間 :ユーザ・プログラムで費やしたCPU時間
システムCPU時間 :OS等のシステム・プログラムで費やしたCPU時間
5
計算機アーキテクチャー Computer Architecture
性能(応答時間)の測定(3)
1
・システム性能 =
他の負荷が掛かっていない状態での応答時間
・ CPU性能 =
1
ユーザーCPU時間
6
計算機アーキテクチャー Computer Architecture
CPU性能の測定基準(1)
クロック・サイクル時間 :
ハードウエア内で事象を起こす時間間隔の最小単位
そのプログラムの
CPU時間
=
×クロック・サイクル時間
CPU時間 = CPUクロック・サイクル数 ×クロック・サイクル時間
そのプログラムのCPUクロック・サイクル数
= = クロック周波数
ハードウエア設計者の性能向上課題
プログラム中の
命令当たりの平均
CPUクロック・サイクル数
= ×
プログラムが必要とするクロック・サイクル数の削減
実行命令数
クロック・サイクル数
クロック・サイクル時間の短縮(=クロック周波数を上げる)
7
計算機アーキテクチャー Computer Architecture
CPU性能の改善例
クロック周波数 プログラム実行時間 必要クロック・サイクル数比
マシンA 400MHz
10秒
1
6秒
マシンB 800MHz
?
1.2
CPU時間=
CPUクロック・サイクル数
クロック周波数
∴ CPUクロック・サイクル数=CPU時間×クロック周波数
クロック周波数=
CPUクロック・サイクル数
CPU時間
CPUクロック・サイクル数A=10秒×400×106サイクル/秒
= 4000×106サイクル
クロック周波数B=
1.2× 4000×106サイクル
6秒
=800MHz
8
計算機アーキテクチャー Computer Architecture
CPU性能の測定基準(2)
CPU時間
CPU時間=
=実行命令数×CPI×クロック・サイクル時間
実行命令数×CPI×クロック・サイクル時間
そのプログラムの
CPUクロック・サイクル数
実行命令数×CPI
= = クロック周波数
CPI(clock cycle per instruction):
命令当りの平均クロック・サイクル数
CPI =
そのプログラムのCPUクロック・サイクル数
実行命令数
9
計算機アーキテクチャー Computer Architecture
性能方程式の使用例
マシンA
マシンB
CPU性能A
CPU性能B
クロック・サイクル時間
1ns
2ns
=
CPI
2.0
1.2
CPU性能比
?
1.2
1
CPU時間B
CPU時間A
CPU時間=CPUクロック・サイクル数×クロック・サイクル時間
CPUクロック・サイクル数=実行命令数×CPI
CPUクロック・サイクル数A=実行命令数×2.0
CPUクロック・サイクル数B=実行命令数×1.2
CPU時間A=実行命令数×2.0×1ns
CPU時間B=実行命令数×1.2×2ns
CPU性能A/CPU性能B=CPU時間B/CPU時間A =1.2
10
計算機アーキテクチャー Computer Architecture
CPU性能の測定基準(3)
11
CPU時間
CPU時間=
=実行命令数×CPI×クロック・サイクル時間
実行命令数×CPI×クロック・サイクル時間
実行命令数×CPI
= = クロック周波数
性能を決める要因
CPU(実行)時間
実行命令数
命令当たりのクロック・サイクル数(CPI)
尺度
プログラムの実行にかかった時間 (秒)
プログラム内で実行された命令の数
平均クロック・サイクル数/実行命令数
クロック・サイクル時間
CPU時間/クロック・サイクル数
コンピュータの性能を表す完全かつ信頼性のある唯一の尺度は時間
・実行命令数を少なくしようとすると、クロック・サイクル時間を長くせざる
おえなくなることがある。
・命令ミックスに依存するので、実行命令数が最小のプログラムの
実行速度が最速とは限らない。
計算機アーキテクチャー Computer Architecture
12
コード系列の比較例
コード系列
1
2
命令クラスごとの実行命令数 (Ci) 実行 CPUクロック・
A
B
C
命令数 サイクル数
10
2
1
2
5
4
1
1
6
9
n
実行命令数 = ΣC
i=1 i
n
CPUクロック・サイクル数 = Σ(CPI
i ×Ci )
i=1
CPI =
CPUクロック・サイクル数
実行命令数
CPUクロック・サイクル数2=(1×4) + (2×1) + (3×1)=9
CPI2=9/6=1.5
2
1.5
命令クラス 各命令クラスのCPI(CPIi)
A
1
B
2
C
3
CPUクロック・サイクル数1 =(1×2) + (2×1) + (3×2)=10
CPI1=10/5=2
CPI
計算機アーキテクチャー Computer Architecture
測定基準値の算出方法
13
クロック・サイクル時間 ← マシン性能諸元
実行命令数 ← プログラム実行状況分析集計ソフトウエア・ツール
アーキテクチャシュミレーター、ハードウエアカウンタ
CPI
← シュミレーター(+ハードウエアカウンタ)
命令タイプ別に観測して計算
n
CPI =
CPUクロック・サイクル数
実行命令数
=
Σ(CPI
i ×Ci )
i=1
n
ΣC
i=1 i
Ci : 実行されたクラスiの実行命令数
CPIi :そのクラスの命令当たりのクロック・サイクル数の平均値
n:命令クラスの数
計算機アーキテクチャー Computer Architecture
性能評価用プログラムの選定
14
ベンチマーク (コンピュータの性能測定を目的としたプログラム)
・実際のアプリケーションをいくつかまとめたもの
・ベンチマークの実行を高速化する方法を見つけにくいもの
(小さいプログラムを採用すると、それを対象とした最適化を誘発し易い)
・例:Whetstone,Dhrystone,Livemore,Linpack,toy program, SPECINT,SPECFP,Perfect Club
代表的なベンチマーク: SPEC***
・SPEC(Standard Performance Evaluation Corp.)が開発
・測定プロセスを管理した現実性の高いベンチマークの提供により
CPU性能の測定と報告の方法の改善を目的
・SPECint(整数の演算),SPECfp(浮動小数点の演算 )
・SPEC比: 基準マシンと測定対象マシンの実行時間比
計算機アーキテクチャー Computer Architecture
15
SPECintのクロック周波数依存
③ Pentium Proの方が
クロック周波数を上げた時
の性能改善効果が高い
10
① Pentium Proの方が
1.4∼1.5倍高速
SPECint
8
6
4
② クロック周波数を上げた
割合に比べ、
性能の改善率が下回る
2
Pentium
Pentium Pro
0
50
100
150
200
クロック周波数 [MHz]
250
計算機アーキテクチャー Computer Architecture
16
SPECfpのクロック周波数依存
10
① Pentium Proの方が
1.7∼1.8倍高速
SPECfp
8
③ Pentium Proの方が
クロック周波数を上げた時
の性能改善効果が高い
6
4
2
Pentium
Pentium Pro
0
50
100
② クロック周波数を上げた
割合に比べ、
性能の改善率が下回る
150
200
クロック周波数 [MHz]
250
計算機アーキテクチャー Computer Architecture
17
CPU性能の改善方法
1.クロック周波数を上げる
2.CPIを下げるようにプロセッサの構成を改善する
3.クロック・サイクル数を削減するようにコンパイラを改善する
- 命令数を減らす
- 平均CPIの低い命令を生成する(例:単純な命令セットを使用)
そのプログラムのCPUクロック・サイクル数
CPU時間
= CPU時間 = クロック周波数
実行命令数×CPI
= = クロック周波数
計算機アーキテクチャー Computer Architecture
18
最近のプロセッサの例(1)
1600
SPECint_base2000
1400
1200
MHz vs. SPECint,
SPECft
Intel
1000
Itanium2
800
HP
PA-8700
600
MIPS
R14000
400
200
IBM
Power4
Alpha
21264C
Sun
UltraSPARCⅢ
AMD
Athlon XP
Intel
Xeon
Intel
Itanium
0
0
500
1000
1500
2000
Clock Rate [MHz]
2500
3000
計算機アーキテクチャー Computer Architecture
19
最近のプロセッサの例(2)
1600
Intel
Itanium2
SPECfp_base2000
1400
IBM
Power4
1200
MHz vs. SPECint, SPECft
1000
Intel
Itanium
800
Alpha
21264C
AMD
Athlon XP
Intel
Xeon
Sun
UltraSPARCⅢ
600
MIPS
R14000
400
200
HP
PA-8700
0
0
500
1000
1500
2000
Clock Rate [MHz]
2500
3000
計算機アーキテクチャー Computer Architecture
性能の比較とまとめ方
合計実行時間
算術平均実行時間
1 n
算術平均 = n Σ時間
i
i=1
加重算術平均実行時間
加重算術平均 =Σwi×時間i
n
i=1
幾何平均実行時間
n
幾何平均 = Π実行時間比
i
i=1
n
時間i :
i番目のプログラムの実行時間
wi: i番目のプログラムが実行される頻度の割合
実行時間比i: i番目のプログラムの基準マシンに対して正規化した実行時間
20
計算機アーキテクチャー Computer Architecture
21
性能の比較とまとめ方
実行時間
Aを基準に正規化 Bを基準に正規化
マシンA
マシンB
A
B
A
B
プログラム1
1
10
1
10
0.1
1
プログラム2
1000
100
1
0.1
10
1
正規化 算術平均
結果の 幾何平均
−
−
1
5.05
5.05
1
−
−
1
1
1
1
算術平均
実行
時間の 幾何平均
500.5
55
1
0.11
9.1
1
31.6
31.6
1
1
1
1
正規化した実行時間
の算術平均は、基準
に選択したマシンに
左右される
幾何平均は、
正規化に左右
されない
計算機アーキテクチャー Computer Architecture
コンピュータの性能尺度
MIPS(million instruction per second)
:1秒当りの実行命令数を100万単位で数えた命令実行速度
MIPS=クロック周波数/(CPI×106)
速いマシンほどMIPS値が大きい→直感的に分かりやすい
【問題点】
(1)命令セットの異なるコンピュータ(実行命令数が違う)の比較不可
相対MIPS:実行時間比×基準マシンMIPS値
1980年代 基準マシン VAX-11/780 1MIPS
(2)1機種のマシンにMIPS値がいくつもある
同じコンピュータでも、プログラムが違えばMIPS値も違ってくる
(3)CPIが平均値のため、MIPS値は性能とは逆に変化することがある
ピークMIPS:CPIを最小にするように命令出現頻度を仮定したMIPS値
MFLOPS(million floating-point operation per second)
:1秒間に実行される浮動小数点演算数を
100万単位で数えた演算実行速度
22
計算機アーキテクチャー Computer Architecture
23
性能尺度としてのMIPS値例
使用した 命令クラス別の実行命令数 (Ci) [×109]
A
B
C
コンパイラ
1
5
1
1
2
10
1
1
実行時間 =
CPUクロック・サイクル数
クロック周波数
n
CPUクロック・サイクル数 = Σ(CPI
i ×Ci )
i=1
MIPS =
命令数
実行時間×106
実行時間
MIPS
20秒
30秒
350
400
命令クラス 各命令クラスのCPI(CPIi)
A
1
B
2
C
3
クロック周波数=500MHz
実行時間1=(1×5+2×1+3×1)×109/(500×106)=(10×109)/(500×106)=20
実行時間2=(1×10+2×1+3×1)×109/(500×106)=(15×109)/(500×106)=30
MIPS1=(5+1+1)×109/(20×106)=350
MIPS2=(10+1+1)×109/(30×106)=400
計算機アーキテクチャー Computer Architecture
24
スーパーコンピュータの性能諸元の例
SR8000 コンパクトモデル
モデル名
A
B
C
D
理論ピーク性能
[GFLOPS]
4
8
12
14.4
メモリー容量[GB]
2/4/8
2/4/8/16
外部インターフェース Ultra SCSI, Fibre Channel,Ethernet/Fast
Ethernet,
Gigabit Ethernet, HIPPI, ATM
I/Oインターフェース数
最大8
システム拡張機構
寸法 [mm] (WxDxH)
あり
500 x 910 x 1,500
計算機アーキテクチャー Computer Architecture
25
スーパーコンピュータ用CPUの例
浮動小数点演算器
レジスタファイル
診断ユニット
レジスタ
ファイル 演算制御
アドレス
加算器
アドレス
キャッシュ
シノニムRAM
データキャッシュ
ル
ー
ロ
ト
ン
コ
ュ
シ
ッ
ャ
キ
整数演算器
レジスタファイル
データキャッシュ
命令ユニット
分岐
キャッシュ
アドレス
キャッシュ
分岐予測
ユニット
命令キャッシュ
命令キャッシュ
データキャッシュ
メモリインターフェイス
- Area:
18.5x18.5mm2
- Logic gate: 8M Trs.
64bitアドレッシング
4-wayスーパースカラー
- RAM’s: 20M Trs.
命令キャッシュ 64KB
データキャッシュ 128KB
- 0.2umCMOSプロセス
配線7層
- クロック周波数:
450MHz
計算機アーキテクチャー Computer Architecture
スーパーコンピュータ用CPUの例(2)
浮動小数点演算性能:
450MHz×2演算器×2[operation/演算器] = 1.8GFLOPS
命令実行性能:
450MHz×4[命令/cyc] = 1800MIPS
26
計算機アーキテクチャー Computer Architecture
27
スーパーコンピュータ用CPUの例(3)
70
60
SPE Cin t9 5b+
50
MHz vs. SPECint, SPECft
40
30
20
HP
PA-8000
IBM
IBM
PowerPC 620
Intel
Pentium pro
Power2 P2CS
MIPS R10000
Sun UltraSparc
10
0
0
10 0
HITACHI
SR8000
Digital
21164
200
30 0
400
Cloc k Rate [MHz]
50 0
600
計算機アーキテクチャー Computer Architecture
28
スーパーコンピュータ用CPUの例(4)
70
HITACHI
SR8000
60
SPE Cfp95 b+
50
MHz vs. SPECint, SPECft
40
30
20
HP
PA-8000
IBM
Power2
IBM
P2CS
10
0
0
1 00
Sun UltraSparc
MIPS R10000
PowerPC 620
Intel Pentium pro
200
3 00
400
Clock Rate [MHz]
Digital
21164
500
600
計算機アーキテクチャー Computer Architecture
2002/12/6 円周率計算の世界記録を更新
スーパーコンピュータシステム「HITACHI SR8000/MPP」を用いて、東京大
学 情報基盤センタースーパーコンピューティング研究部門 金田康正教授
が、円周率計算の桁数で約1兆2,400億桁の世界記録を樹立しました。
今回の円周率計算においては、新たに共同開発した分割有理数化法
(DRM法)*1 という計算アルゴリズムを用い、金田教授が1999年9月にスー
パーテクニカルサーバ「HITACHI SR8000」(128ノード、1TFLOPS*2)を用い
て樹立した約2,061億桁の円周率計算世界記録の約6倍と、初めて1兆桁を
超える桁数を達成しました。
*1) 分割有理数化法(DRM法):Divide and Rationalize Method.、情報処理学会
論文誌 第41巻 第6号(2002年6月) P.1,811∼1,819「級数に基づく多数計算の演
算量削減を実現する分割有理数化法」(後 保範、金田康正、高橋大介)にて発表
*2) TFLOPS:Tera FLoating Operations Per Second、1秒当たり、1兆回の64ビット
浮動小数点演算を行う性能
29
計算機アーキテクチャー Computer Architecture
スーパーコンピュータの動向
30
http://www.top500.org/
計算機アーキテクチャー Computer Architecture
地球シミュレータ
31
http://www.es.jamstec.go.jp/
・640台の計算ノード(PN: Processor Node)を、640×640の単段
クロスバネットワークで結合させた分散メモリ型並列計算機
・各PNは、ピーク性能8Gflopsのベクトル型計算プロセッサ(AP:
Arithmetic Processor)8台が主記憶装置16GBを共有
・全体ではAPが5120台でピーク性能は40Tflops、主記憶容量は
10TB
計算機アーキテクチャー Computer Architecture
32
計算機アーキテクチャー Computer Architecture
コンピュータの性能評価
コンピュータの性能を表す完全かつ信頼性のある唯一の尺度は時間
・システム性能 =
・ CPU性能 =
1
他の負荷が掛かっていない状態での応答時間
1
ユーザーCPU時間
・・CPU時間
CPU時間=
=実行命令数×CPI×クロック・サイクル時間
実行命令数×CPI×クロック・サイクル時間
実行命令数×CPI
CPI(clock cycle per instruction):
= = 命令当りの平均クロック・サイクル数
クロック周波数
コンピュータ・システム全体の性能評価は一様ではない
ベンチマーク(benchmark):性能測定を目的としたプログラム
[弊害]ベンチマークで効果が出る改善をしても、
実際に使用しているプログラムでは全然効果が出ない場合が多い。
33
計算機アーキテクチャー Computer Architecture
34
ハードウエア/ソフトウエアの性能改善
Amdahlの法則
ある面を改善したことによる性能の向上は、
その改善された機能が使用される割合に制約される
・たとえ改善部分の高速化率が∞でも、
(現状全体時間/非改善部分時間)倍
以上の全体高速化は不可能
・改善に伴い追加される前処理、後処理の
時間を足し忘れて高速化率を見積りがち
改善前
改善部分 t
n倍高速化
改善後 t/n
r
↑
改善に伴う追加 a
r
t+r
t/n+a+r
──── < n
稀な場合に対して最適化を施すよりも、
一般的な場合を高速化する方が、性能が改善される割合は高い。
・初期バージョンは改善箇所の宝庫→10倍、100倍も夢でない
・バージョンアップ後の10倍、100倍の高速化は、
全体の方式から根本的に見直して初めて実現可能
→旧版との互換性を100%維持するという条件も加えると実現困難
計算機アーキテクチャー Computer Architecture
コストと性能比
35
高性能設計: 性能最優先
(例:スーパーコンピューター)
コスト/性能比設計: コストと性能のトレードオフ
(例:ワークステーション)
低コスト設計: コスト重視
(例:ローエンドのIBM PC互換機)
コストと性能の最適バランス点の見出しが、コンピュータ設計の極意
いろいろな設計案の性能とコストへの影響の正確な判定が必要
(予想以上に困難)
なぜなら、マシンのコストに影響を与える要因は、
・構成要素のコストだけでなく、組立作業者の人件費、
研究開発費営業経費、粗利etcも含む
・製造技術の急速な進歩(現時点の高コスト効率な方式が、
半年、一年先にそれほどでも無くなってしまう)