# スーパースカラー実行 フェッチ・デコード・ディスパッチ段で**複数の命令を同時に処理**し、複数の機能ユニットへ並列発行する実行方式。**IPC > 1**(1 サイクルあたり 1 命令超)を実現する。 ## 基本構造 実行ステージは実際には複数の**機能ユニット**(整数 ALU、浮動小数点ユニット、ロード/ストアユニットなど)で構成される。スーパースカラーはこれを活用し、1 サイクルに複数の命令を各ユニットへ振り分ける。 - **発行幅(Width)**: 1 サイクルに発行できる命令数の上限。プロセッサの「横幅」を表す。 - 機能ユニット数は発行幅より多い——命令ミックスが変わるため、すべてのユニットを使い切ることは稀。 ## 主要プロセッサの発行幅 | 発行幅 | プロセッサ例 | |---|---| | 2 | UltraSPARC T2/T3、Cortex-A73 | | 4 | Apple M1(E コア) | | 6 | Athlon 64、Core 2、Zen 1〜4 | | 8 | Haswell/Broadwell、Skylake、Apple A13-A16 & M1〜M2(P)、Zen 5 | | 10 | Sunny Cove、Apple M4(P) | | 12 | Golden Cove | > [!key-insight] 発行幅のスケーリング問題 > ディスパッチロジックの複雑さは発行幅 n の**2 乗**でスケールする。4-issue の 2 倍幅の 8-issue はディスパッチが 4 倍以上大きくなる。このため超広幅コアは現実的でなく、代わりに SMT + マルチコアが採用されている。 ## 超パイプライン×スーパースカラー 現代のプロセッサはほぼすべて超パイプライン化とスーパースカラー発行を組み合わせる。単に「スーパースカラー」と呼ぶ場合、両方を含む。 ## x86 における発行幅 x86 はμops(マイクロオペレーション)への変換を挟むため、「発行幅」の定義が複数存在する: - x86 命令単位: 最大 5 命令/サイクル(Haswell) - フューズド μop 単位: 最大 4 μops/サイクル - アンフューズド μop 単位: 最大 8 μops/サイクル 詳細 → [[アウトオブオーダー実行]] ## 実際の IPC 理論的な発行幅が 8 でも、実アプリの平均 IPC は **SPECint で 2 未満**。依存関係・分岐誤予測・キャッシュミスが足を引っ張る。ILP の限界は→ [[Brainiac設計]]、[[メモリウォール]]。 ## 歴史 - IBM POWER1: 最初のメインストリーム スーパースカラー - SuperSPARC、Alpha 21064: RISC の早期スーパースカラー化 - オリジナル Pentium: 複雑な x86 でスーパースカラーを実現した工学的快挙 ## 関連概念 - コンパイラ主導の並列化 → [[VLIW]] - 複数スレッドで機能ユニットを充填 → [[同時マルチスレッディング]] - OOO 発行の詳細 → [[アウトオブオーダー実行]] ## 横断的知見 - 今後の取り込みで、複数ソース間の関係を追記する。 ## 未解決の問い - この概念をどのソース群で継続的に検証するか。