変更要約: 初版
2.1プロセッサ
CPUが命令を実行する基本サイクル(フェッチ・デコード・実行・ストア)と、その速度を左右するレジスタ・パイプライン処理・CISC/RISCという設計思想の違いを学びます。さらにクロック周波数・MIPSという性能指標、マルチコア化とGPUの役割分担まで、プロセッサ全体を実務の視点で整理します。
アプリケーションがどれほど工夫されていても、最終的にそれを実行するのはCPU(中央処理装置)です。CPUが1つの命令をどのような手順でこなすのか、そしてその手順を速くするためにどんな工夫が積み重ねられてきたのかを理解すると、「なぜこの構成だと遅いのか/速いのか」を根拠を持って判断できるようになります。
2.1.1命令実行サイクルとレジスタ
- 命令実行サイクル=CPUが1つの機械語命令を処理する基本の繰り返し。フェッチ(主記憶から命令を取り出す)→デコード(命令を解読する)→実行(演算・処理を行う)→ストア(結果をレジスタや主記憶に書き戻す)の4段階で構成されます。
- レジスタ=CPU内部にある超高速だが極小容量の記憶素子。演算対象や中間結果を保持する汎用レジスタのほか、次に実行する命令のアドレスを保持するプログラムカウンタ(命令アドレスレジスタ)、実行中の命令そのものを保持する命令レジスタなど役割別に存在します。主記憶よりアクセスが桁違いに速い代わりに、容量はごくわずかです。
2.1.2パイプラインとCISC/RISC
- パイプライン処理=命令実行サイクルの各段階(フェッチ/デコード/実行/ストア)を流れ作業のように重ねて並行実行する高速化技法。ある命令がデコード段階にある間に次の命令のフェッチを始める、という形で段階ごとの回路を遊ばせず稼働させます。ただし分岐命令(条件によって次に実行する命令が変わる)が発生すると、先読みした命令が無駄になるパイプラインハザードが起き、性能低下の原因になります。
- CISC(Complex Instruction Set Computer)=1つの命令で複雑な処理をまとめて行えるような、命令の種類が多く高機能な命令セット設計。RISC(Reduced Instruction Set Computer)=命令の種類を単純なものに絞り込み、1命令1クロックに近い形で高速に実行できるようにした設計思想。単純な命令の組み合わせで複雑な処理を組み立てるため、パイプライン処理と相性がよい設計です。
「命令実行サイクル=フェッチ→デコード→実行→ストア」「パイプライン処理は各段階を並行実行して高速化するが分岐命令でハザードが起きうる」「CISC=複雑高機能な命令セット/RISC=単純な命令セットでパイプラインと相性が良い」が最頻出です。「クロック周波数を上げれば必ず処理速度が比例して上がる」という単純化した誤解も定番のひっかけです。
性能評価の場面を想定すると理解が深まります。あるチームが「新しいCPUはクロック周波数が旧機種の1.5倍だから、処理速度も1.5倍になるはずだ」と見積もったとします。しかし実際のプログラムには分岐命令が頻出し、条件次第で実行経路が変わるため、パイプラインが先読みしていた命令が無駄になる場面が発生します。分岐が多いワークロードほど、クロック周波数の向上分だけの性能改善は得られません。また、命令セットの違いにも注意が必要です。組込み機器や近年の高性能プロセッサの多くはRISC系の設計を採用し、単純な命令を大量に高速実行することでパイプラインの効率を最大化しています。一方、汎用PC向けの伝統的なプロセッサはCISC系の命令セットを持ちつつ、内部的には単純な命令(マイクロオペレーション)に分解して実行する、というハイブリッドな実装も広く使われています。性能を語るときは、クロック周波数という単一指標だけでなく、MIPS(Million Instructions Per Second、1秒間に実行できる命令数を百万単位で表した指標)のような実効的な処理能力の指標や、実際のワークロードでのベンチマーク測定と併せて評価することが、実務での正しい判断につながります。
2.1.3マルチコアとGPU
| 区分 | 得意な処理 | 特徴 |
|---|---|---|
| マルチコアCPU | 種類の異なる逐次処理を並行実行 | コア数だけ独立した命令実行系統を持つ |
| GPU | 大量の同種データへの単純な演算を並列実行 | 画像処理・AI学習で多用される超並列演算装置 |
- マルチコア=1つのチップ上に複数の独立したCPUコアを集積した構成。クロック周波数を上げ続ける発熱・消費電力の限界に対し、コア数を増やして並行処理で全体のスループットを稼ぐ方向へ発展してきました。ただし、ソフトウェア側が処理を複数コアに分割できる(並列化されている)ことが前提で、単純な逐次処理はコアを増やしても速くなりません。
- GPU(Graphics Processing Unit)=もともと画像描画のために設計された、大量の単純な演算を同時並行で処理することに特化したプロセッサ。同じ計算を大量のデータに繰り返し適用するのが得意なため、近年は画像処理に限らず、機械学習の学習処理(大量の行列演算)にも広く転用されています。
ひっかけ: 「クロック周波数が高いCPUは、どんな処理でも常に高速」は誤りです。パイプラインハザードや命令セットの違いにより、実効性能はワークロード次第です。また「マルチコア化すれば単純な逐次処理も自動的に速くなる」も誤り=ソフトウェアが並列化されていなければコア数を増やしても速度は上がりません。「GPUはCPUの完全な上位互換で、あらゆる処理に向く」も誤り=GPUは大量の同種データへの単純演算に強い一方、条件分岐の多い複雑な逐次処理はCPUの方が得意です。
2.1.4この節のまとめ
- 命令実行サイクル=フェッチ→デコード→実行→ストア。レジスタは極小容量だが最速の記憶素子。パイプライン処理は各段階を並行実行するが分岐命令でハザードが起きうる
- CISC=複雑高機能な命令セット・RISC=単純な命令セットでパイプラインと相性良好。クロック周波数だけでなくMIPSやベンチマークで実効性能を評価する
- マルチコアは並列化されたソフトウェアでこそ効果を発揮・GPUは大量の同種データへの単純演算に特化
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. CPUが1つの機械語命令を処理する基本の手順として、正しい順序はどれか。
Q2. 条件分岐の多いプログラムをパイプライン処理で実行したところ、期待したほど性能が向上しなかった。最も可能性が高い原因はどれか。
Q3. 大量の画像データに同じフィルタ処理を繰り返し適用する処理を高速化したい。最も適した処理装置はどれか。

