計算機はどれも論理ゲートから構成されている
ANDは直列のスイッチ、ORは並列のスイッチのイメージを持つといい
- スイッチはリレー→真空管→トランジスタへと変遷
- トランジスタは高速なスイッチングが可能で省スペース/省電力なので多用された
- 写真技術を応用したエッチングが可能になる
ノイマン型計算機の定義
- プログラム内蔵方式
- データだけでなくプログラム(命令列)もコンピュータ内部のメモリに置く
- 配線による制御はこれにあたらない
- 逐次制御方式
- 命令は一つずつ順に実行
- 並列実行はこれにあたらない
- 一つのプロセッサーと一つのメモリ
- プロセッサは
- メモリから命令とデータを読み込む
- 命令の実行
- 結果をメモリに格納
- を繰り返す
- 線形アドレス空間
- メモリには整数で表すアドレスが一次元的につく
- アドレスの表現にはビット定数を用いる
- アドレスの範囲=空間は0からまで
- 64bitマシンとかのbitは一気にアクセスできるアドレスの範囲
アドレス長が32bitだったならアドレス空間は0~までで4GiBを扱える
CPUによって最大メモリ量が決まっているのはこの関係
キャッシュメモリやアウトオブオーダ、マルチコアなどもあるがこれもノイマン型とみなす(命令の順序によって結果が変わらないようにした並列化)
ノイマン型計算機の基本構成
graph LR A[CPU]<-->B[バス]<-->C[メモリ] B<-->D[I/O装置] B<-->E[I/O装置]
CPUは高速だが、バスを介すためメモリは低速、I/Oはさらに低速
バスで一度に転送できるビットがバス幅
機械語命令の表現
CPUは0x01C8みたいなのをメモリに格納して実行する
0x01c8は
オペコード、オペランドを格納している
- オペコード
- 命令の種類(加算/乗算etc…)
- オペランド
- 命令の内容(引数)
機械語命令の実行
マルチサイクル方式の例(5ステージ)
graph LR A[命令の読み込み]-->B[命令の解読]-->C[オペランド読み込み]-->D[命令の実行]-->E[結果の格納]-->A
このサイクルをクロック信号に合わせて同期する
この場合は5クロック1サイクル
CPUは早いがメモリ律速になる
→ノイマンボトルネック
cerebrasで聞いた話だ