中級では記憶の階層とバスを見ました。上級では、数字で捉える階層と、構造上の限界へ。
概要 — まず全体をつかむ
詳細 — 1段階ずつ追う
桁で違う「距離」
各記憶の速さは桁で違います(目安)。
- レジスタ 〜1ns、L1 数ns、L2/L3 数〜数十ns
- メモリ 〜100ns、SSD 数十μs、HDD 〜10ms
- ネットワーク ms 級
上の階層に「いかによく使うものを当てるか(局所性)」が、体感速度を決めます。
やさしく言うと(中級)
アニメーション『コンピュータの中身(部品マップ)』を開く
コンピュータの記憶は、速いが小さいものから、遅いが大きいものまで階層になっています。
アニメーション『記憶の階層(速さと容量)』を開く
- レジスタ/キャッシュ(CPU内) — 最速・最小
- メモリ(RAM) — 速い・中容量(電源で消える=揮発性)
- ストレージ(SSD/HDD) — 遅い・大容量(消えない=不揮発性)
用語では、動作中に使うメモリを主記憶、消えずに残すストレージを補助記憶とも呼びます。
速さと容量はトレードオフ。よく使うものを上の階層に置いて、全体を速く見せます。キャッシュが効くのは、直前に使ったデータや近くのデータがまた使われやすいから(参照の局所性=時間的・空間的)。
構造とボトルネック
- フォンノイマンボトルネック — 命令もデータも同じメモリを通す構造の限界
- バス — PCIe(拡張・GPU・NVMe)、メモリバス。帯域が効く
- NUMA — 複数CPUで、ノード(ソケット)ごとにメモリまでの距離が違う(近い方が速い。同一ノード内のコアは同距離)
- 周辺 — USB/NVMe/ネットワークのI/O
やさしく言うと(中級)
- バス — 部品間のデータの通り道(幹線道路)。bit幅=一度に運べる線の本数(幅が広いほど一度に多く運べる)
- クロック — 動作のリズム(速さの目安。ただし数字だけでは決まらない)。GHz=1秒あたりの動作回数
- キャッシュ階層(L1/L2/L3) — CPUの近くに置く高速メモリ
- チップセット — マザーボード上で各部品の橋渡しをする
起動と実行の実体
- 電源投入 → UEFI(ファームウェア)が初期化
- ブートローダを読み、カーネルをメモリへ
- カーネルが init を起動、各サービスが立ち上がる
- 以降、CPUはストアドプログラム方式で命令を取り込み実行し続ける
- 入出力は割り込み駆動、大量転送はDMAでCPUを介さず
やさしく言うと(中級)
- 電源投入 → ファームウェア(BIOS/UEFI)が起動
- ストレージからOSのローダを読み、メモリへ
- CPUが命令をフェッチ→デコード→実行(後述のCPU記事へ)
- 必要なデータをメモリ・キャッシュ経由でやり取り
- 描画はGPUが担い、フレームバッファから画面へ
⚠️ 性能の見方
- メモリ帯域律速 — 計算より、データ移動が全体を決めることが多い
- NUMAの遅延 — 遠いメモリへのアクセスで性能低下
- I/Oボトルネック — ストレージ・ネットワーク待ち
- TDP(熱設計電力) — 冷やせる範囲でしか性能を出せない
- 数字の罠 — クロック・コア数・GB だけでは実性能は測れない(局所性・帯域・並列度が効く)
やさしく言うと(中級)
- メモリ不足 — 足りないとストレージを代用(スワップ)し激遅に
- ストレージI/O — 読み書き待ちが全体を律速する
- 発熱・サーマルスロットリング — 熱で自動的に性能を落とす
- 数字の罠 — クロックやコア数だけでは実性能は決まらない
理解度チェック
そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。
問1. メモリのアクセス速度をおおまかに速い順で並べると?
問2. CPUが高速でも、メモリとのデータ移動が全体を律速しがちな構造上の問題は?
問3. 大量データ転送を、CPUを介さずに行う仕組みはどれ?
問4. NUMAの説明として正しいのは?
問5. 電源投入からカーネルが動き出すまでの受け渡しの順序として正しいのは?
問6. TDP(熱設計電力)が示すものとして最も適切なのは?
問7. 電源投入時に最初にハードウェアを初期化する現代のファームウェアを英字4文字で答えてください。
問8. 「直近使ったもの・その近くを再び使う」というアクセスの偏りの性質を何と呼ぶ?