
Pada tanggal 2 Maret, pada Konferensi Ekologi Xuantie RISC-V pertama yang diadakan oleh Ali Pingtou, David Patterson, ayah dari pemenang RISC-V dan Turing Award, berkata dengan percaya diri.
Sejak diperkenalkan hingga 10 miliar prosesor, arsitektur x86 Intel membutuhkan waktu puluhan tahun, ARM membutuhkan waktu 17 tahun, dan RISC-V hanya membutuhkan waktu sekitar 10 tahun, yang belum pernah terjadi sebelumnya dalam sejarah pengembangan arsitektur chip.
Beberapa data memperkirakan bahwa pada tahun 2025, jumlah prosesor yang menggunakan arsitektur RISC-V akan melebihi 80 miliar. Di bidang IoT, diperkirakan 28% pasar akan ditempati oleh RISC-V pada tahun 2025.
Jadi, apa itu RISC-V? (Konten berikut ini sebagian besar berasal dari rangkaian artikel "Kelahiran CKB-VM")
Pengantar RISC-V
RISC-V adalah arsitektur set instruksi CPU sumber terbuka yang jelas, sederhana, lahir di University of California, Berkeley.
Pada tahun 2010, karena keterbatasan set instruksi sumber tertutup komersial lainnya, tim peneliti di sekolah tersebut merancang set instruksi sumber terbuka baru dari awal ketika memulai proyek baru. Set instruksi baru ini memiliki sejumlah besar register dan kecepatan eksekusi instruksi yang transparan, yang dapat membantu kompiler dan pemrogram bahasa rakitan mengubah masalah praktis dan penting menjadi kode yang sesuai dan efisien, dan berisi kurang dari 50 instruksi.
Set instruksi ini adalah RISC-V, jadi RISC-V adalah set instruksi yang masih sangat muda.
Jadi, apa set instruksi utama sebelum ini?
Di era PC, x86 adalah penguasa yang tak tergoyahkan, x86 adalah CISC (Complex Instruction Set Computer), yang berbeda dengan RISC (Reduksi Instruksi Set Komputer). Hal ini akan menyebabkan biaya terus meningkat, dan kinerja serta konsumsi daya juga akan terpengaruh. Selain itu, panjang set instruksi CISC dan waktu eksekusi tidak tetap, sehingga sulit untuk menemukan jalur desain universal yang efisien untuk menyelesaikan eksekusi instruksi.
Setelah popularitas ponsel pintar, ARM telah menjadi kesayangan terminal seluler. ARM adalah kumpulan instruksi yang dikurangi (RISC) dengan konsumsi daya yang rendah dan biaya yang rendah. Namun, untuk mempertahankan kompatibilitas ke belakang, ARM perlu mempertahankan banyak definisi yang sudah ketinggalan zaman, yang mengakibatkan redundansi kumpulan instruksi yang serius, yang membuat dokumentasi arsitektur ARM semakin rumit lebih tinggi dan lebih tinggi.
Dalam monopoli x86 dan ARM saat ini, RISC-V telah membawa vitalitas baru ke pasar.
Tujuan RISC-V adalah untuk menyediakan arsitektur set instruksi CPU yang umum untuk mendukung pengembangan arsitektur sistem generasi berikutnya tanpa beban masalah arsitektur lama selama beberapa dekade mendatang.
RISC-V dapat memenuhi persyaratan implementasi mulai dari mikroprosesor kecil berdaya rendah hingga prosesor pusat data (DC) berkinerja tinggi. Dibandingkan dengan set instruksi CPU lainnya, set instruksi RISC-V memiliki keunggulan sebagai berikut:
Transparansi (sumber terbuka)
ARM dan x86 keduanya merupakan proyek sumber tertutup, dan persyaratan lisensinya sangat ketat: Intel tidak mengizinkan perusahaan mana pun kecuali AMD dan VIA untuk menggunakan set instruksi x86 untuk mendapatkan lisensi untuk set instruksi ARM mungkin memerlukan biaya puluhan juta dolar; Biaya perizinan akan dikenakan dan otorisasi perlu dinegosiasikan ulang setelah otorisasi berakhir.
RISC-V adalah proyek sumber terbuka sejati, yang dikenal sebagai Linux di bidang perangkat keras. Faktanya, niat awal Profesor David Patterson, Profesor Krste Asanovic, Andrew Waterman dan Yunsup Lee yang menemukan RISC-V adalah untuk "Perangkat Instruksi Ingin Bebas", dan perusahaan, universitas, lembaga penelitian, dan individu mana pun di seluruh dunia dapat melakukannya. mengembangkan prosesor set instruksi -V yang kompatibel dengan RISC dapat diintegrasikan ke dalam ekosistem perangkat lunak dan perangkat keras yang dibangun di atas RISC-V.
RISC-V menggunakan perjanjian sumber terbuka Lisensi BSD (salah satu perjanjian lisensi yang paling banyak digunakan dalam perangkat lunak bebas). Perjanjian sumber terbuka BSD memungkinkan pengguna untuk memodifikasi dan mendistribusikan ulang kode sumber terbuka, dan juga memungkinkan pengembangan dan penjualan perangkat lunak berbasis komersial. pada kode sumber terbuka, dan Dapat membuat perangkat lunak/perangkat keras baru tanpa batasan.
kesederhanaan
Setelah pengembangan selama beberapa dekade, dokumen arsitektur x86 dan ARM telah mencapai ribuan halaman, yang hampir membutuhkan waktu hampir satu bulan bagi seorang insinyur untuk membacanya, sedangkan membaca dokumen RISC-V hanya membutuhkan waktu 1 hingga 2 hari.
Hal ini karena RISC-V hanya memilih set instruksi yang paling umum digunakan dan kemudian secara khusus mengoptimalkannya. Sedangkan untuk instruksi yang tidak umum, instruksi tersebut dapat diselesaikan dengan menggabungkan beberapa instruksi dasar, yang dapat meningkatkan efisiensi secara signifikan. Oleh karena itu, dengan alasan menyediakan fungsi yang sama, set instruksi RISC-V lebih mudah diimplementasikan dan dapat menghindari bug dibandingkan set instruksi x86 dengan ribuan instruksi.
Misalnya, jika kita menggunakan x86, maka kita harus membeli seluruh supermarket untuk menikmati barang yang kita butuhkan; tetapi RISC-V adalah supermarket tempat Anda dapat membeli barang satu per satu, dan pelanggan hanya perlu memilih barang yang mereka perlukan bayar saja.
Modular
RISC-V menggunakan inti yang disederhanakan dan menggunakan mekanisme modular untuk menyediakan pengaturan set instruksi yang lebih luas.
luasnya dukungan
Kompiler seperti GCC dan LLVM mendukung set instruksi RISC-V, dan backend Go untuk RISC-V juga sedang dalam pengembangan.
kematangan
Set instruksi inti RISC-V akhirnya dikonfirmasi dan diperbaiki, dan semua implementasi RISC-V di masa depan harus kompatibel. Selain itu, set instruksi RISC-V telah diimplementasikan pada perangkat keras dan telah diverifikasi dalam skenario aplikasi nyata, serta tidak ada potensi risiko yang ada pada set instruksi lain yang kurang mendukung.
Saat CKB-VM bertemu RISC-V
CKB adalah lapisan dasar Jaringan Nervos, dan tujuannya adalah untuk memberikan keamanan dan desentralisasi yang memadai untuk aplikasi lapisan atas. Dalam proses meneliti dan memilih CKB-VM, kami berulang kali memikirkan: Fitur apa saja yang harus dimiliki CKB-VM?
Jelasnya, agar mesin virtual dapat digunakan pada blockchain, ada dua karakteristik utama yang harus dipenuhi:
1. Determinisme: Untuk program dan masukan tetap, mesin virtual harus selalu mengembalikan hasil keluaran tetap, dan hasilnya tidak akan berubah karena waktu, lingkungan operasi, dan kondisi eksternal lainnya;
2. Keamanan: Menjalankan mesin virtual tidak akan mempengaruhi pengoperasian platform itu sendiri.
Namun ketentuan ini hanya bersifat wajib, dan kami berharap dapat merancang mesin virtual yang dapat memenuhi tujuan CKB dengan lebih baik. Setelah mempertimbangkan dengan cermat, kami yakin bahwa mesin virtual tersebut harus memenuhi karakteristik berikut:
fleksibilitas
Tujuan kami adalah merancang mesin virtual yang cukup fleksibel untuk dioperasikan dalam jangka waktu lama sehingga CKB dapat mengimbangi perkembangan kriptografi. Sejarah kriptografi adalah pertarungan abadi antara "memegang pedang" dan "mendobrak tembok": dalam sejarah perkembangan kriptografi selama ribuan tahun, enkripsi dan dekripsi adalah kompetisi intelektual yang tiada akhir akan sama di masa depan. Beberapa algoritma enkripsi yang cocok untuk saat ini, seperti secp256k1, mungkin akan menjadi usang di masa depan; algoritma dan teknologi baru yang lebih berharga (seperti Schnorr atau tanda tangan pasca-kuantum, dll.) akan terus bermunculan di masa depan. Program yang berjalan pada mesin virtual blockchain harus dapat menggunakan algoritme baru dengan lebih bebas dan nyaman, dan pada saat yang sama, algoritme usang tersebut harus dihilangkan secara alami.
Untuk memudahkan pemahaman, kami menggunakan Bitcoin sebagai contoh. Saat ini, Bitcoin menggunakan SIGHASH untuk tanda tangan transaksi dan menggunakan algoritma hashing SHA-256 dalam protokol konsensus. Jadi bisakah kita memastikan bahwa pendekatan SIGHASH yang digunakan oleh Bitcoin akan tetap menjadi pilihan terbaik dalam beberapa tahun? Atau, dengan meningkatnya daya komputasi, apakah SHA-256 masih cocok sebagai algoritma hash yang stabil? Untuk semua protokol blockchain yang saat ini kami pelajari, jika algoritma enkripsi perlu ditingkatkan, hard fork pasti akan diperlukan. Saat mendesain CKB, kami ingin mengeksplorasi cara mengurangi kemungkinan hard fork melalui desain VM.
Kami berpikir, dapatkah mesin virtual mengizinkan peningkatan algoritma enkripsi? Atau, apakah mungkin menambahkan logika validasi transaksi baru ke VM? Misalnya, saat masih menggunakan secp256k1, jika ada insentif ekonomi atau perlu memperbarui algoritme, dapatkah kita menerapkan algoritme verifikasi tanda tangan yang lebih efisien tanpa forking? Atau, jika seseorang menemukan cara untuk menerapkan algoritma yang lebih baik pada CKB, atau perlu memperkenalkan algoritma enkripsi baru, dapatkah kami memastikan bahwa dia dapat menerapkannya dengan bebas?
Kami berharap CKB-VM dapat memberikan lebih banyak ruang implementasi kepada semua orang, memaksimalkan fleksibilitas, dan memungkinkan pengguna menggunakan algoritma enkripsi baru tanpa menunggu hard fork.
transparansi operasional
Setelah meneliti generasi VM blockchain saat ini, kami melihat adanya masalah, dengan tetap mengambil Bitcoin sebagai contoh: lapisan VM Bitcoin hanya menyediakan tumpukan, dan tumpukan tidak dapat mengetahui apa yang dapat disimpan di tumpukan selama eksekusi , adalah masalah yang sama untuk semua VM lain yang diimplementasikan dalam mode tumpukan, meskipun lapisan konsensus dapat memberikan definisi kedalaman tumpukan atau memberikan kedalaman tumpukan secara tidak langsung (berdasarkan panjang instruksi atau batas gas). Hal ini akan memaksa pengembang program di VM untuk menebak keadaan program saat sedang berjalan. Jenis VM ini mencegah program memanfaatkan potensi VM secara maksimal.
Berdasarkan masalah ini, kami percaya bahwa menentukan batas semua sumber daya selama operasi VM, termasuk batas gas dan ukuran ruang tumpukan, harus menjadi prioritas, dan mengizinkan program yang berjalan di VM untuk menanyakan penggunaan sumber daya VM ke Algoritma yang berbeda digunakan berdasarkan ketersediaan sumber daya. Dengan desain ini, program dapat memanfaatkan potensi penuh dari VM. Dan dalam skenario berikut, kita dapat melihat lebih banyak fleksibilitas VM:
1. Anda dapat memilih strategi berbeda untuk kontrak pintar yang menyimpan data berdasarkan ruang penyimpanan (Kapasitas Sel) yang tersedia untuk pengguna di CKB. Ketika Kapasitas Sel mencukupi, program dapat langsung menyimpan data untuk mengurangi jumlah siklus CPU yang digunakan (langkah-langkah yang diambil CPU untuk menjalankan instruksi mesin terbatas, program dapat memampatkan data untuk beradaptasi). ke Kapasitas yang lebih kecil dan menggunakan lebih banyak siklus CPU.
2. Mekanisme pemrosesan yang berbeda dapat dipilih untuk kontrak pintar berdasarkan jumlah total data (Data Seluler) yang disimpan oleh pengguna dan ukuran memori yang tersisa. Ketika Data Sel berjumlah sedikit atau sisa memori berjumlah besar, maka seluruh Data Seluler dapat dibaca ke dalam memori untuk diproses. Ketika terdapat sejumlah besar Data Sel atau sedikit memori yang tersisa, setiap operasi hanya dapat membaca sebagian dari memori, mirip dengan operasi pertukaran memori.
3. Untuk beberapa kontrak umum, seperti algoritma hash, metode pemrosesan yang berbeda dapat dipilih berdasarkan jumlah siklus CPU yang disediakan oleh pengguna. Misalnya, keamanan SHA3-256 cukup untuk memenuhi kebutuhan sebagian besar skenario, namun kontrak dapat menggunakan algoritme SHA3-512 untuk memenuhi persyaratan keamanan yang lebih tinggi dengan menggunakan lebih banyak siklus CPU.
Waktu proses di atas kepala
Mekanisme Gas di Mesin Virtual Ethereum (EVM) adalah desain yang sangat jenius. Mekanisme ini dengan elegan memecahkan masalah penutupan dalam skenario aplikasi blockchain (karena Ethereum adalah Turing yang lengkap, pernyataan loop diperbolehkan, tetapi Pernyataan loop tak terbatas dapat dengan mudah menyebabkan masalah penutupan. Mekanisme gas membatasi jumlah penghitungan maksimum suatu blok, sehingga menghindari masalah ini) dan memungkinkan program melakukan penghitungan pada mesin virtual yang sepenuhnya terdesentralisasi. Namun, kami menemukan bahwa sangat sulit untuk merancang metode penghitungan Gas yang masuk akal untuk Opcode (operator) yang berbeda di EVM. EVM harus menyesuaikan mekanisme penghitungan Gas hampir setiap kali diperbarui (tingkat abstraksi EVM relatif lebih tinggi, satu Instruksi EVM mungkin sesuai dengan beberapa instruksi perangkat keras yang mendasarinya. Saat menjalankan program, jumlah data yang diproses dan kompleksitas komputasi hanya dapat dinilai melalui estimasi, sehingga EVM perlu terus menyesuaikan mekanisme perhitungan Gas).
Oleh karena itu, kami bertanya-tanya: Dapatkah desain VM digunakan untuk memastikan bahwa metode penghitungan konsumsi sumber daya saat program berjalan lebih masuk akal dan akurat?
Kami berharap menemukan desain VM yang memberikan semua kemampuan di atas, namun ternyata tidak ada solusi siap pakai yang dapat mencapai visi kami untuk CKB. Oleh karena itu, kami memutuskan untuk mendesain ulang VM yang dapat memenuhi seluruh karakteristik di atas untuk lebih mewujudkan visi CKB.
Meskipun set instruksi lain mungkin memiliki beberapa fitur yang sama, dalam evaluasi kami, set instruksi RISC-V adalah satu-satunya yang memiliki semuanya.
Oleh karena itu, kami akhirnya memilih untuk mengimplementasikan CKB-VM menggunakan set instruksi RISC-V.
Bacaan yang disarankan:
1. Setelah menunggu dan mengamati, menguji keadaan, dan melangkah ke dalam perangkap, RISC-V telah berdiri di batu loncatan untuk memasuki zaman keemasan.
2. RISC-V benar-benar menjadi kenyataan, dan kecepatannya sedikit di luar imajinasi.
3. Saat CKB-VM bertemu RISC-V—Kelahiran CKB-VM
https://talk.nervos.org/t/ckb-vm-risc-v-ckb-vm/1667
4. Lahirnya CKB-VM, mesin virtual blockchain berbasis RISC-V (1)
https://talk.nervos.org/t/risc-v-ckb-vm/1726
5. Inspirasi, desain dan kelebihan – lahirnya CKB-VM (2)
https://talk.nervos.org/t/ckb-vm/1730
6. Cara bermain gembira di CKB-VM - Lahirnya CKB-VM (3)
https://talk.nervos.org/t/ckb-vm-ckb-vm/1765
7. Pertanyaan inti Zaki Manian: Mesin virtual Blockchain, mana yang lebih cocok, WASM atau RISC-V?
https://talk.nervos.org/t/zaki-manian-wasm-risc-v/463
