コンピュータの構成と設計 第 5 版
読書開始 : 2019-07-27
読書終了 : 2022-04-17
1. コンピュータの抽象化とテクノロジー
消費者向け製品では主として単純化による
信頼性の実現
入出力処理やメモリ割当などの低水準のシステム機能は
OS により
カプセル化される
ABI : アプリケーションプログラマに提供される基本命令セットとオペレーティング・システム・インターフェイスの組み合わせ
コンピュータ設計者は、アーキテクチャとアーキテクチャの実装方式を区別する
ソフトウェアが大規模複雑化しているし、ハードウェアでも様々な性能改善技法が採用されている → 性能評価が難しい
クロック数が急激に伸びる期間が 10 年ほどあったが、
電力の壁にぶつかって頭打ちに
電力の壁により、単体プロセッサからマルチプロセッサへと方針転換
コンピュータ処理の性能にとって重要な
並列処理はうまく隠蔽されてきたが、ここにきてプログラマが複数プロセッサをうまく扱わなければならなくなった
コンピュータの性能評価の実例
一般に流布している
誤解 (本書では
誤信と呼ぶ) を解くための節も設ける
ある面での改善による全体の性能向上は、その改善された機能が使用される割合によって制約される (
収穫逓減の法則)
実行時間 = プログラムの命令実行数 × (クロックサイクル数 / 命令 =
CPI) × (秒数 / クロックサイクル)
これがコンピュータの性能を決定する要因
2. 命令 : コンピュータの言葉
32 ビットをひとまとめにしたものが頻繁に使われるので、それを
語 (
word) と呼んでいる
一般にメモリからレジスタへの転送を
ロード、レジスタからメモリへの転送を
ストアという
メモリ内の語にアクセスするためにはメモリのアドレスを指定
符号があるので、異なるビット数の間でデータをやり取りする際には符号付き整数としての値として扱うかどうかで処理が変わる (例えばバイトをロードする際には、符号付きかどうかで load byte と load byte unsigned の 2 通りの命令)
コンピュータ内の命令の表現
命令は数値として表現され、プログラムはメモリ中にロードしてデータと同様に読み書きできる →
プログラム内蔵方式同期はユーザーレベルのソフトウェアルーチンが命令を見る
それらはハードウェアのロック命令やアンロック命令を使う
静的なリンクの欠点を克服するために
DLL が考案された
実例
命令が強力だと性能が改善されるとは限らない
現在だと人がアセンブリでプログラムを組むよりコンパイラの方が賢い
バイナリ互換性は重要だが、命令セットが変化しないわけではない (x86 には驚くほど命令が追加されている)
3. コンピュータにおける算術演算

C ではオーバーフローが起こっても例外が発生しないから、CPU レベルではオーバーフローは認識しないのかと思ってた
MIPS では、乗算や除算のオーバーフローは無視される
負の指数が大きくなりすぎて表現できない場合 (値が小さくなりすぎて表現できない)
浮動小数点数の並列処理は直列処理と結果が異なりうる
4. プロセッサ
命令の多くは似た実行をする → 実装が単純化
最低限、入力が 2 つ (書き込む値と書き込むタイミング) と出力が 1 つ
2 つの違った命令タイプ間でデータパス要素を共有するには、複数入力を接続して
マルチプレクサで選択
現代においてこの方式が採用されることはまずない (効率が悪いため)
バイプラインの段数を増やす
5. 容量と速度の両立 : 記憶階層の利用
局所性の 2 側面
優れた性能を達成するために、記憶階層の仕組みを理解する必要
ページがいつ置き換えられるかは予知できない → 通常、OS はプロセス作成時にプロセスの全てのページ用の領域をフラッシュメモリかディスク上に確保する (
スワップ空間)
6. クライアントからクラウドまでの並列プロセッサ
問題の規模を固定したまま速度向上比を高めることは、問題の規模を拡大して速度向上比を高めるよりも難しい
命令流とデータ流の単一・複数によって分類される (1960 年代に提案された分類)
命令流複数・データ流単一 :
MISD (実例なし)
アドレス空間の共有に代わる方法は、各プロセッサが独自の物理アドレス空間を持つこと
ネットワーク
マルチコアプロセッサでは、コア同士を結ぶオンチップネットワークが必要だし、クラスタではサーバー同士をつなぎ合わせる
ローカルエリアネットワークが必要
いくつかのネットワークトポロジ
リング (ring)
スイッチだけのノードは小さいので、高密度に集積 → 性能向上
A. アセンブラ、リンカ、SPIM シミュレータ