Vengineerの妄想

人生を妄想しています。

ACAI: Arm Coherent Accelerator Interface


arm Researchの資料。
この中(59頁から)の ACAI: Arm Coherent Accelerator Interface (Framework for Integrating Hardware Accelerators)

DACにて発表があった内容です。

下図は、引用です。
イメージ 1


Hardware Accelerator と CCI-400 の間に、ACAI IP (MMUとL1/L2)を入れて、
CPU 側には、ACAI SW API と ACAI Kernel Driver を。

このシステムにより、CPU 側から Hardware Accelerator を起動します。

ソフトウエアは、下記のようになっているようです。

(引用します)
void acai_hw_fft() {
    // initialize acai
    acai *p_acai = new acai();
    p_acai->init();

    // setup job chain with a single job
    vector<acaijd> job_chain;
    job_chain.reserve(1);

    // setup job descriptor to write 3 registers
    job_chain.push_back(acaijd(3, 0));
    job_chain[0][0] = (uint32_t)length;
    job_chain[0][1] = (uint32_t)src_data;
    job_chain[0][2] = (uint32_t)result_data;

    // start and wait on the job to complete
    p_acai->start_job(job_chain[0]);
    p_acai->wait_job(job_chain[0]);

    // cpu reads results
    p_acai->release();
};

    acai *p_acai = new acai();
    p_acai->init();
acpiを生成し、init にて Hardware Accelerator 側を初期化し、
ジョブ記述(job_chain)に各種パラメータを設定し、
start_jobにて、Hardware Accelerator を起動、wait_jobにて、ジョブ終了を待ちます。
最後に、release にて開放します。

これって、IBM CAPIIntel OPAEと同じですよ。

いやー、めっちゃ、面白そう。

このIPを検証するために、XilinxのZCU102開発ボードを使って、検証したようですね。

FFT acceleratorで 4~10倍、RGB->YUV accelerator で 2~6倍の性能向上ができたと。

ACIP IP開発で1.8人/年。既存アクセラレータとの統合に2週間、
HLSアクセラレータによる設計とシステムに組み込むのに2日。

いやー、本当に面白そうですよ。。。。