Mempercepat Co‑Desain CPU‑FPGA: Alur Praktis untuk Pengembang Perangkat Lunak
Baru-baru ini, Brian Bailey mengadakan diskusi bundar yang culminated in artikel dua bagian Supporting CPUs + FPGAs. Para ahli membahas realitas yang berkembang dari sistem yang menggabungkan FPGA dengan CPU, menyoroti bagaimana alur desain segar memberdayakan pengembang perangkat lunak untuk membawa platform CPU-plus-FPGA ke pasar lebih cepat.
Pendahuluan
Lonjakan kecerdasan buatan, ledakan perangkat terhubung, dan percepatan beban kerja data-center semuanya mengarah ke satu pengemudi umum: pengembang perangkat lunak yang mencari kecepatan. Hubungannya rendah latensi antara FPGA dan CPU, bersama dengan envelop daya yang modest dari FPGA modern, membuat sistem hibrid CPU-FPGA pilihan alami untuk kinerja yang menuntut. Namun, kompleksitas dasar teknologi FPGA sering kali menghambat pengembang.
Alat Sintesis Tingkat Tinggi (HLS) telah berkembang secara signifikan, memudahkan pemetaan C/C++ ke hardware. Masih, mereka terutama berpusat pada IP dan kurang pada keputusan tingkat sistem—menyeimbangkan tugas perangkat lunak versus hardware, memilih antara eksekusi terpipelining atau paralel, menyesuaikan granularitas data, atau memilih mekanisme komunikasi optimal.
Apa yang dibutuhkan insinyur perangkat lunak adalah alur desain terpadu yang terasa seperti IDE perangkat lunak standar tetapi memberikan feedback yang sadar hardware. Solusi komersial terbaru telah mulai menutup kesenjangan ini dengan mengabstraksi detail rendah sambil mempertahankan kontrol yang dibutuhkan pengembang. Alat-alat ini didasari oleh filosofi Desain Tingkat Sistem yang diuraikan dalam ESL Models and Their Application.
Memahami Alur Desain Tingkat Sistem
Desain Tingkat Sistem beroperasi pada abstrak yang lebih tinggi, memvalidasi, menyempurnakan, dan mengintegrasikan komponen sistem sebelum implementasi. Sebagian besar desainer memulai pada tingkat algoritmik, menulis model C/C++/SystemC, MATLAB, Simulink, atau LabVIEW yang menangkap perilaku sistem lengkap.
Kami fokus pada alur yang berpusat pada C/C++ (lihat Gambar 1). Tahap pertama—profiling aplikasi—mengidentifikasi fungsi atau loop yang dapat mendapat manfaat dari akselerasi hardware. Berikutnya, platform CPU/FPGA target ditentukan (misalnya, ARM-Cortex-A53 + FPGA) dan parameternya (clock, cache, interconnects) dikonfigurasi. Akhirnya, tugas yang di-profile dipetakan antara perangkat lunak dan hardware, culminating in arsitektur yang dapat dieksekusi.
Gambar 1. Alur desain tingkat sistem umum untuk CPU/FPGA (Sumber: Space Codesign Systems, Inc.)
Blok kedua dari Gambar 1 mencakup optimasi arsitektur—kadang disebut eksplorasi arsitektur atau verifikasi kinerja—ditampilkan secara lebih detail dalam Gambar 2.
Gambar 2. Proses optimasi arsitektur (Sumber: Space Codesign Systems, Inc.)
Tiga estimasi kunci menyumbang ke tahap ini:
- Estimasi hardware mengevaluasi dampak memindahkan kode C/C++ ke FPGA, uraikan penggunaan resource, latensi loop, dan daya. Ini bergantung pada output HLS.
- Estimasi perangkat lunak mengukur metrik sisi CPU—beban processor, switching tugas, cache misses—melengkapi pandangan hardware.
- Estimasi transfer data memodelkan antarmuka (memory-mapped atau streaming), menangkap latensi bus, throughput, queue depth, dan footprint memori.
Hasil yang diagregasi mempopulasi database, memungkinkan pengembang memverifikasi apakah tujuan tingkat sistem terpenuhi. Arsitektur yang memenuhi kriteria melanjutkan; jika tidak, iterasi optimasi lebih lanjut dipicu.
Blok akhir dari Gambar 1 berkaitan dengan implementasi arsitektur: desain tingkat tinggi diterjemahkan menjadi bitstream FPGA menggunakan alat vendor seperti Xilinx Vivado atau Intel Quartus Prime, menghasilkan sistem yang sepenuhnya tersintesis dan dapat diuji siap untuk diterapkan.
Optimasi Tingkat Sistem
Ketidaktersehatan alat optimasi end-to-end yang otomatis telah lama menjadi bottleneck dalam komputasi berbasis FPGA. Kompleksitas menyeimbangkan banyak dimensi desain menjelajahan manual menjadi membosankan, bahkan untuk desainer yang berpengalaman.
Gambar 3 menggambarkan alur optimasi umum untuk aplikasi pengolahan citra yang terdiri dari enam fungsi C/C++ yang diterapkan pada platform Zynq-7000. Delapan arsitektur kandidat dipertimbangkan, tetapi keterbatasan waktu ke pasar menuntut seleksi cepat dari kompromi terbaik antara kinerja, area, dan daya.
Gambar 3. Eksplorasi arsitektur dengan keputusan tingkat sistem yang disorot (Sumber: Space Codesign Systems, Inc.)
Solusi komersial seperti Xilinx SDSoC/SDAccel, Falcon Computing Merlin Compiler, dan Space Codesign SpaceStudio kini menyediakan dukungan end-to-end. Mereka mencerminkan alur dalam Gambar 1 dan 2 sambil menyuntikkan logika keputusan otomatis:
- SDSoC mengestimasi latensi untuk kernel hardware dan mengkarakterisasi transfer data pada platform target, kemudian membenchmark dengan jalankan perangkat lunak murni.
- Merlin Compiler menerapkan transformasi sumber-ke-sumber yang didorong oleh empat pragmas, dengan pass compiler implisit yang meningkatkan pipelining dan paralelisme.
- SpaceStudio membangun platform virtual (VP) yang mensimulasikan seluruh sistem, mengintegrasikan latensi yang dihasilkan hardware dan menawarkan profiling non-intrusif dari tugas perangkat lunak dan hardware.
Tampilan Ekosistem Komersial
Gambar 4 menyajikan pandangan berlapis dari ekosistem yang melingkupi desain platform CPU/FPGA. Lapisan teratas menunjukkan titik entri algoritmik; lapisan tengah menempatkan alat yang mendukung optimasi tingkat sistem dari C/C++; lapisan bawah berisi alat sintesis vendor yang menghasilkan bitstream. Platform CPU/FPGA representatif diilustrasikan di dasar.
Gambar 4. Ekosistem komersial untuk platform CPU/FPGA (Sumber: Space Codesign Systems, Inc.)
Tabel 1 mencantumkan alat otomatisasi komersial kunci yang digunakan dalam desain platform CPU/FPGA.
Tabel 1. Alat otomatisasi komersial (*Catatan: Daftar diusulkan dalam tinjauan ini)
Kesimpulan
Membuka akses pengembangan CPU-plus-FPGA adalah tujuan akhir, memungkinkan lebih banyak pengembang perangkat lunak untuk memanfaatkan akselerasi hardware. Sama seperti industri perangkat lunak berkembang dari assembly ke Python dan Swift selama lima dekade, pemrograman FPGA sedang mengalami maturasi yang sama. Munculnya alat tingkat sistem seperti SpaceStudio, SDSoC, dan Merlin Compiler menandai pergeseran penting—masih, otomatisasi penuh dan optimasi yang lancar di seluruh kompilator tetap tonggak masa depan.
Guy Bois, Ing., PhD adalah Pendiri Space Codesign Systems dan Profesor di Departemen Rekayasa Perangkat Lunak dan Komputer di Polytechnique Montréal. Dengan pengalaman R&D yang luas bersama pemimpin industri—STMicroelectronics, Grass Valley, PMC Sierra, Design Workshops Technologies, dan Cadabra Systems—keahlian Guy dalam co-desain hardware/perangkat lunak telah mengarah pada komersialisasi SpaceStudio dan pendirian Space Codesign Systems Inc.