arm Researchの資料。
この中(59頁から)の ACAI: Arm Coherent Accelerator Interface (Framework for Integrating Hardware Accelerators)
この中(59頁から)の ACAI: Arm Coherent Accelerator Interface (Framework for Integrating Hardware Accelerators)
DACにて発表があった内容です。
下図は、引用です。
Hardware Accelerator と CCI-400 の間に、ACAI IP (MMUとL1/L2)を入れて、
CPU 側には、ACAI SW API と ACAI Kernel Driver を。
CPU 側には、ACAI SW API と ACAI Kernel Driver を。
このシステムにより、CPU 側から Hardware Accelerator を起動します。
ソフトウエアは、下記のようになっているようです。
acpiを生成し、init にて Hardware Accelerator 側を初期化し、
ジョブ記述(job_chain)に各種パラメータを設定し、
start_jobにて、Hardware Accelerator を起動、wait_jobにて、ジョブ終了を待ちます。
最後に、release にて開放します。
(引用します) 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();
ジョブ記述(job_chain)に各種パラメータを設定し、
start_jobにて、Hardware Accelerator を起動、wait_jobにて、ジョブ終了を待ちます。
最後に、release にて開放します。
いやー、めっちゃ、面白そう。
このIPを検証するために、XilinxのZCU102開発ボードを使って、検証したようですね。
FFT acceleratorで 4~10倍、RGB->YUV accelerator で 2~6倍の性能向上ができたと。
いやー、本当に面白そうですよ。。。。