Цифровая обработка сигналов

Real-Time DSP: FPGA, DSP-ядра и fixed-point арифметика

Система аварийного торможения в автомобиле имеет 100 мс от обнаружения препятствия до начала торможения. Половина уходит на механику. Оставшиеся 50 мс: LiDAR, RADAR, камера, fusion, решение. GPU не справится - latency непредсказуема. FPGA и DSP-ядра - специализированный ответ на задачи, где промах deadline стоит жизни.

  • Tesla Autopilot: Xilinx FPGA для обработки LiDAR в 0.3 мс вместо 2 мс на GPU
  • Qualcomm Hexagon DSP: wake-word detection при потреблении 10 мВт - несколько часов батареи в сутки
  • Radar ADAS: 1024-точечный FFT каждые 100 мкс на TI C6000 DSP для обнаружения препятствий
  • Профессиональный аудио: SSL 9000 консоль - FPGA для 96 каналов при задержке менее 1 мс

FPGA: программируемая кремниевая сеть

LiDAR в Tesla Model S обрабатывает 1 миллион точек в секунду. Задержка должна быть менее 1 мс. GPU справится, но потребляет 250 Вт. FPGA (Xilinx Zynq UltraScale+): 15 Вт и детерминированная латентность 0.3 мс. Секрет: на FPGA алгоритм реализован аппаратно, а не программно.

**FPGA архитектура.** Look-Up Tables (LUT) реализуют любую булеву функцию за один такт. DSP48 блоки - аппаратные умножители-накопители (MAC). Block RAM - встроенная двухпортовая память. Interconnect - программируемая сеть соединений. Вместо CPU fetch-decode-execute, FPGA исполняет все операции параллельно в конвейере.

**FPGA vs ASIC vs GPU.** FPGA: гибкий, перепрограммируемый, 10-100x медленнее ASIC, 10x дешевле в малых тиражах. ASIC (Apple Neural Engine, Google TPU): максимальная эффективность, нельзя перепрограммировать, стоимость маски 10-50 млн USD. GPU: программируемый, высокая пропускная способность, недетерминированная латентность. Для real-time с жёсткими latency constraints - FPGA или ASIC.

Почему FPGA даёт детерминированную латентность, а GPU - нет?

DSP процессоры: MAC и специализированные ISA

Qualcomm Snapdragon 888 включает Hexagon DSP - 6 аппаратных MAC unit, работающих параллельно. Обработка аудио 24/7 при потреблении 10 мВт вместо 500 мВт GPU. Специализированные DSP-ядра существуют рядом с ARM CPU в каждом смартфоне - именно они обрабатывают wake-word detection, шумоподавление и эхокомпенсацию.

**Very Long Instruction Word (VLIW).** TI C6000 и Qualcomm Hexagon используют VLIW: одна инструкция содержит 8 независимых операций, выполняемых параллельно за один такт. Компилятор (а не CPU hardware scheduler) раскладывает зависимости. Это упрощает аппаратуру, но требует умного компилятора - ручная оптимизация на VLIW DSP в 2x-5x быстрее компилятора.

Почему DSP-ядра выгоднее GPU для постоянной обработки аудио на смартфоне?

Fixed-Point арифметика: точность против скорости

NVIDIA H100 делает 2000 TFLOPS в FP16. Qualcomm Hexagon - 26 TOPS в INT8. Разница не только в размере чипа: INT8 требует в 2 раза меньше памяти, в 4 раза меньше энергии и быстрее из-за ширины шины данных. Для DSP на батарейном питании fixed-point не опция - это необходимость.

**Quantization Noise.** При переходе от float к Q15 возникает ошибка квантования. Для равномерного квантования она моделируется как белый шум с дисперсией e^2 = Delta^2/12, где Delta = 2^(-N+1) - шаг квантования. Критический эффект для IIR фильтров: полюсы могут сдвинуться при квантовании коэффициентов, приводя к нестабильности. FIR всегда стабилен при квантовании.

Почему при умножении двух Q15 чисел результат хранят в 32-битном аккумуляторе?

Real-Time Pipeline: latency vs throughput

Радар ADAS в автомобиле обрабатывает 1024-точечный FFT каждые 100 мкс. С GPU: 5 мкс FFT, но 2 мс latency из-за DMA transfer и OS overhead. С FPGA: 20 мкс FFT, но latency 25 мкс - детерминированный. При аварийном торможении 25 мкс реакции критичны.

**WCET анализ.** Worst-Case Execution Time - максимальное возможное время выполнения при любых входных данных. Для safety-critical систем (авиация, медицина) WCET должен быть доказан, а не измерен. Инструменты: AbsInt aiT, Rapita RVS. Причины недетерминированности: cache misses, branch prediction, прерывания. FPGA или bare-metal DSP без кешей дают математически доказуемый WCET.

Быстрее = лучше для real-time систем

Real-time требует детерминированной латентности, а не максимальной скорости. FPGA с 20 мкс FFT лучше GPU с 5 мкс FFT, если у GPU worst-case latency 2 мс из-за OS jitter.

Авиационные системы сертифицируются по DO-178C: не 'работает быстро', а 'гарантированно работает за N мкс при любых условиях'. Это принципиально другое требование.

Почему в real-time DSP коде запрещён dynamic memory allocation (malloc)?

Ключевые идеи

  • FPGA: аппаратный конвейер из LUT, DSP48 MAC, Block RAM - детерминированная латентность без OS jitter
  • DSP-ядра: специализированные MAC units (Hexagon, C6000) - MAC-intensive вычисления при 10-50x меньшем потреблении чем GPU
  • Fixed-point Q15: 16-bit с 15 дробными битами, SNR 92 дБ; Q15*Q15=Q30 хранится в 32-bit аккумуляторе
  • Real-time pipeline: double buffering, нет malloc, нет printf, WCET < deadline / 2
  • Latency vs Throughput: FPGA 20 мкс FFT с гарантированным WCET лучше GPU 5 мкс с OS jitter 2 мс

Связанные темы

Real-time DSP реализует алгоритмы предыдущих уроков в аппаратных ограничениях.

  • FIR-фильтры — FIR - основной вычислительный блок для FPGA DSP48 и SIMD MAC units
  • Компрессия: JPEG, MP3, H.264 — Кодеки реализуются на FPGA и DSP для real-time encode/decode
  • DSP на собеседовании — Fixed-point и real-time constraints - типичные вопросы на DSP-интервью

Вопросы для размышления

  • IIR фильтры нестабильны при квантовании коэффициентов в Q15. Как это проявляется и как Q31 или float решает проблему?
  • Как HLS (High-Level Synthesis) инструменты вроде Xilinx Vitis позволяют использовать C++ для синтеза FPGA вместо VHDL?
  • Что такое WCET анализ и почему для авиационных систем он должен быть доказан формально, а не измерен эмпирически?

Связанные уроки

  • dsp-14 — Компрессия JPEG/MP3 реализуется на FPGA - нужно понять что именно ускоряется
  • dsp-07 — FIR-фильтры - основной compute-блок, который маппится на FPGA и DSP MAC units
  • dsp-16 — Собеседование по DSP включает вопросы о fixed-point и real-time constraints
  • arch-14-multicore — FPGA pipeline параллелизм аналогичен CPU instruction-level parallelism
  • os-18-io-advanced
Real-Time DSP: FPGA, DSP-ядра и fixed-point арифметика

0

1

Войти