仅对英特尔可见 — GUID: emf1552585077818
Ixiasoft
仅对英特尔可见 — GUID: emf1552585077818
Ixiasoft
2.4.2. Kernel Memory Viewer的功能
数据移动是许多算法中的瓶颈。High Level Design Report (report.html)中的Kernel Memory Viewer向您展示了 Intel® FPGA SDK for OpenCL™ Offline Compiler如何解释数据连接并综合您内核的存储器。使用Kernel Memory Viewer有助于识别您内核设计中的数据移动瓶颈。
存储器接入中的某些模式可能会导致load-store units (LSUs)中出现不希望出现的仲裁,这就可能会影响您内核的吞吐量性能。使用Kernel Memory Viewer来识别LSU中不需要的仲裁。
点击System Viewers > Kernel Memory Viewer,访问Kernel Memory Viewer。
下图说明Kernel Memory Viewer的布局:
Kernel Memory Viewer有如下窗格:
- Kernel Memory List(内核存储器清单)
- 罗列出您设计中的所有存储器。选择存储器名称后,您可以在Kernel Memory Viewer窗格中查看其图形表示。
- Kernel Memory Viewer(内核存储器查看器)
- 显示在Kernel Memory List窗格中选择的存储器系统或者存储器bank的图形表示。
- Code View(代码视图)
- 显示所生成报告的源代码文件。
- Details(详细信息)
- 显示在Kernel Memory List窗格中选择的存储器系统或存储器bank的详细信息。
Kernel Memory List(内核存储器清单)
Kernel Memory List窗格显示内核的层次结构,以及包含在该内核中已综合和优化的存储器(RAM,ROM和寄存器)。
下表描述上图中以编号突出显示的每个功能:
图标或标签 | 名称 | 说明 | |
---|---|---|---|
1 | ![]() |
Kernel name | 您内核中存储器的列表可以展开或收起。不属于任何内核的存储器显示在(Other)下。 |
2 | ![]() |
RAM | RAM是至少有一次写入的存储器。RAM存储器的名称与您设计中的名称相同。 当您选择存储器名称时,可以在Kernel Memory Viewer窗格中查看RAM的逻辑表示。默认情况下,仅显示存储器系统中的第一个bank。 要选择您希望在Kernel Memory Viewer窗格中显示的bank:
|
3 | ![]() |
ROM | ROM是一个只读存储器。The name of the ROM存储器名称与其在您设计中的名称相同。 当您选择存储器名称时,可以在Kernel Memory Viewer窗格中查看ROM的逻辑表示。默认情况下,仅显示存储器系统中的第一个bank。 要选择您希望在Kernel Memory Viewer窗格中显示的bank:
|
4 | Bank #num | Bank | 始终与RAM或者ROM相关联的存储器bank。每个bank被命名为Bank #num,其中#num是存储器bank的ID,并从0开始。
|
5 | ![]() |
Register | 寄存器是内核变量,该内核变量通过寄存器中的流水线携带(而非存储在RAM或ROM中)。该寄存器的名称与其在您设计中的名称相同。 您可以专门在FF或者FF组合,以及基于RAM的FIFO中实现寄存器变量。 |
6 | text label | Optimized Away | 内核变量可以被优化掉(optimized away),因为您的设计中并未使用该变量,或者编译器优化已经改变了变量的所有用途,因而就不必要了。被优化掉的变量的名称与其在您的设计中的名称相同。 |
7 | ![]() |
Filter | 使用Kernel Memory List过滤器选择性查看设计中RAM,ROM,寄存器和被优化掉的变量的列表。 当您取消选择过滤器中某个项相关的复选框时,会将该项从整个Kernel Memory List中隐藏。过滤您的Kernel Memory List有助于您关注于设计中特定类型的存储器。 |
Kernel Memory Viewer(内核存储器查看器)
在Kernel Memory Viewer窗格中,您可以查看加载与储存到存储器系统中Bank上特定逻辑端口的连接。您还可以查看针对您的存储器系统中每个bank创建的复制(replicates)和专用副本(private copies)的数量。您可在Kernel Memory Viewer窗格中查看的节点类型如下,(取决于内核存储器系统和您在Kernel Memory List窗格中的选择):
节点类型 | 说明 |
---|---|
Memory node(存储器节点) | 您的设计中给定变量的存储器系统。 |
Bank node(Bank节点) | 存储器系统中的bank。存储器系统至少包含一个bank。存储器bank能够连接到一个或者多个端口节点。仅显示在Kernel Memory List窗格中选择的bank。 |
Replication node(复制节点) | 复制节点显示的存储器bank复制是为了有效支持多次访问局部存储器而创建的。该bank包含至少一个复制。您只有在Kernel Memory List窗格中单击该存储器bank名称进行查看时才能看到其复制节点。 |
Private-copy node(专用副本节点) | 专用副本节点显示的是复制内的专用副本,而该复制是为了允许同时执行多次循环迭代而创建的。一个复制至少包含一个专用副本。您只有在Kernel Memory List窗格中单击该存储器bank名称进行查看时才能看到其专用副本节点 |
Port node(端口节点) | 对局部存储器的每次读取或者写入都被映射到一个端口。bank的逻辑端口。有三种类型的端口:
|
LSU node | 通过端口节点连接到存储器的存储(ST)或者加载(LD)节点。 |
Arbitration node(仲裁节点) | 仲裁(ARB)节点显示LSU竞争访问共享端口节点,从而可能导致停顿。 |
Port-sharing node(共享端口的节点) | 共享端口的节点(SHARE)表明LSU对共享节点的互斥访问权限,因此加载-储存单元就不会停顿。 |
您可以在Kernel Memory View窗格的存储器图形表示中执行如下操作:
- 将鼠标光标悬停在任意节点上就能查看该节点的属性。
- 将鼠标光标悬停在LSU节点上来突出显示从LSU节点到LSU连接的所有端口的路径。
- 鼠标光标悬停在端口节点上来突出显示从端口节点到读/写端口节点的所有LSU的路径。
- 单击选择一个节点,在Details窗格中显示节点属性。
下图以实例说明您将在Kernel Memory Viewer中看到的内容:
Code View(代码视图)
Code View窗格显示您的源代码。当您在Kernel Memory Viewer窗格中选择存储器或者bank时,Code View窗格突出显示您声明的存储器的代码行。
Details(详细信息)
- 存储器bank的宽度和深度
- 存储器布局
- 地址位映射
- 您的源代码中指定的存储器属性
您在Kernel Memory Viewer窗格中重新选择不同节点之前,Details窗格中一直保持内容不变。