[パタヘネ:読書メモ]1章 コンピュータの抽象化とテクノロジ

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の幅だった

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

関連記事

コメントを残す

メールアドレスが公開されることはありません。