Intel® FPGA SDK for OpenCL™ Pro Edition: 最佳实践实践指南

ID 683521
日期 9/26/2022
Public
文档目录

10.3. 简化对局部存储器的存储访问

英特尔 Stratix 10 FPGA硬件的每个M20K存储器有两个端口。对于其它 Intel® FPGA器件系列, Intel® FPGA SDK for OpenCL™ Offline Compiler允许Memory System Clock以主时钟频率的2倍运行,有效地为每个M20K存储器提供四个端口。请参阅Double Pumping(双泵)了解更多信息。但是对于英特尔 Stratix 10 FPGA,目前不鼓励离线编译器推断2倍速的Memory System Clock(存储器系统时钟),因为在2倍速时钟域和主时钟之间以高速传输数据,通常都会导致fMAX显著下降。您仍然可以通过应用存储器属性__attribute__((doublepump))对给定Memory System实施强制双泵(double pumping)。

由于英特尔 Stratix 10上双泵对fMAX的潜在影响, Intel® 建议限制并发存储的数量。

多个并发存储通常需要两个以上的端口来实现。多个并发存储还会导致编译器创建可停顿的存储器,其中必须在每个时钟周期仲裁存储器访问。要确定存储器是否被仲裁,请检查系统中的加载和存储单元,或者High Level Design Report中的存储器查看器(memory viewer)。在查看器中,以红色突出显示的加载和存储单元为可停顿存储器。将您的鼠标悬停在每个突出显示的单元上时,报告会显示该信息。