Intel®高层次综合编译器专业版: 最佳实践指南

ID 683152
日期 12/04/2023
Public
文档目录

3.3.2.2. 数据通路集群

动态调度所有操作会增加开销,即,实现要求的握手控制逻辑需要额外的FPGA面积。

为了减少这种开销,编译器将固定延时操作分组为集群(clusters)。固定延时操作(例如算术运算)的集群需要更少的握手接口,从而减少面积开销。

图 5. 集群逻辑


如果来自动态调度(Dynamic Scheduling)的A、B和C不包含可变的延时操作,编译器可以将它们集群到一起,如下图集群逻辑所示。

除了集群内的其他握手逻辑之外,将逻辑集群化还可消除对停顿的数据流发送信号的必要,从而减少面积。

集群类型

Intel® HLS Compiler可以创建以下类型的集群:

  • Stall-Enable Cluster (SEC):此集群类型将握手逻辑并行传递到集群中的每个流水线阶段。如果集群被数据通路中的逻辑进一步停顿,则SEC中的所有逻辑都会同时停止。
    图 6. Stall-Enable Cluster(可停顿集群)


  • Stall-Free Cluster (SFC):此集群类型的集群末尾添加了一个先进先出(FIFO)缓冲区,该缓冲区至少可以容纳该集群中流水线的整个延时。该FIFO通常称为exit FIFO,因为它连接集群数据通路的exit(出口)。

    由于这种FIFO,该集群中的流水线阶段不需要任何握手逻辑。即使该集群被数据通路中的逻辑更进一步停顿,这些阶段也可以自由运行并缓冲到FIFO容量中。

图 7. Stall-Free Cluster(无停顿集群)


集群特征

无停顿集群的exit FIFO会造成一些权衡:
  • 面积:由于 SEC不使用exit FIFO,因此与SFC相比,它可以节省FPGA面积。

    如果您的设计包含许多小型低延时集群,则可以通过要求编译器使用 SEC取代具有hls_use_stall_enable_clusters组件属性的SFC从而节省大量面积。详情请参阅 Intel® HLS Compiler参考手册 中的 hls_use_stall_enable_clusters组件属性

  • 延迟:由于exit FIFO的写入-读取延时,使用SFC的逻辑可能比使用SEC的逻辑具有更大的延时。
  • fMAX :SFC中,oStall信号的扇出比SEC中的少。

    对于具有许多流水线阶段的集群,您可以通过使用SFC改善设计的fMAX

  • 握手:SFC中的exit FIFO允许它们利用集群之间的高度优化握手。欲了解更多信息,请参阅噶都优化握手

    SEC不支持此功能。

  • 冒泡处理:SEC仅去除领先冒泡。领先冒泡是在第一个有效数据到达集群之前就到达的冒泡。SEC不会删除任何在有效数据到达之后到达的冒泡。

    如果SFC获得下游stall(停顿)信号,则SFC可以使用exit FIFO消除从流水线来的所有冒泡。

  • 停顿行为:当SEC收到下游停顿时,它会将一个时钟周期内的其任何逻辑上游停顿。

    当SFC接收到下游停顿时,exit FIFO允许其消耗其它有效数据,具体取决于exit FIFO的深度以及集群数据通路中的冒泡数量。