Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Tertanam

CPU plus alur desain FPGA untuk pengembang perangkat lunak:Realitas nyata baru

Baru-baru ini, Brian Bailey mengorganisir meja bundar yang menghasilkan artikel dua bagian yang disebut Mendukung CPU Plus FPGA . Para ahli membahas realitas yang berkembang dari desain sistem berdasarkan FPGA dan CPU. Diskusi ini membahas perkembangan terkini dalam alur desain dan bagaimana penggunaan teknologi baru dapat membantu pengembang perangkat lunak dalam mencapai waktu-ke-pasar yang lebih cepat untuk platform CPU plus FPGA.

Pengantar
Melihat meningkatnya minat pada kecerdasan buatan (AI), munculnya objek yang terhubung (IoT), dan tren akselerasi pusat data, semua membuat kita bertanya:apa persamaan di antara ketiganya?

Pengembang perangkat lunak adalah pusat dari semua tren ini dan mereka ingin mempercepat pemrograman dan perhitungan mereka. Terobosan teknologi terbaru, termasuk latensi komunikasi yang rendah antara FPGA dan CPU, ditambah dengan konsumsi daya yang relatif rendah dari FPGA saat ini, menjadikan sistem berbasis FPGA dan CPU pilihan yang tepat untuk mencapai kinerja yang diinginkan. Namun, di pusat konvergensi ini, pengembang perangkat lunak terhambat oleh kompleksitas yang mendasari teknologi FPGA.

Selama beberapa tahun terakhir, alat Sintesis Tingkat Tinggi (HLS) telah sangat meningkat sehubungan dengan mengatasi kompleksitas sistem saat ini dan mempersingkat waktu-ke-pasar. Namun, alat HLS fokus terutama pada blok IP (yaitu, mereka adalah IP-sentris). Ada berbagai macam keputusan/pengoptimalan tingkat sistem yang tidak dapat didukung oleh alat HLS untuk memenuhi persyaratan. Beberapa persyaratan ini termasuk menemukan keseimbangan yang tepat antara tugas perangkat lunak dan akselerator perangkat keras, membandingkan pipeline versus eksekusi paralel, mencapai perincian data yang diinginkan, menilai mekanisme komunikasi, dan banyak lagi.

Untuk membangun sistem yang kompleks ini, pengembang perangkat lunak memerlukan aliran desain yang menawarkan dukungan bersama baik perangkat keras maupun perangkat lunak. Aliran seperti itu harus cukup sederhana untuk menjamin penggunaannya (seperti aliran pengembang perangkat lunak) dan adopsi oleh pengembang perangkat lunak. Alur juga harus memberikan umpan balik yang mendalam tentang pilihan pengoptimalan yang tersedia untuk mencapai sasaran kinerja yang diperlukan. Beberapa perusahaan baru-baru ini membuka jalan untuk memfasilitasi tugas pengembang perangkat lunak dengan mengabstraksi detail teknologi dari aliran desain perangkat keras. Perusahaan-perusahaan ini terinspirasi oleh pendekatan Desain Tingkat Sistem yang dijelaskan dalam Model ESL dan Aplikasinya:Desain dan Verifikasi Tingkat Sistem Elektronik dalam Praktik .

Memahami metodologi aliran desain tingkat sistem
Desain Tingkat Sistem difokuskan pada masalah tingkat abstraksi yang lebih tinggi. Meskipun ada kebutuhan untuk berkonsentrasi pada gambaran yang lebih besar, berbagai tingkat abstraksi digunakan untuk memvalidasi, memverifikasi, memperbaiki, dan mengintegrasikan berbagai bagian sistem sebelum benar-benar dikembangkan. Meskipun komunitas teknik tidak menyetujui bahasa yang sama untuk digunakan, sebagian besar insinyur desain memulai dari tingkat algoritmik. Desainer memvalidasi spesifikasi sistem non-fungsional dan fungsional dengan membuat model eksekusi yang ditulis dalam lingkungan C/C++/SystemC, MATLAB, Simulink, dan LabVIEW. Bahasa tingkat tinggi ini digunakan untuk memodelkan perilaku seluruh sistem.

Untuk tujuan diskusi ini, kami telah memfokuskan pada aliran Desain Tingkat Sistem berdasarkan spesifikasi C/C++ (Gambar 1). Blok pertama dibagi menjadi tiga langkah. Langkah pertama mewakili pembuatan profil aplikasi (yaitu, partisi perangkat keras-perangkat lunak) di mana potongan kode C/C++ (fungsi, loop, dll.) sedang dipertimbangkan untuk dipindahkan ke perangkat keras (FPGA). Langkah selanjutnya adalah spesifikasi platform CPU/FPGA (misalnya, ARM53/FPGA, POWER8/FPGA) dan konfigurasi elemen platform perangkat keras (jam sistem, cache prosesor, interkoneksi, dll.). Langkah berikut adalah memetakan tugas aplikasi (berdasarkan aplikasi yang diprofilkan) antara perangkat keras dan perangkat lunak (yaitu, CPU keras dan/atau lunak) dan — di bagian paling akhir — pembuatan arsitektur yang dapat dieksekusi.


Gambar 1. Alur desain tingkat sistem yang umum untuk CPU/FPGA
(Sumber:Space Codesign Systems, Inc.)

Blok kedua dari Gambar 1 melibatkan optimasi arsitektur (juga dikenal sebagai eksplorasi arsitektur atau verifikasi kinerja). Hal ini digambarkan secara lebih rinci pada Gambar 2.


Gambar 2. Proses optimasi arsitektur
(Sumber:Space Codesign Systems, Inc.)

Proses optimasi arsitektur membahas estimator berikut:

Estimasi ini dikumpulkan dalam database dan analisis kinerja sistem disajikan kepada pengembang untuk menilai apakah persyaratan sistem terpenuhi. Arsitektur yang memenuhi persyaratan melanjutkan ke proses implementasi arsitektur; jika tidak, upaya pengoptimalan tingkat sistem tambahan akan diproses.

Blok terakhir dari Gambar 1 berkaitan dengan implementasi arsitektur di mana arsitektur sistem diubah menjadi bitstream (untuk implementasi FPGA) menggunakan alat implementasi seperti Xilinx Vivado atau Intel Quartus Prime untuk pembuatan sistem final dan lengkap yang akan dieksekusi pada platform fisik tertentu. Langkah ini harus menghasilkan kode kualitas dan harus transparan bagi pengembang perangkat lunak.

Pengoptimalan tingkat sistem
Kurangnya alat otomatis untuk optimasi arsitektur telah lama dianggap sebagai kelemahan utama komputasi berbasis FPGA. Pengembangan alat tersebut sulit karena kompleksitas dan tantangan yang terlibat.

Untuk mengilustrasikan tantangan ini, Gambar 3 menunjukkan proses pengoptimalan tingkat sistem yang khas selama eksplorasi arsitektural untuk aplikasi pemrosesan gambar yang terdiri dari enam fungsi (potongan kode C/C++) untuk diimplementasikan pada platform Zynq-7000. Di sini, kami mencantumkan delapan arsitektur potensial yang dapat diimplementasikan pada platform. Karena waktu-ke-pasar tidak memungkinkan untuk implementasi setiap arsitektur, yang terbaik untuk diterapkan harus ditentukan dengan cepat. Urutan pengoptimalan ini dapat menjadi tantangan, bahkan untuk desainer perangkat keras yang berpengalaman.


Gambar 3. Eksplorasi arsitektur dengan keputusan tingkat sistem ditunjukkan dengan warna biru
(Sumber:Space Codesign Systems, Inc.)

Alat pengembangan perangkat lunak FPGA seperti SDSoC/SDAccel (Xilinx), Merlin Compiler (Falcon Computing Solutions), dan SpaceStudio (Space Codesign Systems) adalah solusi komersial yang membantu pengembang perangkat lunak dalam merancang sistem FPGA/CPU sambil mencapai optimasi tingkat sistem. Alat ini mengadopsi alur yang sama seperti yang dijelaskan pada Gambar 1 dan 2, dan — dengan itu — alat ini menunjukkan keberadaan generasi baru alat tingkat sistem dengan pendekatan yang berbeda.

SDSoC memperkirakan kinerja sistem dalam pendekatan dua langkah. Awalnya, SDSoC memperkirakan latensi untuk fungsi perangkat keras (dari alat HLS) dan karakterisasi internal (yaitu, transfer data) dari platform fisik yang ditargetkan dan antarmuka komunikasinya. Kemudian, perkiraan ini dibandingkan dengan versi aplikasi khusus perangkat lunak yang berjalan pada platform fisik.

Merlin Compiler mengusulkan transformasi sumber-ke-sumber. Tujuan transformasi sumber-ke-sumber adalah untuk mengurangi atau menghilangkan kesenjangan abstraksi desain antara pengembangan perangkat lunak/algoritma dan aliran desain HLS yang ada. Merlin Compiler mengandalkan empat pragma untuk menyimpulkan desain FPGA tertentu. Selain empat optimasi utama yang dipicu oleh pragma eksplisit, Merlin Compiler juga berisi berbagai optimasi implisit (yaitu, mengubah lintasan kompiler) yang dilakukan bersama dengan pragma untuk membantu meningkatkan hasil pipeline dan paralelisasi.

SpaceStudio dengan mulus menghasilkan platform virtual (VP) yang dapat dieksekusi untuk setiap kandidat arsitektur (pemetaan). VP tipikal terdiri dari simulator inti prosesor yang terhubung ke berbagai model bus, pengontrol memori, dan model periferal data lainnya. Ini memodelkan platform yang ditargetkan bersama dengan transfer data dalam lingkungan simulasi bersama yang dirancang khusus untuk aplikasi. Ini berarti bahwa VP yang dapat dieksekusi memungkinkan prediksi kinerja dan validasi algoritme aplikasi yang lebih akurat. Ini juga mengintegrasikan kemampuan pemantauan dan analisis untuk profil kinerja non-intrusif dari fungsi perangkat keras dan tugas perangkat lunak. VP bergantung pada alat HLS untuk penaksir perangkat keras, sementara penundaan (misalnya, latensi) dari fungsi yang dipetakan perangkat keras secara otomatis dijelaskan untuk meningkatkan akurasi proses simulasi. VP dapat diperiksa oleh pengembang perangkat lunak untuk memahami bagaimana tugas pengoptimalan diimplementasikan. Umpan balik tersebut membantu pengembang perangkat lunak untuk mencapai desain yang dimaksudkan untuk pengoptimalan terapan tertentu.

Satu cara untuk melihat ekosistem komersial
Gambar 4 mengusulkan pandangan ekosistem komersial yang menarik di seluruh dunia desain CPU dan FPGA berbasis platform. Kotak pertama (atas) menyajikan entri desain utama pada tingkat algoritma. Kotak kedua berisi lingkungan yang mendukung sintesis algoritmik (yaitu, dari algoritme hingga implementasi). Alat yang ditandai dengan huruf tebal mendukung entri desain C/C++ dan melakukan pengoptimalan tingkat sistem. Kotak ketiga merupakan alat yang digunakan untuk mencapai implementasi arsitektur, terutama alat dari vendor FPGA yang melakukan sintesis tingkat rendah dan generasi bitstream. Di bagian bawah gambar, contoh platform CPU/FPGA diilustrasikan.


Gambar 4. Ekosistem komersial untuk platform CPU/FPGA
(Sumber:Space Codesign Systems, Inc.)

Selain itu, Tabel 1 mencantumkan beberapa alat komersial utama yang digunakan dalam desain platform CPU/FPGA.


Tabel 1. Alat otomatisasi komersial (*Catatan:Daftar diusulkan dalam tinjauan ini)

Kesimpulan
Tujuan utamanya adalah mendemokratisasikan pengembangan CPU plus platform FPGA ke populasi pengguna yang lebih luas, seperti komunitas pengembang perangkat lunak. Melihat analogi bahasa pemrograman, industri TI membutuhkan waktu lebih dari 50 tahun bagi bahasa pemrograman untuk berkembang menjadi bahasa yang ramah seperti Python atau, baru-baru ini, Swift. Proses evolusi serupa terjadi di industri pemrograman FPGA. Penerimaan alat HLS membutuhkan waktu untuk disahkan oleh perancang sistem. Hari ini, dengan munculnya solusi tingkat sistem untuk pengembang perangkat lunak, kami memasuki fase baru. Alat komersial seperti SpaceStudio, SDSoC, dan Merlin Compiler adalah kesaksian dari proses penerimaan ini. Namun, masih banyak pekerjaan yang harus dilakukan untuk memiliki proses yang sepenuhnya otomatis dan dioptimalkan di seluruh kompiler yang menargetkan CPU plus platform FPGA.

Guy Bois, Ing., PhD adalah Pendiri Space Codesign Systems dan Profesor di Departemen Perangkat Lunak dan Teknik Komputer Polytechnique Montréal. Guy telah berpartisipasi dalam banyak proyek R&D bekerja sama dengan para pemimpin industri seperti STMicroelectronics, Grass Valley, PMC Sierra, Design Workshops Technologies, dan Cadabra Systems. Keahlian penelitian Guy di bidang codesign hardware/software mengarah pada komersialisasi solusi dan lahirnya SpaceStudio dari Space Codesign Systems Inc.


Tertanam

  1. Wawancara Pakar:AMendate pada Perangkat Lunak Pengoptimalan Topologi Otomatis untuk Pencetakan 3D
  2. Wawancara Pakar:Ravi Kunju Altair Pada Perangkat Lunak Simulasi Untuk Pencetakan 3D
  3. 5 pertanyaan untuk Stefan Ferber, CEO baru Bosch Software Innovatons
  4. Proyek Menjelajahi Alur Desain &Verifikasi yang Tepercaya untuk Keamanan IoT
  5. Alat berbasis ML baru menawarkan pengoptimalan alur desain chip otomatis
  6. Cadence dan UMC berkolaborasi dalam sertifikasi aliran sinyal analog/campuran untuk proses 28HPC+
  7. Otomasi:Perangkat Keras &Perangkat Lunak Baru untuk Robot Murah
  8. Kasus Penggunaan IoT Keren:Mekanisme keamanan baru untuk mobil berjaringan
  9. Omron meluncurkan perangkat lunak baru untuk robot selulernya
  10. Beradaptasi dengan Realitas Baru untuk Manufaktur