GMIO - 2021.1 Japanese

Versal ACAP AI エンジン プログラム環境 ユーザー ガイド (UG1076)

Document ID
UG1076
Release Date
2021-07-19
Version
2021.1 Japanese

このクラスは、グローバル メモリ (DDR) 接続を表すグラフ カーネルから外部仮想プラットフォーム ポートへの接続に使用する I/O ポート属性仕様を表します。

コンストラクター

GMIO(const std::string& logical_name, int burst_length, int bandwidth);

この GMIO ポート属性仕様は、AI エンジン カーネルから DDR メモリ、または PL ブロックから DDR メモリへの接続に使用されます。logical_name は、インターフェイス データシートに示されるポートの名前です。burst_length は DDR メモリ バースト トランザクションの長さ (64、128、または 256 バイト)、bandwidth は予測される平均スループットを MB/s で指定します。

メンバー関数

static void* malloc(size_t size);

malloc メソッドは、連続する物理メモリ空間を割り当て、対応する仮想アドレスを返します。パラメーター size で、割り当てるバイト数を指定します。正しく実行されると、割り当てられたメモリへのポインターが返されます。エラーがあった場合は、nullptr が返されます。

static void free(void* address);

free メソッドは、GMIO::malloc で割り当てられたメモリ空間を解放します。

return_code gm2aie_nb(const void* address, size_t transaction_size); 

gm2aie_nb メソッドは、DDR から AI エンジンへの転送を開始します。トランザクションのメモリ空間は、address ポインターおよび transaction_size パラメーター (バイト数) で指定します。トランザクション メモリ空間は、GMIO::malloc メソッドで割り当てられた合計メモリ空間の範囲内である必要があります。このメソッドは、プラットフォーム ソース GMIO オブジェクトでのみ使用可能です。これはノンブロッキング関数であり、読み出しトランザクションが完了するのを待機しません。

return_code aie2gm_nb(void* address, size_t transaction_size);

aie2gm_nb メソッドは、AI エンジンから DDR への転送を開始します。トランザクションのメモリ空間は、address ポインターおよび transaction_size パラメーター (バイト数) で指定します。トランザクション メモリ空間は、GMIO::malloc メソッドで割り当てられた合計メモリ空間の範囲内である必要があります。このメソッドは、プラットフォーム シンク GMIO オブジェクトでのみ使用可能です。これはノンブロッキング関数であり、書き込みトランザクションが完了するのを待機しません。

return_code wait();

wait メソッドは、それまでに発行されたすべてのトランザクションが完了するまでブロックします。このメソッドは、AI エンジン に接続されている GMIO オブジェクトにのみ適用されます。

return_code gm2aie(const void* address, size_t transaction_size);

gm2aie メソッドは、gm2aie_nb のブロッキング バージョンです。AI エンジン-DDR 読み出しトランザクションが完了するまでブロックします。

return_code aie2gm(void* address, size_t transaction_size);

aie2gm メソッドは、aie2gm_nb のブロッキング バージョンです。AI エンジン-DDR 書き込みトランザクションが完了するまでブロックします。

Linux では、これらの GMIO メンバー関数は、PS プログラムの GMIO::malloc により返された void* ポインターを介して PS 仮想メモリ アドレスを使用する必要があります。

ベアメタルでは、仮想アドレスと物理アドレスは同じです。GMIO::malloc および GMIO::free を呼び出す必要はありません。ただし、一貫性のため呼び出すことはできます。