2. 星载FPGA硬件架构与资源模型
星载FPGA的实时任务调度,本质上是在一块资源受限、且部分资源可被动态改写的芯片上,为多个具有时间约束的任务分配执行位置与执行时刻。要理解调度器为什么这样决策,必须先看清它面对的“棋盘”:可编程逻辑资源、DSP切片、BRAM、时钟资源、IO资源,以及动态部分重构(DPR)能力。这些资源不是同质的,它们各自约束着不同类型的任务,也共同决定了调度的可行边界。
一、可编程逻辑资源:调度的面积基底
可编程逻辑资源由可配置逻辑块(CLB)、查找表(LUT)、触发器(FF)和进位链构成,是FPGA上最通用的计算载体。在Xilinx 7系列或UltraScale器件中,一个CLB通常包含两个Slice,每个Slice含4个6输入LUT和8个FF。调度视角下,逻辑资源的关键属性是“面积可分割、位置有邻域约束”。
例如,一个星上图像预处理任务需要约1200个LUT和900个FF,若目标器件单个时钟区域(Clock Region)提供约8000个LUT,则该任务理论上可放入一个区域,但若它同时需要与相邻任务共享BRAM接口,就必须考虑布局邻域。调度器在分配时,往往以“区域”而非“单个LUT”为粒度,因为跨区域布线会引入额外延迟和拥塞风险。
二、DSP切片与BRAM:专用硬核的稀缺性
DSP切片用于乘加、滤波、FFT蝶形等算术密集运算,BRAM用于数据缓存、行缓冲、系数表和跨时钟域缓冲。二者都是硬核资源,数量固定、不可由逻辑资源替代(或替代代价极高)。
以Xilinx XC7K325T为例,其DSP48E1约840个,36Kb BRAM约445个。若一个合成孔径雷达(SAR)成像任务需要64个DSP完成脉冲压缩、需要12个BRAM缓存距离向数据,那么调度器必须同时检查这两类资源的剩余量。更关键的是,DSP和BRAM在物理上按列分布,任务若被拆分到多个区域,可能因DSP列不连续而无法布线。因此,调度决策中常把“DSP+BRAM+逻辑”作为一个三元组约束,而不是分别独立判断。
三、时钟资源与IO资源:时间基准与外部接口
时钟资源包括全局时钟缓冲(BUFG)、区域时钟缓冲(BUFH/BUFR)和MMCM/PLL。星载FPGA通常有多个异步时钟域:星务管理时钟(如20MHz)、载荷采样时钟(如100MHz)、高速接口时钟(如200MHz以上)。每个时钟域对应一个时钟缓冲资源,BUFG数量有限(7系列约32个),调度器不能为每个任务随意分配独立全局时钟。
IO资源则决定了任务与外部器件的连接能力。星上常见的LVDS、SpaceWire、CAN、RS-422接口,各自占用特定IO Bank和差分对。若一个任务需要向数传分系统输出数据,它必须被调度到靠近对应IO Bank的区域,否则长线延迟会破坏时序收敛。因此,IO资源在调度中表现为“位置绑定约束”,而非单纯的数量约束。
四、动态部分重构能力:时间维度的资源复用
动态部分重构允许在FPGA运行过程中,将部分区域重新配置为不同功能,而其余区域继续工作。这为调度打开了“时间复用”维度:同一块物理区域,在t1时刻承载任务A,在t2时刻承载任务B。但DPR有明确代价——重构区域必须预先划分(PR Region),重构时该区域输出冻结,重构比特流加载时间与区域面积成正比。
假设一个PR区域面积为2000个LUT,配置时钟50MHz,比特流约1.2Mb,则重构时间约为1.2Mb / (50MHz × 1bit) ≈ 24ms。若任务B的截止期为30ms,则重构后仅剩6ms执行,调度器必须判断是否值得。这解释了为什么DPR调度通常只用于执行时间远大于重构时间的任务,或用于低频次的功能切换。
五、资源约束如何影响调度决策
把上述资源放在一起,调度问题就变成一个多维约束满足问题。下面用一个简化的星上任务集说明。
| 任务 | LUT | DSP | BRAM | 时钟域 | IO需求 | 截止期 |
|---|---|---|---|---|---|---|
| 图像去噪 | 1200 | 8 | 4 | 100MHz | 无 | 10ms |
| SAR脉冲压缩 | 3500 | 64 | 12 | 200MHz | 无 | 25ms |
| 数传组帧 | 800 | 0 | 6 | 50MHz | LVDS×4 | 5ms |
| 星务遥测采集 | 400 | 0 | 2 | 20MHz | CAN×1 | 20ms |
假设器件有4个时钟区域,每个区域约8000 LUT、210 DSP、111 BRAM。SAR脉冲压缩单独占用一个区域后,剩余DSP为146,BRAM为99,逻辑充足。但数传组帧需要LVDS×4,只能放在靠近IO Bank的区域,而该区域可能已被图像去噪占用。此时调度器面临选择:将图像去噪迁移到其他区域,或让数传组帧等待。若数传组帧截止期5ms更紧迫,迁移图像去噪是合理决策,但迁移本身需要重新布局布线,在动态重构场景下可能触发一次PR重构,引入约24ms的额外延迟——这反而使数传组帧超期。
关键矛盾:DPR提供了资源时间复用,但重构时间本身消耗截止期预算。调度器必须在“等待资源释放”和“触发重构”之间做代价比较。一个实用的判据是:若任务执行时间 > 3×重构时间,则DPR通常划算;否则优先等待或迁移。
六、面向调度的资源建模建议
在实际工程中,不建议调度器直接读取综合后的LUT/FF精确值,因为布局布线会改变实际占用。更可行的做法是:在任务入库时,为每个任务标注“资源向量”和“位置偏好”,资源向量取综合报告的向上取整值并留10%~15%余量。例如图像去噪标注为(LUT:1400, DSP:8, BRAM:4, CLK:100M, IO:none, Region:any)。调度器以区域为分配单元,先满足硬核和IO的位置约束,再在候选区域内检查逻辑余量。
对于DPR任务,还需额外记录PR区域的编号、比特流大小和重构时间。调度器在时间轴上维护每个PR区域的占用区间,把重构操作视为一个不可抢占的“伪任务”,其执行时间为重构时间,资源占用为该PR区域。这样,DPR调度就退化为带设置时间的单机调度问题,可以用EDF或LLF等经典实时调度算法求解。
实践提示:星载FPGA的资源余量通常要求不低于20%,以应对单粒子翻转后的冗余布线和温度漂移带来的时序退化。调度器在计算可调度性时,应使用“有效资源 = 标称资源 × 0.8”作为判据,而不是标称值。
总结来看,星载FPGA的硬件架构决定了调度不是简单的“谁先来谁先跑”,而是在逻辑面积、DSP/BRAM数量、时钟域、IO位置和DPR时间窗口五个维度上同时寻找可行解。理解每一类资源的物理属性和约束形式,是设计或评估调度算法的前提。