CPU

CPU

執筆済 コンピュータアーキテクチャ

命令を読み、解釈し、実行する装置。

基本の繰り返し#

fetch  … PC の指すアドレスから命令を読む
decode … 何をする命令かを解釈する
execute… ALU などで実行する
memory … 必要ならメモリを読み書きする
write  … 結果をレジスタに書く

これを毎サイクル繰り返す。それだけ。 複雑さはすべて「これをいかに速く回すか」から来ている。

主な構成要素#

要素 役割
ALU 算術・論理演算
レジスタ 最速の記憶。数十個
制御装置 命令の解釈と各部への信号
プログラムカウンタ 次に実行する命令のアドレス
キャッシュ メモリの遅さを隠す

高速化の手法#

手法 内容
パイプライン 複数命令を段階的に重ねる
スーパースカラ 複数命令を同時に発行する
アウトオブオーダ実行 依存のない命令を先に実行する
分岐予測 分岐先を予測して先に進める
投機実行 予測に基づいて実行し、外れたら破棄する

プログラムの見た目の順序と、実際の実行順序は一致しない。 結果が順序どおりに見えるよう辻褄を合わせているだけ。

この投機実行が Spectre / Meltdown(2018)の 脆弱性の原因になった。 破棄された投機実行の痕跡がキャッシュに残り、 そこから情報が漏れる。 性能のための最適化が、セキュリティの前提を壊した例。

クロック周波数の頭打ち#

消費電力はおよそ PfV2。 周波数を上げると電圧も要り、発熱が急増する。 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
ノート一覧を閉じる