ホストメモリバッファを構成する
- 更新日2025-10-09
- 4分で読める
一部のFPGAターゲットには、FPGA VIから直接アクセスが可能なホストメモリバッファが含まれます。ブロックメモリやLUTと同じ方法でホストメモリバッファを使用するには、プロジェクトのメモリ項目インタフェースを使用します。プロジェクトエクスプローラウィンドウでFPGAターゲットの下にホストメモリバッファ項目が表示されます。
ホストメモリバッファを使用する大部分のFPGAアプリケーションで、FPGAメモリ項目インタフェースが提供する有用性とVHDLの最適化を活用できます。VI定義メモリ項目を使用してホストメモリバッファを構成することはできません。
ホストメモリバッファが使用可能かどうかを判断する
以下の手順に従って、ホストメモリバッファがターゲットで使用可能かどうかを判断します。
- プロジェクトエクスプローラウィンドウを表示します。
- FPGAターゲットを右クリックしてメモリプロパティを選択します。
- 実装ドロップダウンリストを開いてDRAMを選択します。
- DRAMバンクドロップダウンリストを開きます。ホストメモリバッファが使用可能な場合は、リストに含まれています。
物理ホストメモリバッファを複数のメモリ項目にパーティションする
FPGAメモリ項目インタフェースを使用すると、ターゲットで使用可能な物理ホストメモリバッファバンクを複数のメモリ項目にパーティションできます。ホストメモリバッファバンクでメモリのパーティションの作成と構成を実行するには、メモリプロパティダイアログボックスを使用します。たとえば、ターゲットに2つの物理ホストメモリバッファバンクがある場合、以下に示すように、1つのバンクを3つの異なるメモリに、もう1つのバンクを5つのメモリにパーティションすることが可能です。LabVIEWは、各メモリを相互に独立したメモリとして扱います。
レイテンシとホストメモリバッファを理解する
ホストメモリバッファにアクセスする際に、確定的でないレイテンシが発生します。このレイテンシを補正するには、データを要求およびデータを取得メソッドを使用してホストメモリバッファからデータを読み取ります。データを要求メソッドを使用してデータ用に複数の要求をキューに入れ、データを取得メソッドを使用して要求されたデータを取得することができます。ハンドシェイク信号を使用して要求されたデータの受信準備ができたことを示すと、ホストメモリバッファが要求されたデータを返します。
データに関する推奨事項
アクセスサイズよりも小さいデータタイプを使用した場合、残りのビットは不明で無効な値を受け取りますが、引き続き書き込みが続けられるため、領域と帯域幅の両方が使用されます。たとえば、アクセスサイズが64ビット幅のときにホストメモリバッファ構成で32ビットのデータタイプを選択すると、残りの32ビットは不明で無効なデータタイプになります。以下の図は、最適化されたメモリ要素およびデータタイプがアクセスサイズよりも小さい場合のメモリ要素を示しています。
NIでは、各アクセスの最適化を確保するため、ホストメモリバッファのアクセスサイズと同一幅のデータタイプを使用することを推奨しています。メモリ項目は使用するクラスタをデータタイプとして受け取るため、情報をクラスタにパッケージ化して、LabVIEWにネイティブなデータタイプよりも大きなデータタイプに対応することができます。
NIでは、40 MHzのオンボードクロック領域内でデータをメモリ項目インタフェースに出力することを推奨しています。LabVIEWプロジェクトでFPGAターゲットを右クリックし、新規→メモリを選択します。クロックレートでデータをメモリ項目インタフェースにプッシュすることによって、帯域幅を最適化することができます。
要求パイプライン
ホストメモリバッファアーキテクチャはパイプライン化が進んでいるため、データが要求されてから要求が実行されるまでの間に比較的長いレイテンシが生じます。NIでは、高いスループットを維持するために、サンプルを事前要求することを推奨しています。サンプルを事前要求する場合は、取得メソッドのデータ有効ストローブを待たずに、読み取るサンプルを要求します。