Intel® High Level Synthesis Compiler Pro Edition: 用户指南

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

A.2.2. Function Memory Viewer

在很多算法中,数据移动通常都是一个瓶颈。High Level Design Reports (report.html)中的Function Memory Viewer会显示 Intel® HLS Compiler Pro Edition为您的组件生成的存储器系统。使用Function Memory Viewer可以帮助您找出组件设计中的数据移动瓶颈。

存储器访问中的某些模式会导致加载存储单元(LSU)中出现不希望出现的仲裁,从而影响组件的吞吐性能。使用Function Memory Viewer可以找到LSU中可能存在不需要的仲裁的位置。

通过点击Views > Function Memory Viewer来访问Function Memory Viewer。

下图显示了Function Memory Viewer的布局:

  1. Function Memory List窗格

    Function Memory List窗格列出了设计中的所有存储器。在Function Memory Viewer窗格中点击一个存储器名称来查看此存储器的图形表示。

  2. Function Memory Viewer窗格

    Function Memory Viewer窗格显示了在Function Memory List窗格中选择的存储器系统或存储器组的图形表示。

  3. 代码视图窗格

    代码视图窗格显示源代码文件,报告是针对这些源代码文件生成的。

  4. Details窗格

    Details窗格显示了在Function Memory List窗格中选择的存储器系统或存储器组的详细信息。



Function Memory List

Memory List窗格显示了组件和任务函数的层次结构,包含综合的存储器(RAM、ROM和寄存器)和在该组件或任务中优化了的存储器。



  图标或标签 名称 说明
1 组件或任务名称 组件或任务中的存储器列表可以展开或收起。

不属于任何组件或任务的存储器显示在(Other)下。

2 RAM RAM是一种至少可写入一次的存储器。

RAM存储器的名称与您设计中的名称相同。

点击存储器名称会在Function Memory Viewer窗格中显示一个logical representation(逻辑表示)的RAM。默认情况下,仅显示存储器系统的第一个组。

若要选择显示哪些组,需展开存储器名称。

去除存储器名称复选框可收起视图中的所有存储器组。

选择存储器名称复选框可在视图中显示所有的存储器组。

3 ROM ROM是一种只能读取的存储器。

ROM存储器的名称与您设计中的名称相同。

点击存储器名称会在Function Memory Viewer窗格中显示一个logical representation(逻辑表示)的ROM。默认情况下,仅显示存储器系统的第一个组。

若要选择显示哪些组,需展开存储器名称。

清除存储器名称复选框可收起视图中的所有存储器组。

选择存储器名称复选框可在视图中显示所有的存储器组。

4 Bank #num Bank 一个存储器组总是与一个RAM或者ROM相关联。每个组均以Bank #num 命名,其中#num是存储器组的ID,从0开始。

点击组名称会在Function Memory Viewer窗格中显示bank view:组的图形表示,包含该组的所有副本。此视图可帮助您在查看复杂的存储器设计时专注于特定的存储器组。

清除存储器组名称复选框可在存储器逻辑表示中收起组。

选择存储器组名称复选框可在存储器的逻辑表示中显示组。

5 Register 寄存器是通过寄存器流水线传输的组件变量,而不是存储在RAM或ROM中。寄存器的名称与设计中的名称相同。

寄存器变量可以完全通过触发器(FF)进行实现,也可以通过FF和基于RAM的FIFO的混合进行实现。

6 text label Optimized Away 一个组件变量被优化掉,可能是因为它在设计中未被使用,也可能是因为编译器优化改变了该变量的所有用途,使其变得没有必要。

被优化掉的变量名称与设计中的名称相同。

7 Filter 使用Function Memory List过滤器可有选择性地查看设计中的RAM、ROM、寄存器和优化变量列表。

清除与过滤器中某一项目相关的复选框,将隐藏Function Memory List中出现的所有此类项目。对Function Memory List进行筛选,可帮助您关注设计中的特定存储器类型。

Function Memory Viewer

Function Memory Viewer窗格显示存储器系统中组的特定逻辑端口与加载和存储之间的连接。它还会显示存储器系统中每个组创建的副本和私有副本的数量。Function Memory Viewer窗格中可能会显示以下类型的节点,具体取决于组件存储器系统和您在Function Memory List窗格中选择的内容:

  • Memory node: 在您的设计中,一个给定变量的存储器系统。
  • Bank node: 存储器系统中的一个组。一个存储器系统至少包含一个 个存储器组。一个存储器组可以有一个或多个端口节点。仅显示在Function Memory List窗格中选择的组。
  • Replication node: 一个复制节点显示为有效支持本地存储器的多次访问而创建的存储器组复制。一个组包含至少一个副本。只有在Function Memory List中单击存储器组名称来查看该存储器组时,才能查看复制节点。
  • Private-copy node: 一个私有副本节点显示复制中的私有副本,创建私有副本是为了同时执行多个循环迭代。一个复制至少包含一个私有副本。只有在Function Memory List窗格中单击存储器组名称查看该存储器组时,才能查看私有副本节点。
  • Port node: 对本地存储器的每次读或写访问都映射到一个端口。有三组类型的端口:
    • R: 只读端口
    • W: 只写端口
    • RW: 读和写端口
  • LSU node: 通过端口节点连接到存储器的存储(ST)或加载(LD)节点。
  • Arbitration node: 仲裁(ARB)节点显示LSU竞争对共享端口节点的访问,这可能会导致停顿。
  • Port-sharing node: 端口共享节点(SHARE)显示LSU可以相互独占地访问共享端口节点,因此load-store单元不会出现停顿。

将鼠标悬停在节点上可查看该节点的属性。

将鼠标悬停在LSU 节点上可高亮显示从LSU节点到LSU连接到的所有端口的路径。

将鼠标悬停在端口节点上可高亮显示从端口节点到读取或写入端口节点的所有LSU的路径。

单击一个节点将其选中,该节点属性将显示在Details窗格中。

下图显示了Function Memory Viewer中所显示的内容示例:
Function Memory Viewer窗格中存储器的逻辑表示


代码视图

代码视图窗格显示了源代码。

在Function Memory Viewer窗格中点击一个存储器或者组会高亮显示声明该存储器的代码行(在代码视图窗格中)。

在Function Memory Viewer窗格中点击一个加载节点或者存储节点会高亮显示对该存储器读取的代码行(在代码视图窗格中)。

Details

Details窗格显示在Function Memory Viewer窗格中选择的节点的属性。例如,当您在组件中选择存储器时,Details窗格显示诸如存储器组的宽度和深度的信息,存储器布局信息,地址比特映射和您在源代码中指定的用户定义的HSL属性的信息。

重要: Details窗格的 Address bit information 部分中的比特信息是基于字节地址的,而不是单元地址。此差异意味着您在存储器属性中指定的比特可能在 Address bit information 部分中显示为不同的比特。

关于此差异的示例,请参考 Intel® HLS Compiler Pro Edition Best Practices Guide 中的 Example: Specifying Bank-Selection Bits for Local Memory Addresses

在Component/Function Memory Viewer窗格中选择一个不同的节点之前,Details窗格的内容保持不变。