- 1約 11 分コンピュータとは何か — 電気のオンとオフしか分からない機械コンピュータは「電気が流れているか、いないか」しか区別できません。それだけで文字も画像も計算も表現しています。
- 2約 12 分2進数 — オンとオフの並びで、なぜ数が表せるのか2進数は特別な数ではありません。私たちが使う10進数と、桁が繰り上がるタイミングが違うだけです。
- 3約 13 分論理回路から演算へ — AND・OR・XOR の組み合わせで足し算ができるコンピュータは足し算の方法を「知って」いるわけではありません。ANDとORとXORという単純な部品を組み合わせると、結果的に足し算になる回路ができあがります。
- 4約 12 分CPUの基本サイクル — 取ってくる・読み解く・実行するCPUは「命令を取ってくる(フェッチ)→ 何の命令か読み解く(デコード)→ 実行する」を繰り返しています。
- 5約 13 分パイプライン — 速くなるのはスループット、1命令の時間ではないパイプラインは、複数の命令の処理段階を重ねることで、単位時間あたりに完了する命令数(スループット)を増やす技術です。
- 6約 12 分分岐予測 — 先回りして、外したらどうなるかif文に出会ったCPUは、条件の計算が終わるのを待たずに「たぶんこっち」と予測して先へ進みます。過去の傾向を記録しているので、当たる確率はかなり高くなります。
- 7約 14 分キャッシュと記憶階層 — なぜ何段も重ねるのか速い記憶装置は小さく高価、大きい記憶装置は遅い。この制約からは逃れられないので、小さく速いものを手前に、大きく遅いものを奥に置いて段を作ります。これが記憶階層です。
- 8約 12 分メモリの仕組み — コンデンサに電荷を溜めて0と1を覚えるメインメモリ(DRAM)は、極小のコンデンサに電荷があるかないかで1ビットを覚えています。電荷は自然に抜けていくので、定期的に読み直して書き戻す必要があります。これがリフレッシュです。
- 9約 14 分仮想メモリ — なぜプロセスは互いのメモリを壊さないのかどのプログラムも「自分だけが全メモリを使っている」という前提で動けます。実際には、プログラムが見ているアドレスは偽物で、CPUが実物のアドレスへ変換しています。
- 10約 13 分SSDとHDD — なぜSSDは速いのかHDDが遅いのは、目的の場所まで物理的に移動する必要があるからです。腕を動かし、円盤が回ってくるのを待ちます。この待ち時間はミリ秒単位で、電気の速度とは比べものになりません。
- 11約 14 分SSDはなぜ書き込みが複雑なのか — 消せる単位が大きすぎるSSDは、読み書きは小さな単位でできるのに、消去だけは大きなかたまり単位でしかできません。この不一致が、SSDの動作を複雑にしている根本原因です。
- 12約 13 分OSの役割 — 1つのCPUを、みんなで分け合うCPUのコア1つは、同時には1つの処理しか実行できません。何十個ものアプリが同時に動いて見えるのは、OSが高速に切り替えているからです。
- 13約 13 分システムコール — アプリとカーネルの境界線ファイルを読む、通信する、メモリを確保する。こうした操作はアプリが自分で行うことができず、必ずカーネルに依頼します。その依頼の入口がシステムコールです。