HBM は、順次データ アクセスが必要なアプリケーションではうまく機能しますが、ランダム データ アクセスが必要なアプリケーションでは、アプリケーションの要件 (読み出しと書き込みの比、最小トランザクション サイズ、アドレス指定されるメモリ空間のサイズなど) によって大きく異なります。このような場合、ターゲット プラットフォームに Random Access Memory Attachment (RAMA) IP を追加することで、必要なメモリが 1 つの HBM PC の 256 MB の制限を超えた場合に、ランダム メモリ アクセスの効率を大幅に向上させることができます。詳細は、 『RAMA LogiCORE IP 製品ガイド』 (PG310) を参照してください。
ヒント: アプリケーションで RAMA IP を効果的に使用するには、カーネルは複数の HBM PC からメモリにアクセスし、AXI トランザクション ID ポート (AxID) でスタティックな単一の ID を使用するか、ゆっくりと変化する (擬似スタティック) AXI トランザクション ID を使用する必要があります。これらの条件が満たされない場合、RAMA IP により使用されるスレッド作成によるパフォーマンスの向上はそれほどなく、プログラマブル ロジック リソースが無駄に消費されることになります。
次の v++
コマンド オプションを使用して、システム リンク プロセス中にターゲット プラットフォームに RAMA IP を追加し、対象のポートを定義する Tcl スクリプトを指定します。
v++ -l --advanced.param compiler.userPreSysLinkOverlayTcl=<path_to>/user_tcl_file.tcl
このユーザー指定の Tcl スクリプト内には、HMSS リソースを設定する API があります。
hbm_memory_subsystem::ra_master_interface <Endpoint AXI master interface> [get_bd_cells hmss_0]
次の例では、ランダム アクセス用に 2 つの AXI マスター ポート (M00_AXI
および M01_AXI
) を使用しています。
hbm_memory_subsystem::ra_master_interface [get_bd_intf_pins dummy/M00_AXI] [get_bd_cells hmss_0]
hbm_memory_subsystem::ra_master_interface [get_bd_intf_pins dummy/M01_AXI] [get_bd_cells hmss_0]
validate_bd_design -force
HBM サブシステムによって情報が正しく収集され、ブロック デザインがアップデートされるようにするには、前述のように validate_bd_design
コマンドを使用して Tcl スクリプトを終了することが重要です。