跳至內容

應用手冊:Shared Memory#

在 imaFlex 和 marathon Frame Grabber 上使用 Shared Memory#

imaFlex 和 microEnable 5 marathon 擷取卡共用 DRAM Memory。

每個使用 Memory 的運算子在擷取卡上僅分配給一個實體 Memory。在 imaFlex 和 microEnable 5 marathon 擷取卡上,概念有所不同。在這些擷取卡上,您可以使用速度快得多的 DDR4(在 imaFlex 上)或 DDR3(在 marathon 上)Memory。但是,這只是一個單一的實體 Memory,因此所有使用該 Memory 的 VisualApplets 運算子共用頻寬。

Frame Grabber 的 memory 組態最好透過 VisualApplets Device Resources Documentation 來確定。在此說明文件中,您可以找到與在 VisualApplets 設計中使用 DRAM 元素相關的資訊:RAM 大小、RAM 資料寬度以及每個 RAM 的頻寬(適用於除 marathon 系列之外的所有平台),以及 marathon 系列的總記憶體頻寬(shared)。

資訊

VisualApplets Device Resources Documentation 中給出的頻寬值是理論上的最大值。在實際使用中,效率可能會降低。

本文件指導您透過使用 RAM 大小和 RAM 數據寬度的資訊,為特定平台有效利用 Memory。它還幫助您計算 marathon 系列的每個 RAM 的相應頻寬。

有效使用 DRAM#

在 VisualApplets Device Resources Documentation 中,您可以找到有關特定平台 RAM 大小的資訊:

  • 對於 imaFlex CXP-12 Quad:3 x 512 MiB DDR4
  • 對於 imaFlex CXP-12 Penta:5 x 512 MiB DDR4
  • 對於 marathon 系列和 LightBridge:4 x 512 MiB DDR3

這些值提供有關總 RAM 大小的資訊(例如,對於 marathon 系列:4 x 512 MiB = 2 GiB (2^31 Byte))以及一個 VisualApplets 運算子最多可以使用的磁碟分割區(對於 marathon 系列:512 MiB)。

只有在使用完整的 RAM 資料寬度相關資訊時,您才能為每個 operator 有效利用此最大 RAM 大小(另請參閱 Efficient Usage of the DRAM):

  • 對於 imaFlex CXP-12 Quad,RAM 資料寬度為 384 bit
  • 對於 imaFlex CXP-12 Penta,RAM 資料寬度為 640 bit
  • 對於 marathon VCX-QP 與 VF2,RAM 資料寬度為 512 bit
  • 對於 marathon VCL、VCLx 與 LightBridge,RAM 資料寬度為 256 bit

RAM 資料寬度是指 Bit Width 乘以 Parallelism,再加上 VisualApplets 設計中連接至 DRAM 運算子的連結核心元素。

DRAM 使用範例#

此範例針對 marathon VCL 平臺使用了簡單的 VisualApplets 設計,如下圖所示。

圖 1:Parallelism 4 RAM 使用量

此範例使用了 4 的 Parallelism 以及 8 bit 的 Bit Width。因此,該範例僅使用了 4 x 8 = 32 bit 的 RAM 資料寬度。不過,為了達到完整效率,頻寬需要達到 256 bit。因此,您必須將 Parallelism 增加至 32,如下圖所示。

圖 2:Parallelism 32 RAM 使用量

現在,此設計可確保您能有效率地使用 DRAM。一般而言,充分利用可用的 RAM 資料寬度總是最好的。不過,有時這並不可行,因為您需要更多資源、您的資料格式無法被 256 整除,或是運算子的參數不再允許完整的範圍。因此,您需要知道是否也能使用較低的 Parallelism。為此,您需要了解記憶體頻寬,這將在下一節中說明。

Memory Bandwidth#

您可以在 VisualApplets Device Resources Documentation 中找到有關單個 DRAM 元素最大 Memory Bandwidth 的平台特定資訊。由於您需要考慮從 RAM 進行讀取和寫入,因此在計算最終頻寬時,最大頻寬除以 2:

公式:最大最終頻寬

只有在使用完整的 RAM 資料寬度時,您才能達到此最終頻寬值(請參閱Efficient Usage of the DRAM 一節)。因此,您需要在計算最終頻寬時計入 RAM data width used / full RAM data width 的比例:

公式:最大最終頻寬

根據此公式,您可以計算所需的 RAM 資料寬度:

bit width * parallelism * kernel elements of a link connected to a RAM element 用於設計中以達到特定的產生頻寬。這表示如果您已定義 Bit Width 和核心元素,也可以計算連接至 RAM 元素的連結所需的最低 Parallelism。

Memory Bandwidth 計算範例#

您可以計算 Memory Bandwidth 一節中設計範例的最終頻寬。對於圖 1 中顯示的設計範例(RAM 資料寬度為 32 bit),最終頻寬為:

公式:最大最終頻寬

對於圖 2 中顯示的設計範例,其 RAM 資料寬度為 256 bit,產生的頻寬為:

公式:最大最終頻寬

Shared Memory#

當僅存在單個 DRAM operator 時,Memory Bandwidth 一節中的頻寬計算公式適用於所有 Frame Grabber 平台。它也適用於除 marathon 系列之外的所有平台上 applet 中每個 DRAM 元素的頻寬計算。如果使用多個 operator,則 marathon 系列的總 memory bandwidth 將會 shared。然後,單個 DRAM 元素的最終頻寬計算方式如下:

公式:最大最終頻寬

Shared Memory 範例#

以下針對 marathon VCL 平臺的範例顯示了兩個相機、兩個 DRAM 元素(RAM 資料寬度為 32 bit)以及兩個 DMA,如下圖所示:

圖 3:使用 Parallelism 4 RAM 的兩個相機

產生的頻寬為:

公式:最大最終頻寬

與 Memory Bandwidth 一節中針對 32 bit RAM 資料寬度但設計中只有一個 DRAM 元素所計算出的最終頻寬相比,具有兩個 DRAM 元素的最終頻寬是先前值的一半。為了使具有兩個 DRAM 元素的頻寬達到與具有一個 DRAM 元素相同的頻寬,您需要將 RAM 資料寬度加倍(= 64 bit)。

Operator 組態#

Operator 組態會自動調適為給定 Frame Grabber 硬體的可用 RAM 資料寬度。因此,大多數 operator 都允許使用 VisualApplets Device Resources Documentation 中給出的 RAM 資料寬度。某些 operator 僅允許 Parallelism 為 1。為了克服 64 bit 的 link bit width 限制,其中一些 operator 接受 kernel 以使用高效的 RAM 資料寬度,如 Efficient Usage of the DRAM 和 Memory Bandwidth 一節中所述。有一些 DRAM operator 例外,需要進行特殊組態才能有效使用。有關 operator 最佳組態的詳細資訊,請參閱 operator CoefficientBuffer documentation。