今日で2日目。
1.8 誤信と落とし穴
パフォーマンスの改善について、よくある勘違いの例を説明している
その1: コンピュータのある点を改善しても、その改善度に応じて全体は改善しない。
Q: 100秒掛かるPGがありその80%が乗算だったとき、乗算処理を何パーセント高速化すると、性能は5倍になるか? A: どれだけ高速化しても、全体の性能を5倍にすることは出来ない。 本文中では数式を使って説明しているけど、乗算以外で20秒掛かっているのだから、計算するまでも無く明らか。 |
これをAmdahlの法則という。また、経済学でいう収穫逓減の法則。
その2: コンピュータの利用率(CPU負荷)が低ければ、消費電力は少ない
ベンチマークを取って実際に計測をしてみると、CPU負荷が10%程度でも消費電力はピーク時の60%までしか落ちないという結果だった。CPU負荷と消費電力は比例させるべきという考え方もある。(が実現されてないっぽい)
->アセンブラのnop命令は消費電力が低いイメージがあるけど、命令毎の消費電力は仕様として spec sheetに明記されているのだろうか...? あと、"イメージがある"と書いておいてアレだけど、なぜ命令によって消費電力を変えら れるのか,実は分かってない。 駆動させるトランジスタの数が少ないから? |
とはいうものの、感覚的に本文に記載されているイメージを持っていたので問題なさそう。
その3: 性能の尺度に、性能方程式の一部を使用すること
これは前2つと違って、タイトルから意味が分かり辛い…
例として、MIPS値(時間当たりの実行命令数)が高いコンピュータが、実際のPGを動作する上で高性能とは限らないというのが挙げられている。理由は、1命令で実現可能な”機能”の水準がモノによって異なるから。
心理学でいうハロー効果みたいなもの(ちょっと違う?)
うまく説明し辛いけど、言わんとすることは良く分かるので良しとしておきます
1.9 おわりに
将来CPUの性能がどの程度向上するかの予想は困難。
APIを統一すれば、新世代のハードウェアを既存のソフトで動作させる事は容易だけど、新たなハードのアーキテクチャは発展しづらくなる。
-> intelの386は仮想86モードを持っていたけど、今のcore iシリーズはどの程度まで 下位互換があるのだろうか? |
wikipediaによると、まだ互換性があるらしい!!
インテル自身は過去にIntel iAPX 432、Intel i860、IA-64といった革新的アーキテクチャを導入することにより、x86を置き換えようとしたが、ことごとく不成功に終わり、結果としてx86は後付けの拡張を続け今日までインテルの主力アーキテクチャとして延命している。
インテルは現在、2011年リリースのSandy Bridgeマイクロアーキテクチャから新たにAVX命令フォーマットを導入し、古いx86命令セットからの脱却を徐々に進め始めている。
性能の定量的な評価は難しいが、実行時間を指標値にするのは信頼できる値の1つ
実行時間 = 実行命令数 * 命令あたりのクロックサイクル数 * 動作周波数 = 実行命令数 * クロックサイクル数 / 命令 * 秒数 / クロックサイクル |
プログラム性能のキーになる要素
コンパイラ シリコン アーキテクチャ(キャッシュ、並列化etc) |
1.10 歴史展望と参考文献
CDを図書館で借りてこなかったので、後回し(借りればよかった…)
1.11 演習問題
省略コンピュータの構成と設計(上)
関連記事
コメントを残す