mcpField
C
cpu-pipelines-and-hazards

cpu-pipelines-and-hazards

github.com/mohitmishra786開発269322 回インストール18 週間前に更新
リポジトリ

cpu-pipelines-and-hazards について

開発者や学習者向けに、パイプラインの段階、ハザード、フォワーディング、ストール、分岐処理を解説し、命令スケジューリングや性能カウンターとの関係も扱うコンピューターアーキテクチャのスキルです。

主な機能

  1. 01基本的なパイプライン段階
  2. 02データハザードと制御ハザード
  3. 03フォワーディングとレジスタリネーミング
  4. 04分岐予測とパイプラインフラッシュ
  5. 05命令レベル並列性のヒント
  6. 06性能カウンターの例

活用シーン

  1. 01パイプラインストール指標の解釈
  2. 02命令順序が実行に与える影響の説明
  3. 03アセンブリのスケジューリング分析
  4. 04ホットループの性能低下の調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mohitmishra786/low-level-dev-skills --skill cpu-pipelines-and-hazards

インストール後、Claude Code で/cpu-pipelines-and-hazardsを入力して読み込まれたか確認します。

詳細

CPU パイプラインとハザード

目的

古典的および現代の CPU パイプラインの概念(ステージ、データハザードと制御ハザード、フォワーディング/バイパス、ストール、分岐処理)について説明します。最適化やマイクロアーキテクチャのカウンターを理解するための基礎です。

使用する場面

  • skills/profilers/intel-vtune-amd-uprof のパイプラインストール指標を解釈する
  • 命令の順序がスループットに影響する理由を教える
  • アセンブリのスケジューリングをハードウェアの動作と関連付ける
  • ホットループで予期しない性能低下をデバッグする

ワークフロー

1. 5 ステージの古典的なパイプライン(MIPS 形式のメンタルモデル)
IF → ID → EX → MEM → WB

実行を重ね合わせることで、命令 N が EX にある間に、N+1 が ID にあります。

2. データハザード
種類例対処法
RAW(真の依存)add r1,r2,r3 の後に sub r4,r1,r5EX/MEM/WB からフォワーディング
WAR / WAWインオーダーではまれ、OoO のレジスターリネーミングでは関連ありレジスターリネーミング

フォワーディングがない場合:

stall until writeback completes
3. 制御ハザード(分岐)
Branch in ID → target unknown until EX
├── Predict taken/not-taken (static or dynamic)
├── Flush wrong-path instructions on mispredict
└── Penalty = pipeline depth (varies by CPU)

skills/computer-architecture/branch-prediction-and-speculation を参照してください。

4. 構造ハザード

機能ユニットが限られていると(メモリーポートが 1 つなど)、依存関係がなくてもストールが発生します。

5. 実践的な最適化のヒント
/* Bad — tight dependency chain */
for (int i = 0; i < n; i++)
    acc = acc + data[i];   /* each iter waits on acc */

/* Better — multiple accumulators (ILP) */
acc0 = acc1 = 0;
for (int i = 0; i < n; i += 2) {
    acc0 += data[i];
    acc1 += data[i+1];
}
acc = acc0 + acc1;

skills/low-level-programming/cpu-cache-opt と組み合わせてください。メモリーが性能を左右することはよくあります。

6. uops / ポートの読み方(x86)
perf stat -e instructions,cycles,stalls-frontend,stalls-backend ./app

VTune の「Microarchitecture Exploration」はパイプラインスロットに対応します。

7. エージェントの使用方法
/cpu-pipelines-and-hazards Explain RAW hazard in this ARM assembly loop and how to break it

よくある問題

症状原因解決策
stalls-frontend の値が高いI-cache ミス/分岐予測ミスホットループをアラインする。分岐スキルを参照
アンロールしても高速化しないメモリーボトルネックロードをプロファイリングする。プリフェッチする
サイクルモデルが不正確OoO 実行を考慮していないperf ハードウェアカウンターを使用する
「NOP で直る」タイミングに依存する MMIONOP でデバイスの遅延を決して調整しない

関連スキル

  • skills/computer-architecture/branch-prediction-and-speculation — 分岐予測ミスのコスト
  • skills/computer-architecture/memory-hierarchy-and-caches — ロードレイテンシ
  • skills/low-level-programming/cpu-cache-opt — キャッシュラインの影響
  • skills/profilers/intel-vtune-amd-uprof — パイプライン分析
  • skills/low-level-programming/assembly-arm — 命令スケジューリング

コメント