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

Panduan untuk mempercepat aplikasi dengan petunjuk khusus RISC-V yang tepat

Arsitektur set instruksi terbuka (ISA) RISC-V memungkinkan fleksibilitas yang luas dalam implementasi dan menawarkan fitur opsional yang dapat memungkinkan pendekatan baru untuk menyelesaikan kompromi desain perangkat keras-perangkat lunak. Berdasarkan struktur modular, sejumlah ekstensi dan opsi standar dapat digunakan untuk mengonfigurasi prosesor dasar sebagai titik awal. Namun nilai sebenarnya sebenarnya terletak pada peluang yang ditawarkan RISC-V kepada pengembang untuk membuat ekstensi, instruksi, dan konfigurasi baru yang secara unik memenuhi kebutuhan ide aplikasi inovatif mereka.

Tantangan perangkat lunak untuk ISA tetap

Secara tradisional, ISA telah menjadi kekayaan intelektual (IP) dari organisasi komersial yang ingin menjual mikroprosesor atau mikrokontroler, atau yang ingin melisensikan desain mereka untuk digunakan orang lain. Pengembang tertanam dibiarkan menjalankan perangkat lunak pembandingan untuk menentukan solusi mana yang paling optimal untuk kebutuhan aplikasi mereka. Karena biaya pengembangan ISA independen dengan semua ekosistem yang diperlukan, vendor semikonduktor semakin mengandalkan ISA tetap standar yang ditawarkan oleh penyedia IP mainstream, mengandalkan Hukum Moore dan periferal terintegrasi untuk menghadirkan diferensiasi, seperti daya ultra-rendah , kepada pelanggan mereka.

Tantangannya di sini adalah bahwa instruksi yang digunakan untuk mengeksekusi kode tidak dapat diubah. Oleh karena itu, efisiensi yang berpotensi diperoleh dengan, misalnya, instruksi yang dioptimalkan untuk algoritma enkripsi, tidak dapat direalisasikan. Ini mungkin berarti bahwa aplikasi pengembang terlalu lambat, berpotensi menggunakan terlalu banyak daya, atau sering melewatkan tenggat waktu nyata dalam lingkaran kontrol. Bahkan dengan keinginan terbaik di dunia, ini adalah faktor yang menantang untuk diselesaikan secara murni dengan peningkatan fabrikasi semikonduktor atau penyusutan proses.

RISC-V ISA dimulai sebagai sebuah proyek di University of California, Berkeley dan sekarang dikelola oleh RISC-V International Association, sebuah kelompok nirlaba dengan lebih dari 300 anggota. Ini berkontribusi pada spesifikasi ISA, perangkat lunak, seperti simulator dan kompiler, dan ekosistem lainnya yang diperlukan untuk mendukung upaya semacam itu. Masuk akal atau tidaknya penggunaan bergantung pada apakah salah satu dari dua faktor dapat dimanfaatkan:bebas dalam hal lisensi, atau kebebasan yang diberikannya.

Menjadi terbuka dan tersedia secara bebas, ini menyediakan platform pemrosesan dasar yang dapat dengan mudah digunakan oleh akademisi untuk pengajaran dan penelitian, serta aplikasi komersial. ISA terbuka juga mendukung sejumlah model bisnis untuk pengembang yang mencari sumber IP semikonduktor, mulai dari penyedia IP komersial hingga proyek sumber terbuka dan lembar bersih, desain yang dibuat sendiri. Organisasi komersial juga menganggap ini menarik, memanfaatkannya dalam FPGA, SoC, atau bahkan inti mikrokontroler atau penawaran produk standar.

Berkat kebebasan yang diberikannya, akademisi dapat menyelidiki pendekatan baru untuk mengatasi tantangan komputasi, mengimplementasikan apa pun mulai dari instruksi baru dan akselerator lainnya, desain heterogen multi-inti dan banyak-inti ditambah opsi arsitektur mikro yang berbeda. Banyak dari opsi ini juga menarik bagi startup dan bisnis yang ingin mengatasi tantangan kompleks, seperti chipset kecerdasan buatan (AI) berdaya rendah yang beroperasi di edge, dengan menambahkan instruksi khusus yang disesuaikan dengan persyaratan aplikasi akhir.

Karena ekosistem telah dibangun dengan fleksibilitas RISC-V bawaan, konfigurasi standar atau ekstensi khusus apa pun harus dapat memanfaatkan alat dan perangkat lunak dalam kerangka kerja yang sesuai dengan ISA.

Memahami fleksibilitas ISA RISC-V terbuka

Berkat aksesibilitas RISC-V ISA dan alat terkait, mudah untuk memulai proyek investigasi untuk menilai kesesuaiannya untuk digunakan dalam aplikasi tertentu. Alat simulasi memungkinkan ISA dasar standar untuk diuji coba untuk menentukan kinerja out-of-the-box. Misalnya, titik awal yang baik adalah konfigurasi RISC-V 32-bit dengan ekstensi integer “I” dan perkalian “M” (yang dapat dirujuk sebagai RV32IM) yang menyediakan dukungan untuk set instruksi integer 32-bit dasar; lebih banyak opsi tersedia tetapi ini cukup untuk contoh ini. Ini kemudian dipakai bersama dengan memori simulasi termasuk penundaan akses dan status menunggu.

Aplikasi yang ditulis dalam C/C++ kemudian dapat dikompilasi silang menggunakan rantai alat standar. Ini bisa berjalan pada bare metal atau sebagai bagian dari sistem operasi (waktu nyata) (RTOS/OS). Kode biner yang dihasilkan kemudian dieksekusi menggunakan alat seperti instruksi set simulator (ISS) yang memungkinkan model prosesor dasar yang dipilih untuk diintegrasikan dan disimulasikan (gambar 1). Lingkungan ini juga menyediakan fungsionalitas input/output standar dan akses ke sistem file host. Alat lingkungan pengembangan terintegrasi (IDE) standar seperti Eclipse kemudian dapat digunakan untuk mengontrol eksekusi kode, berinteraksi melalui GDB debugger GNU.

Dari sini, melalui proses pembuatan profil dan analisis, kandidat instruksi diidentifikasi, dirancang, dan dimodelkan. Dengan menggunakan kode aplikasi asli sebagai model fungsional dasar, peningkatan yang dihasilkan dapat dengan cepat diuji, diverifikasi, dan kinerjanya dibandingkan. Iterasi cepat dari pembuatan profil dan analisis ini memungkinkan pemilihan cepat dan optimalisasi instruksi yang layak untuk diterapkan. Dokumentasi dapat dihasilkan dari model dan menjadi dasar spesifikasi fungsi untuk desain logika transfer register (RTL) dan model yang dioptimalkan.

Sebagai contoh, algoritma enkripsi seperti ChaCha20 mungkin penting untuk aplikasi tertentu. Kode sumber yang tersedia dapat dikompilasi untuk basis RV32IM “vanilla”, dieksekusi, dan kemudian dianalisis dengan perkiraan waktu siklus instruksi menggunakan profil blok dasar untuk menentukan berapa banyak waktu yang dihabiskan di bagian kode mana. Inti dari algoritma ChaCha20 banyak menggunakan XOR dan instruksi rotasi yang dikenal sebagai quarter-rounds (gambar 2). Hasil profil blok segera menyoroti bahwa sebagian besar waktu eksekusi dihabiskan untuk fungsi-fungsi ini.

Visualisasi grafis dari hotspot ini juga dapat dihasilkan dengan menggunakan alat verifikasi, analisis, dan pembuatan profil (VAP). Daripada memberikan output tekstual, waktu eksekusi disediakan sebagai pohon statistik yang dapat dilipat, membantu memvisualisasikan hotspot dengan lebih baik dengan proporsi instruksi yang dieksekusi. Hal ini dapat dilihat pada gambar 3 dimana fungsi processWord() mengimplementasikan algoritma ChaCha20, memanggil keempat qrx_c berfungsi untuk mengimplementasikan fungsi seperempat putaran yang diperlukan.

Dengan meninjau kode assembler yang dihasilkan oleh kompiler dan/atau dengan menjalankan profil blok dasar, maka dimungkinkan untuk menentukan instruksi dan kombinasi instruksi mana yang telah digunakan untuk mengimplementasikan algoritma. Dari sini, langkah selanjutnya adalah menentukan instruksi khusus apa, dalam batasan spesifikasi ISA, yang berpotensi meningkatkan kecepatan eksekusi.

Menentukan potensi peningkatan yang dapat diberikan RISC-V

Algoritme ChaCha20 banyak menggunakan XOR yang digabungkan dengan rotasi kiri 7, 8, 12 dan 16 bit. Menggunakan instruksi yang tersedia dari spesifikasi dasar RV32IM menunjukkan bahwa ini memerlukan instruksi XOR diikuti dengan instruksi shift-kiri. Ini berarti ada potensi untuk mengoptimalkan dua langkah ini menjadi empat instruksi khusus yang mengimplementasikan XOR bersama dengan rotasi kiri 7, 8, 12 atau 16 bit.

Menjadi arsitektur penyimpanan beban, setiap instruksi kustom harus mengasumsikan bahwa data yang akan dimanipulasi sudah berada di salah satu register 32-bit RISC-V ini. Ini segera menentukan bahwa instruksi tipe-R (register) akan diperlukan yang dapat ditempatkan di custom-1 decode space (gambar 4).

ISA menyediakan struktur yang jelas untuk instruksi tersebut. Dengan mengikuti aturan ini, kita dapat dengan cepat menentukan cara mengkodekan instruksi baru kita. 7-bit yang lebih rendah didefinisikan sebagai opcode, yang diberi nilai yang menandainya sebagai instruksi khusus di custom-1 memecahkan kode ruang. Ini bertentangan dengan OP atau OP-IMM opcode yang digunakan untuk instruksi XOR dan shift-left yang ada.

Tiga blok bit yang telah ditentukan sebelumnya dicadangkan dalam definisi ISA untuk meresepkan dua register sumber dan register tujuan untuk hasilnya. Ini meninggalkan blok bit yang dikenal sebagai fungsi3 . Tiga bit ini memberi kita ruang untuk mengkodekan delapan instruksi yang mungkin, empat di antaranya akan digunakan dalam contoh ini.

Tanpa memerlukan implementasi perangkat keras RTL yang terperinci untuk instruksi ini, dimungkinkan untuk mensimulasikannya di lingkungan ISS untuk melihat apakah mereka akan bermanfaat sama sekali untuk tantangan yang dihadapi. Empat instruksi baru dimodelkan menggunakan platform virtual terbuka (OVP) VMI Application Programming Interface (API). Hal ini memungkinkan pengembang untuk dengan cepat mengulangi desain instruksi yang memberikan hasil optimal yang diinginkan berdasarkan instruksi baru untuk aplikasi target. Hanya setelah ini tercapai, sumber daya perlu dikomit ke implementasi RTL.

Untuk tujuan evaluasi fungsional awal dari instruksi, ada dua pendekatan yang mungkin. Yang pertama adalah memanggil versi algoritma C/C++ asli, mengikat instruksi baru ke fungsi ini (gambar 5a). Yang kedua adalah mengimplementasikannya sebagai instruksi morph VMI yang menciptakan perilaku yang sama (gambar 5b). Ini memiliki keuntungan menjadi lebih efisien dan merupakan pendekatan yang disarankan.

Tentu saja, keberadaan instruksi baru tidak berarti bahwa kompiler dapat langsung menggunakannya. Oleh karena itu, aplikasi C/C++ asli perlu ditulis ulang menggunakan assembler sebaris dan dikompilasi silang untuk memanfaatkan instruksi baru. Karena pembuatan profil dan analisis instruksi kandidat dapat menjadi tugas yang berulang, pendekatan berbasis intrinsik menyediakan cara paling efisien untuk mengadaptasi aplikasi C asli untuk menggunakan instruksi kustom baru.

Implementasi dasar RISC-V yang dimuat ke dalam simulator juga perlu disadarkan akan instruksi baru agar dapat memanfaatkannya. Ini dicapai dengan memasukkan mereka ke dalam model sebelum menjalankan kembali simulasi. Dalam contoh khusus ini, pengulangan pembuatan profil menunjukkan lebih sedikit waktu yang dihabiskan untuk menjalankan algoritme (gambar 6). Alat pembuatan profil VAP Imperas menunjukkan bahwa processWord() fungsi, menggunakan instruksi in-line khusus, sekarang menyumbang 66% dari keseluruhan eksekusi algoritme tetapi waktu eksekusi keseluruhan untuk algoritme sangat berkurang (gambar 6b).

Hasil dengan implementasi C asli
Info   Petunjuk simulasi:316.709.013
Info   Waktu simulasi         :5,15 detik

Hasil dengan petunjuk Khusus
Info   Petunjuk simulasi:60.474.426
Info Waktu simulasi          :1,38 detik

Setelah fungsionalitas yang benar telah ditentukan, model selanjutnya disempurnakan dengan mendeklarasikan waktu eksekusi untuk setiap instruksi dalam siklus prosesor. Putaran simulasi selanjutnya dapat digunakan untuk menentukan peningkatan kinerja apa pun, bahkan dengan mempertimbangkan status tunggu yang terkait dengan akses memori yang mungkin terjadi dalam implementasi perangkat keras pada akhirnya.

Berkat integrasi yang erat dengan IDE open source dan alat GDB umum, debugging penuh solusi dapat dilakukan bersama dengan desain RISC-V yang dioptimalkan sebelum menerapkan desain ke implementasi perangkat keras (gambar 7).

Berpindah dari simulasi ke implementasi

Dengan ditentukannya potensi peningkatan kinerja, langkah selanjutnya membutuhkan implementasi empat instruksi baru dalam RTL. Berkat pekerjaan awal yang dilakukan, ini menjadi spesifikasi fungsional yang mendefinisikan persyaratan dan juga dapat digunakan sebagai bagian dari rencana uji verifikasi RTL sebagai model referensi emas. Sementara penggunaan fungsi intrinsik dalam aplikasi C membantu pembuatan profil dan analisis instruksi kustom, pendekatan ini juga dapat digunakan untuk pengembangan kode produksi di masa mendatang atau dapat dipertimbangkan untuk peningkatan rantai alat compiler potensial.

Tugas penting lainnya yang tersisa, dokumentasi, juga merupakan proses yang sederhana. Semua model prosesor cepat platform virtual terbuka (OVP) menyertakan dokumentasi yang dapat diperluas untuk mencakup fungsionalitas perubahan dan modifikasi. Mengikuti template yang diberikan, instruksi baru dapat dideklarasikan dan dijelaskan, memungkinkan komunitas pengembang untuk menemukan kemampuan mereka dan memanfaatkannya. Dokumentasi tersebut kemudian diubah menjadi file TeX dari mana PDF dapat dihasilkan (gambar 8).

Ringkasan

Dengan kebebasan ISA terbuka RISC-V, selain opsi standar dan fitur yang ditentukan dalam spesifikasi, pengguna dapat mengembangkan ekstensi dan instruksi khusus lebih lanjut. Paling sederhana, ini memungkinkan model bisnis baru dan kreatif termasuk implementasi komersial dan open source, plus memungkinkan kebebasan yang lebih luas untuk mengeksplorasi fitur nilai tambah di luar pendekatan tradisional arus utama.

Namun, nilai sebenarnya berasal dari mengambil inti dasar yang lengkap, didokumentasikan dan didukung dan memodifikasinya untuk memenuhi kebutuhan aplikasi tertentu. Melalui analisis aplikasi yang cermat, pembuatan profil kode dan simulasi, peningkatan kinerja yang signifikan dapat dicapai yang tidak dapat diwujudkan melalui ISA tetap. Semua ini dapat dikembangkan dan diprofilkan dengan beban kerja aplikasi nyata sebelum memulai implementasi perangkat keras yang mendetail.


Tertanam

  1. Membuat Profil Aplikasi Terdistribusi dengan Perf
  2. Panduan Singkat Pencetakan 3D dengan Binder Jetting
  3. Microchip:menskalakan aplikasi ruang dengan MCU Inti yang toleran terhadap radiasi COTS
  4. Renesas:MCU RX72M dengan dukungan EtherCAT untuk aplikasi industri
  5. Axiomtek:sistem tertanam dengan sakelar PoE terkelola lapisan 2 terintegrasi
  6. Menegosiasikan Ulang Biaya Dengan Pemasok yang Ada:Panduan
  7. Router Kayu CNC - Dengan Aplikasi Menakjubkan
  8. Memulai Dengan AI Dalam Asuransi:Panduan Pengantar
  9. 5 Aplikasi Dunia Nyata AI dalam Kedokteran (dengan Contoh)
  10. Panduan Sepatu Rem Khusus dan Bantalan untuk Aplikasi Rel Kecepatan Tinggi