一、吞吐量设计1.最大数据吞吐量表示每秒处理样本的数量2.II1的目标3.吞吐量优化包括数据流优化流水线优化循环优化内存优化接口的选择数据包的处理批量数据处理任务级的并行。二、吞吐量优化的核心目标1.最大化每个时钟周期处理的有效数据量追求II1,任务级别的并行数据流。三、架构1.dataflow数据流优化2.函数之间并行3.pipeline流水线优化循环和函数4.假性依赖的去除5.循环的展开和部分展开四、内存和接口优化1.数组分割array_partition2.数组reshape3.hls::stream流接口和FIFO实现生产者-消费者模式4.double_buffer双缓冲设计5.ap_hs和ap_fifo和m_axi接口来匹配吞吐量五、数据类型优化1.定点代替浮点减少资源提高频率2.最小化位宽提高时钟频率从而增加吞吐量3.使用ap_fixed的量化模式优化资源六、循环优化1.循环的mrege合并共享资源以及增加数据的重用2.循环的flatten展平变成单一循环更好的实现流水线化3.循环流水线时候处理依赖添加依赖指令或者使用多周期操作容忍延迟七、案例1.dataflow流水函数void top(A, B, C) {#pragma HLS dataflowfunc1(A, buf); // 第一阶段func2(buf, B); // 第二阶段func3(buf, C); // 第三阶段}2.pipiline设计函数void top(A, B, C) {#pragma HLS pipelinefunc1(A, buf); // 第一阶段func2(buf, B); // 第二阶段func3(buf, C); // 第三阶段}3.循环pipeline4.循环unroll设计并行for (int i 0; i 16; i) {#pragma HLS unroll factor4 // 每次处理4个迭代C[i] A[i] B[i];}