280 likes | 654 Views
マイクロプロセッサ. 第2回. コンピュータの性能. 関根 優年. 性能( performance). 性能評価は難しい 値段が高いから性能が良いとは限らない 周波数が高いから早い? 3GHz メモリ容量が大きいから早い? 256 MB HDD が大きいから性能は良い? 80 GB 動作時間が長いから良い? 7時間 性能は用途によって異なる 画像処理,ワープロ,数値科学計算 問題の大きさ 200MB , 1GB ? . Core i7 ??. マルチコアが必要? 何に使用する?. nikkeiTRENDYnet 記事.
E N D
マイクロプロセッサ 第2回 コンピュータの性能 関根 優年
性能(performance) • 性能評価は難しい 値段が高いから性能が良いとは限らない • 周波数が高いから早い? 3GHz • メモリ容量が大きいから早い? 256MB • HDDが大きいから性能は良い? 80GB • 動作時間が長いから良い? 7時間 • 性能は用途によって異なる • 画像処理,ワープロ,数値科学計算 • 問題の大きさ 200MB,1GB?
Core i7?? • マルチコアが必要? • 何に使用する?
nikkeiTRENDYnet 記事 • Core i7は本当に速いのか? Core 2 Duoと実力を比べた • シングルスレッド当りの性能を比較してみる • 円周率計算プログラム「スーパーπ」を使い、1677万桁の計算にかかった時間 • RAWデータの現像速度を比較してみる • 800万画素クラスのデジタルカメラで撮影したRAWデータ(1ファイルあたり約13MB)を30枚読み込み、プリセットの現像パラメーターで現像してJPEG形式で保存
スループット・実行時間 コンピュータの性能とは何? 実行時間 : 作業を開始してから終了するまでの時間 (応答時間) スループット: 一定時間内に終了した作業の総量 (a) スループット 同じ実行時間でも、 スループットは異なる 実行時間 スループット (b) 車で言えば、 速度が実行時間 馬力がスループット 実行時間
例題) スループットと応答時間 例題) コンピュータシステムに下記の変更を加えた場合、スルー プット、実行時間はどうなるか? 1.プロセッサを高速にする 2.複数プロセッサを用いる 答) 1.プロセッサを高速にする ⇒ 実行時間は短くなる。 スループットは大きくなる。 2.複数プロセッサを用いる ⇒ (基本的には)実行時間はそのまま。 スループットは大きくなる。
性能・相対性能 ここでは、実行時間に着目してマシン性能を考える (マシンXの)性能の定義 性能X=1/実行時間X 単位時間あたりの実行回数 マシンの性能比 マシンXはマシンYよりもn倍早い n = 性能X/性能Y = 実行時間Y/実行時間X
例題) 相対性能 例題) 同じプログラムを動かしたときにかかる時間が、マシン Aでは10秒、マシンBでは15秒である。マシンAは マシンBよりもどれだけ速いか? 答) マシンAの性能 1/10 [s-1] マシンBの性能 1/15 [s-1] よって、マシンAとマシンBの性能比は、 性能比=(1/10) / (1/15) =15/10 =1.5 倍
性能の測定 コンピュータの性能は実行時間で計測可能 実行時間の計り方は様々 ここではユーザCPU時間をCPU性能とする。
クロック マイクロプロセッサはクロックに基づき動作 電圧 クロック周期 時間 クロック周期=クロックサイクルタイム クロック周波数=1/クロック周期 例) Pentium IV 3GHz CPU内部のクロック周波数が3GHz クロック周期は0.33ns
同期式回路 • 素子の動作がまちまち → 回路の動作がまちまち → 同時をどう表す? • 時間も離散化する: 同じクロック内=同時 クロックのエッジ時刻で同時に動作 • 時間の揺らぎによる誤動作を防ぐ. • 回路が同時に動くので瞬間的に電流が流れる • 回路が動かないときでもクロック信号は動作 無駄なエネルギーが消費される
測定基準同士の関係 コンピュータの最終的な性能はCPU実行時間 クロック サイクルタイム そのプログラムの CPUクロック・サイクル数 あるプログラムの CPU実行時間 X = クロック 周波数 そのプログラムの CPUクロック・サイクル数 ÷ = コンピュータの性能を挙げるためには、 ① クロック周波数を上げるか、 ② プログラムが必要とするサイクル数を減らすか を行えばよい。 実際には、これらを両立するのは難しい。 (回路を単純化するとクロック周波数は上がるが、サイクル数は増える、 逆に複雑にするとクロック周波数が下がるが、サイクル数は減る)
例題) 性能の改善 例題) クロック周波数400MHzのマシンA上で10秒で実行でき るプログラムを、6秒で動かすマシンBを開発する。マシン Aでプログラムを実行するのに比べ、1.2倍のサイクル数 を必要とする。マシンBの周波数をいくつにすればよいか? 答) CPU時間A=サイクル数A / (400 x 106)=10 CPU時間B=サイクル数B / クロック周波数B =6 サイクル数B=1.2 x サイクル数A =1.2 x 10 x 400 x 106より クロック周波数B = サイクル数B / 6 = 1.2 x 10 x 400 x 106 / 6= 800 x 106 = 800 MHz
CPI(1命令あたりの平均クロックサイクル数) 実際にはプログラムは複数の命令からなる プログラムにおける命令数が増えれば、一般に プログラムに必要なサイクル数は増加する。 命令数とサイクル数の関係を表す指標としてCPIを導入 CPI(1命令あたりの平均クロックサイクル数) プログラムの CPUクロック・サイクル数 1命令あたりの 平均クロックサイクル数 プログラム中の実行命令数 = X CPI 一般に命令によって、必要とするサイクル数は異なる (命令Aは1サイクル、命令Bは2サイクルといった感じ)
例題) 性能方程式の使用 例題) 同じ命令セットアーキテクチャを持つ2種類のマシンがある。 マシンAはクロックサイクルタイムが1nsで、あるプログラムで のCPIは2.0、マシンBはそれぞれ2ns、1.2であった。このプ ログラムではどちらのマシンがどの程度高速か? 答) CPU時間A=命令数A x 2.0 x (1 x 10-9) CPU時間B=命令数B x 1.2 x (2 x 10-9) 同一の命令セットであるので、命令数A=命令数Bより 性能比 = CPU時間B/ CPU時間A =(1.2 x 2 x 10-9) / (2.0 x 1 x 10-9) = 1.2 (マシンAがマシンBよりも1.2倍速い)
CPIとCPU時間の関係式(1) クロック サイクルタイム あるプログラムの CPU実行時間 プログラム中の実行命令数 CPI X X = クロック 周波数 = プログラム中の実行命令数 CPI ÷ X
CPIとCPU時間の関係式(2) クロック 周波数 プログラム中の実行命令数 あるプログラムの CPU実行時間 CPI = ÷ X プログラムを動か せば計れる マシン性能諸元 として与えられる 単体ではほとんど 計測不能 実行命令数はアーキテ クチャに依存するが、詳 細を知らずとも測定可能 CPIの入手法 : ① マシンの細部に渡ってシミュレーションする ② 命令の種類別に観測する
例題) コード系列の比較 例題) あるマシンについて、命令クラスA,B,CとCPIの関係が、 CPIA=1, CPIB=2, CPIC=3と与えられている。これらの命 令クラスを用いたコード系列として、次の2つがある。 どちらが実行速度が速く、またCPIはそれぞれいくつか? 答) コード系列1のクロックサイクル数=2x1+1x2+2x3=10 コード系列2のクロックサイクル数=4x1+1x2+1x3=9 これより、コード系列2の方が実行速度が速い。 コード系列1のCPI=(2x1+1x2+2x3)/(2+1+2)=10/5=2.0 コード系列2のCPI=(4x1+1x2+1x3)/(4+1+1)=9/6=1.5
コードのビット長 • 命令のビット幅も実は大事 • 4bit,8bit,16bit,32bit • マイコン,PIC,などで健在 • Bitが貴重であった時代 • 12bitもあった(TLCS12). • 今,64bit,128bit, • Very Long Instruction Word(VLIW)
性能比較のまとめ方 どちらのコンピュータがどれだけ速いか ---用いる尺度により種々の結果が得られる 合計時間 Σtai = ta1 + ta2 算術平均 Σtai /n = (ta1 + ta2)/2 加重算術平均 Σ(tai*wi) /n = (ta1*w1 + ta2*w2)/2 wiはプログラムiの実行頻度 幾何平均 √(ta1*ta2)
基準マシンに対して正規化して比較 • 基準マシンとの比の平均を取るとだまされる
CPU性能を改善する方法 命令セット・アーキテクチャが同じとき 1.クロック周波数を上げる 2.CPIを下げるようにプロセッサの構成を改善する 3.命令数を減らすか平均CPIの低い命令を生成するように コンパイラを改善する 命令セット・アーキテクチャ(instruction set architecture): どんな機械命令(machine instruction)を用意するか 例)a=b+c load R1, b add R1, b, c load R2, c store R1, a add R3, R1, R2 store R3, a RISC(reduced instruction set computer) CISC(complex instruction set computer) 演算はregister間のみ memory間の演算も許す 命令数は多くなるが各命令は 命令数は少ないが複雑で処理時間が 単純で高速。固定長命令 長いものもある。可変長命令 memoryからのloadもadd命令の中で実行
性能評価用のプログラム(ベンチマーク) 例) SPEC95ベンチマーク
周波数を変えてSPECint95/SPECfp95をテスト SPECint SPECfp クロック周波数(MHz) • 同じ周波数でも1.4x(int),1.7x(fp)の差 • 周波数を2x変化: pentium:1.7x(int)1.4x(fp) • Pentium Proの方が変化量が大きい
MIPS, MOPS, FLOPS 他の評価機軸 (絶対)MIPS(Million Instructions Per Second) ―1秒あたりの実行命令数(ただし100万単位) 相対MIPS =(時間基準マシン/時間評価マシン)xMIPS基準マシン MOPS(Million of Operations Per Second) ― 1秒あたりの演算数(ただし100万単位) MFLOPS(Million of FLoating Operations Per Second) ― 1秒あたりの浮動小数点演算数(ただし100万単位) PeakMIPS 誤解を生みやすい
MFLOPS • 浮動小数点演算も実現される方法が異なるので信用できない. • コンパイラ・プログラムはfloatを使わない • 浮動小数点除算M68882はあるがCray-2にはない • Sin演算はM68882は1命令 • 自分に都合の良い評価方法がその都度作られる
計算時間だけの評価では不十分 • データをプロセッサに送るまでの時間 • ノイマン・ボトルネックという • 処理結果を取り出す・記憶する時間 • メモリとハード・ディスクでは異なる • プログラムの構造,データ構造により処理時間も異なる. • 並列的な問題を逐次的に処理する. 理想的な機械:専用演算器を沢山持ち, データのあるところで処理をする
Amdahlの法則 マシンのある面を改善しても、その改善度に等しい 性能向上は得られるとは限らない。 例) あるマシンでプログラムを動作する際に、実行時間 のうち80%が乗算でしめられている。乗算を高速化 することにより、実行時間を現在の5倍にできるか? 答) できない 乗算がいくら早くなっても、残りの20%の実行時間 は必要とされるため ある大きな問題を解決したとき、その問題に埋もれていた 次の問題が見えてくるのがAmdahlの法則