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

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

3.3.1.2. 映射数组及其对硬件的访问

与将语句映射到专用硬件操作类似,编译器可以根据存储器访问模式和变量大小将数组(和结构)映射到硬件存储器。

数据通路通过加载/存储单元 (LSU) 与此存储器交互,这些单元是从源代码中的数组访问推断而来。

下图说明了映射数组及其对硬件访问的简单示例:



RAM的读端口和写端口数量可以是有限的,但数据通道可以有许多 LSU。当LSU的数量与可用的读写端口数量不匹配时,编译器会使用复制、双泵(double pumping)、共享和仲裁等技术。关于这些技术的描述,请参阅组件存储器

关于配置存储器的更多详细信息,请参阅以下主题:

FPGA提供专门的硬件块RAM,您可以对其进行配置和组合以匹配数组的大小。为您的设计定制存储器配置可以提供每秒TB级(terabytes-per-second)的片上存储器带宽,因为每个存储器都可以同时与数据通路交互。

也可以在您的组件数据通路中实现数组。该情况下,您的算法被流水线化,数组内容作为寄存器存储在数据通路中(如,流水线中的讨论)。在某些情况下,将数组内容存储为数据通路中的寄存器以提高性能,但将数组实现为寄存器还是存储器是一个设计决策。

当您访问作为寄存器实现的数组时,不会使用LSU。编译器可能会选择使用选择器或循环移数网络(barrel shifter,桶型移位器)。