4. 异构计算任务划分与映射方法
星载异构计算平台通常由三类执行资源构成:FPGA 可编程逻辑(PL)、嵌入式 CPU(如 ARM Cortex-A 系列或 RISC-V 核)以及硬核加速器(如 DSP48 阵列、AI 引擎、专用 FFT/矩阵协处理器)。任务划分与映射的核心问题,是把一个完整算法拆成若干可独立调度的计算单元,再依据各单元的计算密度、数据依赖、实时性约束和可重构代价,分配到最合适的执行资源上,并通过流水线与并行度设计把资源利用率推到可接受的水平。
一、划分依据:从算法结构到资源画像
划分不是按代码行数切分,而是按数据流与计算特征切分。以 SAR 成像为例,典型处理链包括:原始回波数据格式化、距离向脉冲压缩(FFT→复数乘→IFFT)、距离徙动校正(插值/相位补偿)、方位向脉冲压缩、几何校正与辐射定标。其中距离向和方位向脉冲压缩都是规则的大批量 FFT 与复数乘加,数据并行度高、控制简单,适合映射到 FPGA 逻辑或硬核 FFT 加速器;距离徙动校正涉及逐点插值与坐标变换,访存不规则,更适合放在嵌入式 CPU 上做控制与调度,或由 FPGA 实现查表式插值;几何校正与定标则包含大量参数计算和分支判断,CPU 处理更灵活。
目标检测类算法(如 CFAR 检测、CNN 推理)的划分逻辑不同:卷积层、池化层是典型的规则张量运算,可映射到硬核 AI 加速器或 FPGA 的 DSP 阵列;非极大值抑制、阈值判决、目标关联等步骤依赖动态排序和条件分支,适合 CPU;而预处理(去噪、归一化)常放在 FPGA 逻辑中与前端接口紧耦合,减少数据搬运。
二、映射方法:从任务图到执行资源
把划分后的任务单元映射到资源,需要同时考虑三条约束:数据搬运开销、流水线级间缓冲深度、以及可重构配置的切换代价。一个实用的做法是先画出任务数据流图(DFG),标注每个节点的输入/输出数据量、计算延迟和依赖关系,再按“同构合并、异构拆分”的原则做映射。
以距离向脉冲压缩为例,假设输入为 4096 点复数回波,采样率 100 MSPS,要求单帧处理延迟不超过 200 μs。若全部放在 CPU 上做 FFT,按每点约 10 个周期估算,4096 点 FFT 约需 4×10⁴ 周期,在 1 GHz CPU 上约 40 μs,但加上数据搬运和多次调用,实际会超过 200 μs。若映射到 FPGA:用硬核 FFT IP 核,4096 点流水线模式吞吐率可达每周期 1 点,100 MHz 时钟下约 41 μs 完成一帧,且可与前后级流水重叠。因此,高吞吐规则运算优先映射到 FPGA/硬核加速器,CPU 只负责参数配置和结果校验。
映射时还要决定“硬核加速器 vs FPGA 逻辑”的取舍:硬核加速器(如专用 FFT、矩阵乘)能效高、开发快,但灵活性低,只适合固定尺寸和固定精度的运算;FPGA 逻辑可定制数据位宽和流水线深度,适合算法变体多、精度可调的场合。例如 SAR 成像中若需要支持多种分辨率模式,FFT 点数会变化,此时用 FPGA 逻辑实现可重构 FFT 比硬核更合适。
三、流水线与并行度优化
映射完成后,性能瓶颈往往不在单个任务,而在任务间的数据搬运和同步。优化手段主要有三类:
- 空间并行:把同一级内可独立处理的数据块分到多个并行通道。例如距离向脉冲压缩中,将 4096 点分成 4 个 1024 点块,用 4 个 FFT 核并行处理,吞吐率提升 4 倍,但需注意块间重叠与边界处理。
- 流水线并行:把不同处理级串成流水线,级间用 FIFO 或双端口 BRAM 缓冲。例如“格式化→距离压缩→徙动校正→方位压缩”四级流水,每级处理不同帧的数据,整体吞吐率由最慢一级决定。
- 数据流优化:减少 CPU 与 FPGA 之间的数据往返。把预处理和后处理尽量放在 FPGA 侧完成,CPU 只读取最终结果或中间统计量,可显著降低总线带宽压力。
并行度不是越高越好。增加并行通道会消耗更多 DSP、BRAM 和布线资源,也可能导致时序收敛困难。实际工程中常以“资源占用率不超过 70%、时序余量不低于 0.5 ns”作为约束,反推可用的并行度。例如某星载 FPGA 有 3600 个 DSP48,距离压缩每通道需 12 个 DSP,则最多可开 200 个通道,但考虑布线拥塞,实际取 64 通道更稳妥。
四、映射结果验证与调优
完成划分与映射后,需要用可观测指标验证是否达到设计目标。常用指标包括:单帧处理延迟、吞吐率(帧/秒)、FPGA 资源占用率(LUT/FF/DSP/BRAM)、CPU 负载率、以及总线带宽占用。例如某 SAR 成像任务映射后,距离压缩在 FPGA 上耗时 41 μs,徙动校正在 CPU 上耗时 60 μs,方位压缩在 FPGA 上耗时 38 μs,流水线周期由最慢的 CPU 级决定,约 60 μs,对应吞吐率约 16.7 帧/秒。若目标为 25 帧/秒,则需把徙动校正进一步拆分:将插值系数计算留在 CPU,逐点插值下放到 FPGA,可把该级压缩到 30 μs 以内。
调优时优先检查三类问题:一是级间缓冲是否溢出,可通过 FIFO 水位计数判断;二是 CPU 与 FPGA 的共享内存访问是否成为瓶颈,可观察 AXI 总线占用率;三是并行通道增加后时序是否仍能收敛,若建立时间余量为负,需降低并行度或插入流水寄存器。每次调整后重新测量上述指标,形成“划分—映射—测量—再划分”的迭代闭环,直到延迟、吞吐率和资源占用同时满足约束。