【すーぱーすから】

スーパースカラ とは?

最終更新:
💡 1コアで、独立した複数の命令を並行して進める

1つのCPUコアが、1クロックサイクルに複数の命令を発行して、並行して処理できる設計。複数の実行資源を使い、命令レベルの並列性を活かす。すべての命令が1サイクルで完了することや、毎回最大数を処理できることは意味しない。

📌 このページのポイント
1コアで複数の命令を発行できる 単一発行の例 2命令発行の例 命令A 命令A 命令B このサイクルに 最大1命令 同じサイクルに発行する幅の比較 独立した命令・実行資源が必要 発行 ≠ 1サイクルで完了
書類は命令、左右は1コアの発行幅の模式比較です。右は独立した2命令を発行できる条件の例で、全CPUが2命令という意味ではありません。矢印や時間表で発行を完了と誤認させず、最大幅と毎サイクルの実績を区別します。パイプラインの段階の重なりやアウトオブオーダーの実行順序とは別の観点です。
ひよこ ひよこ
スーパースカラってパイプラインとは違うの?
ペンギン先生 ペンギン先生
パイプラインは命令の処理を段階に分け、異なる命令の段階を重ねる仕組みだよ。スーパースカラは1コアで1サイクルに複数の命令を発行できる設計。パイプラインがあるだけで、複数の命令を同時に発行できるとは限らないんだ。
ひよこ ひよこ
2命令を発行できれば、2命令とも1サイクルで終わる?
ペンギン先生 ペンギン先生
発行と完了は違うよ。処理に複数サイクルかかる命令もあるし、前の結果を待つ命令もある。最大2命令という幅があっても、毎サイクル2命令を進められる保証ではないんだ。
ひよこ ひよこ
同時に動かして大丈夫かどう決めるの?
ペンギン先生 ペンギン先生
CPUが依存関係や実行資源を確認するよ。たとえばaを計算する命令と、aの結果を使う命令は同じように始められない。一方で独立した計算なら並行して進められる場合がある。この命令レベルの並列性をILPと呼ぶよ。
ひよこ ひよこ
命令の順番を変える仕組みと同じ?
ペンギン先生 ペンギン先生
別の観点だよ。アウトオブオーダーは実行順序の工夫で、スーパースカラは複数命令を発行する幅の話。たとえばArm Cortex-A8はインオーダーのデュアルイシュー設計として説明されている。スーパースカラが必ず順番を入れ替えるとは限らないんだ。
ひよこ ひよこ
レーンを増やせば、その分だけ速くなる?
ペンギン先生 ペンギン先生
独立した命令が十分にあるとは限らないし、メモリ待ちなどもあるので単純に比例しないよ。マルチコアはコアを増やす別の方法で、両方を組み合わせる設計もある。最大発行数だけではプログラム全体の実行時間は決まらないので、発行の幅と実際の処理量を分けて考えよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「スーパースカラ」って出てきたら「1コアで複数の命令を並行して進められるCPUの設計」と思えばだいたいOK!
📖 おまけ:英語の意味
「Superscalar」 = スカラを超える
💬 この文脈のスカラは、1サイクルに発行する命令の幅が1つの設計。Superは「超える」で、複数の命令を発行できる幅を表すよ。「1つ以上」ではなく、1つを超えることがポイントだね

参考資料

← 用語集にもどる