1.1:はじめに~1.3:コンピュータの内部
一般常識(情報処理試験レベル)なので、軽く飛ばし読み。
特にコメントすべき内容は無し。
1.4:性能
性能を測るための指標値は色々ある
CPI:1命令あたりの平均クロックサイクル数
(clock cycle pre instruction)
命令によって、消費クロック数は異なるが、平均値としての性能
命令セットが同じで、異なる実装の場合、性能比較する上での”目安”になる。
昔のx86 CPU “intel CPU” vs “amdの互換CPU”のような感じ。
CPIによる性能比較は、異なるアーキテクチャ間では意味が無い。
なぜなら、機械語の1命令で出来る事のレベルが異なるから。
また、CPIは1.0以下になる可能性もありうる。
なぜなら1サイクルあたり2つ以上の命令を実行できるアーキテクチャもあるから。
-> intelのHT/マルチコア的なこと? それともパイプライン処理的な意味? 良く分からなかったので、気に留めつつ読み進める。 |
CPUの使用時間
CPUの使用時間(性能)は、典型的に以下の式で導き出せる
CPU使用時間 = 実行命令数 * CPI / クロック周波数
クロック周波数はスペックシートから分かる。
実行命令数を取るのは難しい。
取得方法の例
プロファイラを利用する
ハードウェアに用意されているカウンタを利用
シミュレータ上で実行して、計測する
CPIは、命令の頻度や、メモリシステム、プロセッサの構造に依存する。らしい。
-> 命令の頻度は分かるけど、残り2つがイメージできない... -> 詳細は4,5章で後述するらしいので、一旦保留 |
1.5:電力の壁
CMOSの消費電力は、トランジスタの切り替え電力がメイン
消費電力は、以下の式で近似できる
消費電力 = 容量性負荷 * 電圧^2 * 切り替え周波数
切り替え周波数は、クロック周波数に関係する
容量性負荷 は、出力に接続するトランジスタ数(fanout),配線,トランジスタの静電容量に関係する
fanoutについては、以下のサイトが詳しい
ディジタル電子工学講座
ファンアウト – FPGA用語集
電圧は2乗されるので、ここを下げると効果がデカイ。
intelの80386は5Vだったけどcore 2では1.1Vしか必要ない。
5^2=25で, 1.1^2=1.21なので、ここだけで20分の1以下になっている。
ただし、電圧を下げすぎるとリーク電流が増えるので限界がある。
クロック数を上げるのも限界がある。
3Ghzのクロックだと、1クロックあたりに光が10cmしか進めないぐらいの速さなので、これ以上劇的には増やせない。
1.6 方向転換:単体プロセッサからマルチプロセッサへ
性能向上には以下の制約条件がある。
1.消費電力が増えると、発熱が増える 2.発熱が増えると、半導体の寿命が短くなる 3.廃熱を行うにしても限界がある(水冷等が限界?)。 |
というわけで、これ以上性能を上げるには、CPUの数(コア数etc)を増やし、並列化によって対応するしかなくなってくる。
-> 最近は言語側での、並列処理サポートも増えてきている。 C#では、最近asyncキーワードで非同期処理が出来る。 node.jsでは、基本のアーキテクチャ自体が非同期処理ベースになってる。 |
1.7: 実例:AMD Opteron X4の製造技術とベンチマーク・テスト
シリコンウェハーのサイズ、CPUチップのサイズ、歩留まりの考え方など
技術的な面には関係ないので、特に感想なし
本題と関係ないけど、歩留まりは英語でyieldらしい。
yieldと聞くとrubyの予約語のアレを連想するけど、英単語的には以下の意味があるらしい。
〈作物・製品などを〉産する. 〈利子・収益などを〉もたらす,生む. 〈結果などを〉引き起こす. |
ベンチマーク
ベンチマークの内容によってCPIの変動幅が13倍もある
本の中の表では、0.75~10.00の幅だった

コンピュータの構成と設計 第4版(上) ハードウエアとソフトウエアのインタフェース (Computer Organization and Design: The Hardware/Software Interface, Fourth Edition)
関連記事
コメントを残す