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

ID 683152
日期 6/22/2020
Public

本文档可提供新的版本。客户应 单击此处 前往查看最新版本。

文档目录

3.1.4. Avalon® 流接口

Avalon® Streaming ( Avalon® ST) 接口支持数据单向流动,且一般用于驱动高带宽和低延迟的组件。

可使用 Avalon® ST接口写码向量加法实例,如下:
struct int_v8 {
  int data[8];
};
component void vector_add(
    ihc::stream_in<int_v8>&  a,
    ihc::stream_in<int_v8>&  b,
    ihc::stream_out<int_v8>& c,
    int N) {
  for (int j = 0; j < (N/8); ++j) {
    int_v8 av = a.read(); 
    int_v8 bv = b.read(); 
    int_v8 cv; 
    #pragma unroll 8
    for (int i = 0; i < 8; ++i) {
      cv.data[i] = av.data[i] + bv.data[i];
    }
    c.write(cv);
  }
}

Avalon® STST接口有一个数据总线,以及用于握手的就绪和忙碌信号。struct旨在打包8个整数,以便每次8个操作符并行出现,从而与其他接口的实例进行比较。同样,循环计数是8的倍数。

以下图示显示编译该实例时Graph Viewer中生成的Function View。
图 4. 使用 Avalon® ST接口的vector_add组件的Graph Viewer Function View


与其他版本组件实例的主要不同在于其没有存储器。

可从上有源和下游输出关停流接口。由于该接口可关停,则循环启动间隔(II)大约为1(并非精确的1)。如果组件未接收到任何来自上游的气泡(数据流中的间隙)或来自下游的关停信号,则组件达到所需II的值1。

如果您知道流接口永不关停,则可利用usesReadyusesValid流参数进一步优化该组件。

通过 Intel® Quartus® Prime编译流程编译 Intel® Arria® 10器件组件得到如下QoR指标:
表 5.   Avalon® ST接口的QoR指标比较1
QoR指标 指针 Avalon® MM主接口 Avalon® MM从接口 Avalon® ST
ALMs 15593.5 643 490.5 314.5
DSPs 0 0 0 0
RAMs 30 0 48 0
fMAX (MHz)2 298.6 472.37 498.26 389.71
Latency (周期) 24071 142 139 134
Initiation Interval (II) (周期) ~508 1 1 1
1用于计算QoR指标的编译流程采用 Intel® Quartus® Prime Pro Edition 17.1。
2 fMAX的大小由计算单个seed得出。
vector_add组件移动到 Avalon® ST接口,进一步提高ALM使用率,RAM使用率和组件延迟。如果接口中无关停,则为最佳组件II。