パターソン&ヘネシー本を読んでいって、気になったところをメモしていって、コメント加えていきます。
「まえがき」の概要
* プログラムを高速化するためには、並列化しないといけない。
なぜか
昔デュアルコアが多かったみたいだけど、16コアとか、32コアとかが多い。一つのコアしか使わないのは非現実的。
- コンピュータを効率よく使うためには、ハードウェアとソフトウェアのインターフェースの知識が必要。
1章、コンピュータの抽象化とテクノロジ
はじめに
- コンピュータにアメリカ経済のかなりの部分が依存している
- コンピュータは異常なまでの技術革新を遂げている
- コンピュータのコスト効率が10倍になるたびに、コンピュータの利用機会が倍増される。
で、以下のような用途が新たに出てきたようです。
- 車載コンピュータ
- 携帯電話
- ヒトゲノム研究プロジェクト
- World Wide Web
- 検索エンジン
コンピュータの利用形態の分類とその特性
コンピュータの利用形態は以下のようなものがあります。
- パーソナルコンピュータ
パーソナル・コンピュータは単一のユーザーに低いコストで高い性能を提供することに重点が置かれている。
まあ周知の通りですね - サーバー
サーバはたくさんの仕事をこなすことに重点が置かれている。
科学技術計算やエンジニアリング分野のアプリケーションのような単一の複雑なアプリケーション
大規模なWebサーバのような小規模なジョブを大量に扱う
サーバはPCと共通する技術基盤だが、処理やストレージや入出力の能力の拡張性が高められている。
スーパーコンピュータもサーバの一種 - 組み込みコンピュータ
コンピュータの利用形態で最大のもの(産業規模?コンピュータの個数?)
自動車、テレビ、飛行機や輸送船の制御なども司る
信頼性が大事、故障の許容度は極めて低い(飛行機や自動車などに使われるため)
ポストPCへのいざない
スマホやタブレットのようなパーソナル・モバイルデバイス(PMD)について触れられている
本書で学べること
- 最初はメモリ制約があった。だが、メモリ容量が増えるに従い、問題にならなくなった
- 性能に関心のあるプログラマはその代わりに、現代のプロセッサの並列性や記憶の階層性などについて理解する必要が生じた
この本を学ぶと、以下のような質問に答えられるようになる
- CやJavaのような高水準言語で書かれたプログラムが、ハードウェアの言語にどう翻訳され、実行されるか
- ソフトウェアとハードウェアのインターフェースとは何か
- プログラムの性能はどう決まり、どう性能を改善できるか
- エネルギー効率の改善法
- 逐次処理から並列処理への最初の変換は、どのような理由によるものであり、どのような結果をもたらしたか
上の質問に対する答えを理解しないまま、性能のを改善しようとしたり、特性の評価をすることはやめてほしいみたいなことが書いてある。(耳が痛い)
これらを理解しないまま試行錯誤しても無駄だよ(にっこり)
科学的にやってね(にっこり)
- コンピュータの設計者は頭文字(acronym)をよく使う。
- プログラムの性能はいくつかの要因の組み合わせに左右されるよ。その要因は以下にリストした
アルゴリズム
プログラミング言語、コンパイラ、アーキテクチャ
プロセッサと記憶システム
入出力システム
ということで、次に続きます
次回は、
1.2コンピュータアーキテクチャにおける8つの主要なアイディア
です