Hotline Layanan
RISC-V telah menjadi salah satu topik terpanas dalam komputasi karena arsitektur set instruksi (ISA) ini memungkinkan penyesuaian ekstensif dan mudah dipahami, selain manfaat open source dan bebas lisensi secara keseluruhan. Bahkan ada proyek untuk merancang GPU serba guna berdasarkan RISC-V ISA, dan sekarang kita menyaksikan porting perpustakaan perangkat lunak CUDA Nvidia ke platform Vortex RISC-V GPGPU.
CUDA (Computing Unified Device Architecture) Nvidia mewakili platform komputasi unik dan antarmuka pemrograman aplikasi (API) yang berjalan pada jajaran kartu grafis Nvidia. Ketika sebuah aplikasi ditulis untuk dukungan CUDA, segera setelah sistem menemukan GPU berbasis CUDA, ia mendapat banyak akselerasi GPU dari kode tersebut.
Saat ini, para peneliti menyelidiki cara untuk mengaktifkan dukungan perangkat lunak CUDA pada proyek GPGPU RISC-V yang disebut Vortex. Vortex RISC-V GPGPU dirancang untuk menyediakan GPU RISC-V di seluruh sistem berdasarkan RV32IMF ISA. Artinya, core 32-bit dapat menskalakan desain GPU 1-core hingga 32-core. Ini mendukung API grafis OpenCL 1.2, dan saat ini juga mendukung beberapa operasi CUDA.
Para peneliti menjelaskan: "...Dalam proyek ini, kami mengusulkan dan membangun pipeline untuk mendukung migrasi CUDA end-to-end: pipeline menerima kode sumber CUDA sebagai masukan dan mengeksekusinya pada arsitektur GPU RISC-V yang diperluas. Kami pipeline terdiri dari beberapa langkah: menerjemahkan kode sumber CUDA ke NVVM IR, mengonversi NVVM IR ke SPIR-V IR, meneruskan SPIR-V IR ke POCL untuk mendapatkan biner RISC-V, dan terakhir mengeksekusi pada arsitektur file Biner GPU RISC-V yang diperluas. "
Prosesnya divisualisasikan pada gambar di atas, menunjukkan semua langkah untuk membuatnya berhasil. Secara sederhana, kode sumber CUDA direpresentasikan dalam format representasi perantara (IR) yang disebut NVVM IR, berdasarkan LLVM IR sumber terbuka. Itu kemudian diubah menjadi Standard Portable Intermediate Representation (SPIR-V) IR, yang kemudian diteruskan ke implementasi open-source portabel dari standar OpenCL, yang disebut POCL. Karena Vortex mendukung OpenCL, ia menyediakan kode yang didukung dan dapat menjalankannya tanpa masalah.
Untuk detail lebih lanjut tentang proses rumit ini, klik di bawah untuk membaca artikel aslinya. Yang penting, Anda harus berterima kasih kepada para peneliti ini atas upaya mereka membuat CUDA berjalan di GPGPU RISC-V. Meskipun ini hanyalah sebuah langkah kecil untuk saat ini, ini bisa menjadi awal dari era di mana RISC-V digunakan untuk mempercepat aplikasi komputasi, seperti jajaran GPU Nvidia saat ini.
Bacaan lebih lanjut: Bisakah RISC-V mengubah GPU?
Siapa pun yang telah mempelajari arsitektur GPU tahu bahwa ini adalah konstruksi SIMD dari prosesor vektor. Ini adalah prosesor paralel ultra-efisien yang telah digunakan untuk segala hal mulai dari menjalankan simulasi dan permainan hebat hingga mengajari robot cara menggunakan AI dan membantu orang pintar memanipulasi pasar saham. Ia bahkan memeriksa tata bahasa saya saat saya menulis ini.
Namun bidang GPU telah menjadi bidang pribadi, dan pekerjaan internalnya dilakukan oleh IP dan efektif persediaan pengembang seperti AMD, Intel, dan Nvidia. Bagaimana jika ada satu set instruksi grafis baru yang dirancang untuk grafis 3D dan pemrosesan media? Mungkin saja ada.
Instruksi baru sedang dibangun berdasarkan set instruksi vektor dasar RISC-V. Mereka akan menambahkan dukungan untuk tipe data khusus grafik baru sebagai ekstensi berlapis dalam semangat inti RISC-V ISA. Mendukung operasi vektor, matematika sebelumnya, piksel dan tekstur, serta buffer Z/Frame. Ini bisa berupa ISA CPU-GPU yang menyatu. Grup perpustakaan - RISC 3D menyebutnya RV64X (Gambar 1) karena panjang instruksinya adalah 64 bit (32 bit tidak akan cukup untuk mendukung ISA yang kuat).
Kelompok tersebut menyatakan bahwa motivasi dan tujuan mereka adalah untuk menciptakan desain yang kecil dan efisien dengan kemampuan program khusus dan dapat diperluas. Perusahaan harus memberikan kepemilikan dan pengembangan IP berbiaya rendah, bukan bersaing dengan produk komersial. Ini dapat diimplementasikan pada target FPGA dan ASIC serta gratis dan open source. Desain aslinya menargetkan mikrokontroler berdaya rendah yang kompatibel dengan Khronos Vulkan dan mendukung API lain (OpenGL, DirectX, dll.).
GPU + RISC-V
Tim mengatakan: "Tidak perlu menggunakan mekanisme panggilan RPC/IPC untuk mengirim panggilan API 3D ke ruang memori CPU yang tidak terpakai atau ruang memori CPU yang tidak terpakai ke ruang memori GPU dan sebaliknya,"
Keuntungan dari pendekatan CPU-GPU ISA yang "menyatu" adalah pipeline grafis standar dapat digunakan dalam mikrokode, dan shader khusus dapat didukung. Bahkan dapat menyertakan ekstensi ray tracing.
Desainnya akan dalam format Vblock (dari upaya Libre GPU):
- Ini seperti VLIW (tapi tidak juga).
- Blok instruksi didahului oleh penanda register yang memberikan konteks tambahan untuk instruksi skalar dalam blok tersebut.
- Subblok mencakup panjang vektor, rotasi, hamparan vektor/lebar, dan prediksi.
- Semua ini ditambahkan ke opcode skalar!
- Tidak ada opcode vektor (juga tidak memerlukannya).
- Dalam konteks vektor, bunyinya seperti ini: jika opcode skalar menggunakan register, dan register tersebut terdaftar dalam konteks vektor, maka mode vektor akan diaktifkan.
- Aktivasi menyebabkan loop for tingkat perangkat keras mengeluarkan beberapa operasi skalar berturut-turut (bukan hanya satu).
- Pelaksana bebas mengimplementasikan loop dengan cara apa pun yang mereka inginkan - SIMD, multi-masalah, eksekusi tunggal; apa saja.
Vektor RV32-V menangani operasi vektor 8-bit, 16-bit, atau 32-bit/elemen dari 2 hingga 4 elemen. Juga akan ada instruksi khusus untuk pipeline rendering grafis 3D umum untuk titik XYZW titik tetap dan mengambang 64-bit dan 128-bit. Piksel RGBA 8-, 16-, 24- dan 32-bit; Texel UVW 8-bit, 16-bit per komponen; dan pengaturan cahaya dan material (Ia, ka, Id, kd, Is, ks, dll).
Vektor atribut direpresentasikan sebagai matriks 4×4. Sistem ini secara asli akan mendukung matriks 2×2 dan 3×3. Dukungan vektor mungkin juga cocok untuk simulasi numerik menggunakan tipe data integer 8-bit yang umum dalam aplikasi AI dan pembelajaran mesin.
Rasterizer khusus seperti splines, permukaan SubDiv, dan patch dapat disertakan dalam desain. Metode ini juga memungkinkan penyertaan tahapan pipeline kustom, tahapan geometri/piksel/framebuffer kustom, subdivider kustom, dan operasi instancing kustom.
RV64X
-
Cache SRAM Instruksi/Data (32 kB)
-
Mikrokode SRAM (8 kB)
-
Dekoder instruksi fungsi ganda (terprogram untuk RV32V dan X; dekoder instruksi mikrokode untuk ISA khusus)
-
ALU quad-vektor (32-bit/ALU-tetap/float)
-
File register 136-bit (1k elemen)
-
satuan fungsi khusus
-
satuan tekstur
-
Framebuffer lokal yang dapat dikonfigurasi
RV64X adalah arsitektur yang dapat diskalakan (Gambar 2). Metode fusinya baru, begitu pula penggunaan register yang dapat dikonfigurasi untuk tipe data khusus. Mikrokode berbasis SRAM yang ditentukan pengguna dapat digunakan untuk mengimplementasikan ekstensi seperti tahapan rasterizer khusus, penelusuran sinar, visi mesin, dan pembelajaran mesin. Desain tunggal dapat diterapkan pada mikrokontroler grafis yang berdiri sendiri atau solusi multi-inti dengan unit shader yang dapat diskalakan.
Ekstensi grafis pada RISC-V mengatasi skalabilitas dan multibahasa. Hal ini memungkinkan kasus penggunaan tingkat tinggi yang menghasilkan lebih banyak inovasi.
apa berikutnya
Spesifikasi RV64X masih dalam pengembangan awal dan dapat berubah. Forum diskusi sedang dibentuk. Tujuan langsungnya adalah untuk membangun contoh implementasi menggunakan simulator set instruksi. Ini akan terbuka menggunakan implementasi IP Sumber dan FPGA dari IP khusus yang dirancang sebagai proyek sumber terbuka.
Penafian: Artikel ini direproduksi dari "Pengamatan Industri Semikonduktor". Artikel ini hanya mewakili pendapat pribadi penulis, bukan pendapat Sac Micro dan industri, hanya untuk dicetak ulang dan dibagikan, dukungan Untuk melindungi hak kekayaan intelektual, harap tunjukkan sumber asli dan penulis untuk dicetak ulang. Jika ada pelanggaran, silakan hubungi kami untuk menghapusnya.




粤公网安备44030002007346号