К основному содержанию
скилл CX Codex

cpu-pipelines-and-hazards — скилл для Claude Code: конвейеры

Объясняет стадии конвейера CPU, конфликты данных и управления, проброс и простои. Пригодится, когда непонятно, почему горячий цикл тормозит.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add mohitmishra786/low-level-dev-skills --skill cpu-pipelines-and-hazards -a claude-code
Открыть на GitHub

Что делает cpu-pipelines-and-hazards

Скилл разбирает классический пятистадийный конвейер IF → ID → EX → MEM → WB и то, что его ломает. Конфликты данных RAW лечатся пробросом из EX/MEM/WB, WAR и WAW всплывают при переименовании регистров в процессорах с неупорядоченным исполнением. Конфликты управления разбираются через предсказание переходов и сброс неверно выбранных инструкций, цена ошибки равна глубине конвейера.

Есть структурные конфликты: нехватка функциональных устройств даёт простои даже без зависимостей. В практической части — пример с накоплением в одном регистре против нескольких аккумуляторов для роста ILP, разбор perf stat -e instructions,cycles,stalls-frontend,stalls-backend и таблица типичных симптомов: высокий stalls-frontend от промахов I-кэша, отсутствие выигрыша от развёртки при упоре в память, неверная модель циклов из-за игнорирования OoO.

Скилл ссылается на соседние темы: предсказание переходов, иерархию памяти, оптимизацию кэша, профилировщики Intel VTune и AMD uProf, планирование инструкций в ARM. Отдельно предупреждает: задержки MMIO не настраивают вставкой NOP. Профилирование требует perf и доступа к аппаратным счётчикам, а на виртуалках и в контейнерах счётчики часто недоступны — это повод проверить окружение до того, как доверять цифрам.

Какие задачи решает

  • объяснить, почему порядок инструкций меняет пропускную способность
  • разобрать RAW-зависимость в цикле на ассемблере и разорвать её
  • связать метрики простоев из VTune со стадиями конвейера
  • отличить упор в память от конфликта данных в горячем цикле
  • найти причину резкого падения производительности в цикле

Примеры запросов агенту

  • /cpu-pipelines-and-hazards Explain RAW hazard in this ARM assembly loop and how to break it
  • Покажи, где в этом цикле конфликт данных и как его убрать через несколько аккумуляторов
  • Что означает высокий stalls-frontend в выводе perf stat для моего приложения?

Как установить cpu-pipelines-and-hazards

1Через Skills CLI (Vercel)

npx skills add mohitmishra786/low-level-dev-skills --skill cpu-pipelines-and-hazards -a claude-code

2Вручную: положить файлы

~/.claude/skills/cpu-pipelines-and-hazards/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/cpu-pipelines-and-hazards/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о cpu-pipelines-and-hazards

Как установить cpu-pipelines-and-hazards в Claude?

Выполните npx skills add mohitmishra786/low-level-dev-skills --skill cpu-pipelines-and-hazards -a claude-code. Скилл окажется в ~/.claude/skills/cpu-pipelines-and-hazards/SKILL.md.

Что делает cpu-pipelines-and-hazards?

Объясняет стадии конвейера CPU, конфликты данных и управления, проброс, простои и обработку переходов. Помогает связать порядок инструкций с поведением железа и метриками профилировщика.

С какими скиллами он работает вместе?

Ссылается на предсказание переходов и спекуляцию, иерархию памяти и кэши, оптимизацию кэша, профилировщики Intel VTune и AMD uProf, а также планирование инструкций в ARM.

Исходный текст

SKILL.md · MIT
---
name: cpu-pipelines-and-hazards
description: CPU pipeline skill for hazards, forwarding, and stalls. Use when explaining pipeline stages, data/control hazards, forwarding paths, or branch stalls in performance analysis. Activates on queries about pipeline hazard, data hazard, control hazard, forwarding, pipeline stall, or superscalar basics.
---

# CPU Pipelines and Hazards

## Purpose

Explain classic and modern CPU pipeline concepts: stages, data and control hazards, forwarding/bypassing, stalls, and branch handling — foundational for optimization and understanding microarchitecture counters.

## When to Use

- Interpreting pipeline stall metrics from `skills/profilers/intel-vtune-amd-uprof`
- Teaching why instruction order affects throughput
- Relating assembly scheduling to hardware behavior
- Debugging unexpected performance cliffs in hot loops

## Workflow

### 1. Five-stage classic pipeline (MIPS-style mental model)

```
IF → ID → EX → MEM → WB
```

Overlapped execution: instruction N in EX while N+1 in ID.

### 2. Data hazards

| Type | Example | Mitigation |
|------|---------|------------|
| RAW (true) | `add r1,r2,r3` then `sub r4,r1,r5` | Forwarding from EX/MEM/WB |
| WAR / WAW | Rare in in-order; relevant in OoO rename | Register renaming |

Without forwarding:

```
stall until writeback completes
```

### 3. Control hazards (branches)

```
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)
```

See `skills/computer-architecture/branch-prediction-and-speculation`.

### 4. Structural hazards

Limited functional units (single memory port) cause stalls even without dependencies.

### 5. Practical optimization hints

```c
/* 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;
```

Pair with `skills/low-level-programming/cpu-cache-opt` — memory often dominates.

### 6. Reading uops / ports (x86)

```bash
perf stat -e instructions,cycles,stalls-frontend,stalls-backend ./app
```

VTune "Microarchitecture Exploration" maps to pipeline slots.

### 7. Agent usage

```
/cpu-pipelines-and-hazards Explain RAW hazard in this ARM assembly loop and how to break it
```

## Common Problems

| Symptom | Cause | Fix |
|---------|-------|-----|
| High `stalls-frontend` | I-cache misses / branch mispredict | Align hot loop; see branch skill |
| No speedup from unroll | Memory bound | Profile loads; prefetch |
| Wrong cycle model | Ignored OoO execution | Use perf hardware counters |
| "NOP fixes it" | Timing-sensitive MMIO | Never tune device delays by NOP |

## Related Skills

- `skills/computer-architecture/branch-prediction-and-speculation` — mispredict cost
- `skills/computer-architecture/memory-hierarchy-and-caches` — load latency
- `skills/low-level-programming/cpu-cache-opt` — cache-line effects
- `skills/profilers/intel-vtune-amd-uprof` — pipeline analysis
- `skills/low-level-programming/assembly-arm` — instruction scheduling

© mohitmishra786 · MIT · mohitmishra786/low-level-dev-skills

Похожие скиллы

Все скиллы по теме «Языки программирования» →
golang-performance samber Помогает находить и устранять узкие места в Go-коде: сокращает аллокации памяти, оптимизирует горячие циклы и проверяет результаты замеров. CX Codex +1 41 900установок golang-benchmark samber Скилл помогает писать и запускать бенчмарки Go, разбирать профили и сравнивать результаты. Пригодится для поиска регрессий и анализа узких мест. CX Codex +1 39 500установок python-performance-optimization Seth Hobson Скилл помогает профилировать Python-код, находить узкие места CPU и памяти. Подходит, когда приложение медленно отвечает или тратит слишком много ресурсов. CX Codex 35 675установок m10-performance actionbook Инструкции для агента по оптимизации Rust-кода: от замеров через бенчмарки до устранения лишних аллокаций памяти. CX Codex +1 3 600установок perf-code-paths composio-community Скилл находит вероятные пути выполнения, точки входа и файлы, связанные со сценарием производительности. Пригодится перед профилированием. CX Codex +1 1 600установок go-performance cxuu Скилл для оптимизации Go: подсказывает, где заменить fmt на strconv, как задать ёмкость слайса и когда хватит strings.Builder. CX Codex +1 1 200установок

Из того же набора62

cuda Помогает агенту писать и оптимизировать CUDA-ядра: иерархия потоков, разделяемая память, потоки, флаги nvcc и Thrust. CX Codex +1 320установок kernel-debugging-advanced Скилл для трассировки ядра Linux: ftrace, trace-cmd, perf, kprobes, kgdb и разбор vmcore. Пригодится, когда драйвер тормозит без явной ошибки. CX Codex +1 317установок cuda-profiling Ведёт агента по профилированию CUDA-приложений: таймлайн в Nsight Systems, метрики ядер в Nsight Compute, разбор roofline и узких мест. CX Codex +1 316установок datasheet-and-refmanual-reading Учит агента читать даташиты и reference manual микроконтроллеров: где искать карту регистров, биты, дерево тактирования и errata. CX Codex +1 314установок qemu-kvm Ведёт агента по запуску виртуальных машин на QEMU с ускорением KVM: флаги, virtio-устройства, проброс VFIO и загрузка своих ядер. CX Codex +1 304установок bus-drivers-i2c-spi Помогает писать клиентские драйверы Linux для датчиков и PMIC на шинах I2C и SPI: регистрация, regmap, привязка к device tree. CX Codex +1 304установок kernel-debugging Ведёт агента по отладке ядра Linux: kgdb, kdb, ftrace, kprobes, dyndbg и разбор kdump через crash. Пригодится, когда паника ядра или драйвер молчит. CX Codex +1 302установок cuda-debugging Ведёт агента по отладке CUDA: cuda-gdb, Compute Sanitizer, дампы GPU и разбор ошибок 700/702. Пригодится, когда ядро падает или даёт неверный результат. CX Codex +1 301установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой