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