6/3

日記

2026/06/03

CPU

CPU命令の流れ

メモリ(主記憶装置)にはデータや命令が入ってる。そのアドレスを指定することでデータの読み書きをしてる。

CPUは命令をする制御装置と計算を担う演算装置がある。一時的に保存するレジスタというCPU内部の記憶装置がある。

  1. 制御装置のプログラムカウンタから命令のメモリアドレスを指定し取り出す(フェッチ)。取り出した命令は制御装置の命令レジスタに保存される。
  2. 命令レジスタの命令部から制御装置のデコーダーに送られ、命令の解読が行われる。処理は演算装置の演算装置に送られて準備される。
  3. 命令レジスタのオペランド部からデータがどこに有るかを参照し、データは演算装置の汎用レジスタに一時格納される。
  4. 汎用レジスタのデータから演算装置が演算を行い、その結果をまた汎用レジスタに格納。

CPU高速化

一般的なノイマン型コンピュータは逐次制御方式をとってる。これは命令の取り出し、命令の解読、オペランド読み出し、命令の実行という一連の流れを一命令ずつ処理する。これは効率が悪い。

パイプライン方式:命令を一つずつずらして処理する。
取り出しからの解読をしている時点で、解読のCPUは働き、取り出しのCPUは休ませず、別の命令の取り出しをさせる。。。という風にずらして処理していく。
懸念として、命令実行の結果に寄って取り出す命令の種類が違うというような場合、強制的に待たされることになる。これを回避するため、あらかじめ実行結果を予測(分岐予測)し、命令を実行する(投機実行)。投機ってあまり聞いたことないけど、一般的に博打的な賭けに出ることを言うらしい。それでいいのか。

パイプライン方式のさらなる高速化
1. スーパーパイプライン:CPUの手順を4つ以上に分けて、さらなる高速化を狙う
2. スーパースカラ:処理を複数同時にする

CPU設計思想

  • CISC
    Conplex Instruction Set Computer
    一つの命令で複雑なことをできるようにして、少ない命令回数で高速化を狙う。
  • RISC
    Reducedあーだこーだ
    一つの命令を単純化。一つ一つの処理を高速化して高速化を狙う。

世間的に圧倒的にRISCが多いらしい。あと最近では見た目がCISCで中身はRISC寄りのものが多いとか。

メモリ

RAM:Random Access Memory 自由に読み書きできる。電源が消えるとデータが消える揮発性

ROM:Read Only Memory 読み出し専用。データ消えない不揮発性

RAMにはDRAMとSRAMがあるDRAMが主記憶装置。SRAMはキャッシュメモリに使われる。DRAMとSRAMの違いは基本的にはSRAMが高性能で高価。DRAMはコンデンサを使う。SRAMはフリップフロップ回路を使う。DRAMはリフレッシュ動作が必要。リフレッシュ動作とはデータが消えないようわざと電気を流すこと。

ROMにはマスクROMとPROMがある。マスクROMは一般的なROMを指す。PROMはPがProgrammableの略で、書き込みもできるようにしたROMのこと。さらに紫外線に寄ってデータの書き込みをするやつをEPROMといい、電圧でデータの書き込みをするやつをEEPROMという。EEPROMの一種としてフラッシュメモリがある。

内省

結局朝一の過ごし方がその日を決めるんよなあ。