CPU
命令を読み、解釈し、実行する装置。
基本の繰り返し#
fetch … PC の指すアドレスから命令を読む
decode … 何をする命令かを解釈する
execute… ALU などで実行する
memory … 必要ならメモリを読み書きする
write … 結果をレジスタに書くこれを毎サイクル繰り返す。それだけ。 複雑さはすべて「これをいかに速く回すか」から来ている。
主な構成要素#
| 要素 | 役割 |
|---|---|
| ALU | 算術・論理演算 |
| レジスタ | 最速の記憶。数十個 |
| 制御装置 | 命令の解釈と各部への信号 |
| プログラムカウンタ | 次に実行する命令のアドレス |
| キャッシュ | メモリの遅さを隠す |
高速化の手法#
| 手法 | 内容 |
|---|---|
| パイプライン | 複数命令を段階的に重ねる |
| スーパースカラ | 複数命令を同時に発行する |
| アウトオブオーダ実行 | 依存のない命令を先に実行する |
| 分岐予測 | 分岐先を予測して先に進める |
| 投機実行 | 予測に基づいて実行し、外れたら破棄する |
プログラムの見た目の順序と、実際の実行順序は一致しない。 結果が順序どおりに見えるよう辻褄を合わせているだけ。
この投機実行が Spectre / Meltdown(2018)の 脆弱性の原因になった。 破棄された投機実行の痕跡がキャッシュに残り、 そこから情報が漏れる。 性能のための最適化が、セキュリティの前提を壊した例。
クロック周波数の頭打ち#
消費電力はおよそ 。 周波数を上げると電圧も要り、発熱が急増する。 2000 年代半ばに 3〜4 GHz で頭打ちになり、 以降はコア数を増やす方向に転換した (並行・並列処理)。
参考文献#
- David A. Patterson, John L. Hennessy. Computer Organization and Design: RISC-V Edition, 2nd ed. Morgan Kaufmann, 2020.
- John L. Hennessy, David A. Patterson. Computer Architecture: A Quantitative Approach, 6th ed. Morgan Kaufmann, 2017.
- Paul Kocher et al. Spectre Attacks: Exploiting Speculative Execution. IEEE S&P, 2019. https://doi.org/10.1109/SP.2019.00002