
Pe 2 martie, la prima conferință ecologică Xuantie RISC-V susținută de Ali Pingtou, a spus cu încredere David Patterson, tatăl RISC-V și câștigătorul premiului Turing.
De la introducerea sa la 10 miliarde de procesoare, a durat zeci de ani arhitectura Intel x86, ARM 17 ani și RISC-V doar aproximativ 10 ani, ceea ce este fără precedent în istoria dezvoltării arhitecturii cip.
Unele date prevăd că până în 2025, numărul de procesoare care utilizează arhitectura RISC-V va depăși 80 de miliarde. În domeniul IoT, se estimează că 28% din piață va fi ocupată de RISC-V până în 2025.
Deci, ce este RISC-V? (Următorul conținut provine în principal din seria de articole „Nașterea CKB-VM”)
Introducere în RISC-V
RISC-V este o arhitectură clară, simplă, open source pentru set de instrucțiuni CPU, născută la Universitatea din California, Berkeley.
În 2010, din cauza limitărilor altor seturi comerciale de instrucțiuni cu sursă închisă, o echipă de cercetare de la școală a proiectat un nou set de instrucțiuni cu sursă deschisă de la zero atunci când începe un nou proiect. Acest nou set de instrucțiuni are un număr mare de registre și o viteză transparentă de execuție a instrucțiunilor, ceea ce poate ajuta compilatorii și programatorii limbajului de asamblare să transforme problemele practice și importante în cod adecvat și eficient și conține mai puțin de 50 de instrucțiuni.
Acest set de instrucțiuni este RISC-V, deci RISC-V este un set de instrucțiuni foarte tânăr.
Deci, care sunt principalele seturi de instrucțiuni înainte de aceasta?
În era PC, x86 este stăpânul de neclintit, x86 este un CISC (Complex Instruction Set Computer), care este diferit de RISC (Reduced Instruction Set Computer). Acest lucru va face ca costurile să continue să crească, iar performanța și consumul de energie vor fi, de asemenea, afectate. Mai mult, lungimea setului de instrucțiuni CISC și timpul de execuție nu sunt fixe, ceea ce face dificilă găsirea unei căi de proiectare universală eficientă pentru a finaliza execuția instrucțiunilor.
După popularitatea smartphone-urilor, ARM a devenit draga terminalului mobil. ARM este un set de instrucțiuni redus (RISC) cu consum redus de energie și costuri reduse din ce in ce mai sus.
În monopolul actual al x86 și ARM, RISC-V a adus o nouă vitalitate pe piață.
Scopul RISC-V este de a oferi o arhitectură comună de set de instrucțiuni CPU pentru a sprijini dezvoltarea arhitecturilor de sistem de generație următoare fără povara problemelor arhitecturale moștenite pentru deceniile următoare.
RISC-V poate îndeplini cerințele de implementare de la microprocesoare mici de putere redusă până la procesoare de înaltă performanță pentru centre de date (DC). În comparație cu alte seturi de instrucțiuni CPU, setul de instrucțiuni RISC-V are următoarele avantaje:
Transparență (sursă deschisă)
ARM și x86 sunt ambele proiecte cu sursă închisă, iar termenii de licență sunt extrem de duri: Intel nu permite nici unei companii, cu excepția AMD și VIA, să folosească setul de instrucțiuni x86, obținerea unei licențe pentru setul de instrucțiuni ARM poate necesita zeci de milioane de dolari; Se vor percepe taxe de licență, iar autorizația va trebui renegociată după expirarea autorizației.
RISC-V este un adevărat proiect open source, cunoscut sub numele de Linux în domeniul hardware. De fapt, intenția inițială a profesorului David Patterson, profesorului Krste Asanovic, Andrew Waterman și Yunsup Lee care au inventat RISC-V a fost să „Seturile de instrucțiuni vor să fie libere”, iar orice companie, universitate, instituție de cercetare și individ din întreaga lume poate Dezvoltarea procesoarelor compatibile cu RISC cu setul de instrucțiuni -V pot fi integrate în ecosistemul software și hardware construit pe RISC-V.
RISC-V folosește acordul de licență open source BSD (unul dintre cele mai utilizate acorduri de licență în software-ul liber Acordul BSD open source permite utilizatorilor să modifice și să redistribuie codul open source și, de asemenea, permite dezvoltarea și vânzarea de software comercial bazat pe). pe cod sursă deschisă și poate crea software/hardware nou fără restricții.
simplitate
După decenii de dezvoltare, documentele de arhitectură ale x86 și ARM au ajuns la mii de pagini, ceea ce durează un inginer aproape o lună pentru a le citi, în timp ce citirea documentelor RISC-V durează doar 1 până la 2 zile.
Acest lucru se datorează faptului că RISC-V selectează doar seturile de instrucțiuni cele mai frecvent utilizate și apoi le optimizează în mod specific În ceea ce privește instrucțiunile neobișnuite, acestea pot fi completate prin combinarea mai multor instrucțiuni de bază, ceea ce poate îmbunătăți foarte mult eficiența. Prin urmare, pe premisa de a oferi aceleași funcții, setul de instrucțiuni RISC-V este mai ușor de implementat și poate evita erorile decât setul de instrucțiuni x86 cu mii de instrucțiuni.
De exemplu, dacă folosim x86, atunci trebuie să cumpărăm un întreg supermarket pentru a ne bucura de articolele de care avem nevoie, dar RISC-V este un supermarket unde puteți cumpăra articole individual, iar clienții trebuie să aleagă doar articolele de care au nevoie plătiți doar pentru asta.
Modular
RISC-V folosește un nucleu simplificat și utilizează un mecanism modular pentru a oferi setări mai extinse pentru set de instrucțiuni.
amploarea sprijinului
Compilatoarele precum GCC și LLVM acceptă setul de instrucțiuni RISC-V, iar backend-ul Go pentru RISC-V este, de asemenea, în curs de dezvoltare.
maturitate
Setul de instrucțiuni de bază RISC-V a fost în sfârșit confirmat și remediat, iar toate implementările viitoare RISC-V trebuie să fie compatibile cu versiunea inversă. În plus, setul de instrucțiuni RISC-V a fost implementat în hardware și a fost verificat în scenarii de aplicații reale și nu există riscuri potențiale care există în alte seturi de instrucțiuni cu mai puțin suport.
Când CKB-VM întâlnește RISC-V
CKB este stratul de bază al rețelei Nervos, iar scopul său este de a oferi suficientă securitate și descentralizare pentru aplicațiile de nivel superior. În procesul de cercetare și selectare a CKB-VM, ne-am gândit în mod repetat la: Ce caracteristici ar trebui să aibă CKB-VM?
Evident, pentru ca o mașină virtuală să fie utilizată pe un blockchain, există două caracteristici cheie care trebuie îndeplinite în orice caz:
1. Determinism: Pentru programe și intrări fixe, mașina virtuală trebuie să returneze întotdeauna rezultate fixe de ieșire, iar rezultatele nu se vor schimba din cauza timpului, a mediului de operare și a altor condiții externe;
2. Securitate: Executarea unei mașini virtuale nu va afecta funcționarea platformei în sine.
Dar aceste condiții sunt doar obligatorii și sperăm să proiectăm o mașină virtuală care să poată servi mai bine obiectivelor CKB. După o analiză atentă, credem că o astfel de mașină virtuală ar trebui să îndeplinească următoarele caracteristici:
flexibilitate
Scopul nostru este să proiectăm o mașină virtuală suficient de flexibilă pentru a funcționa o perioadă lungă de timp, astfel încât CKB să poată ține pasul cu dezvoltarea criptografiei. Istoria criptografiei este o bătălie eternă între „ținerea sabiei” și „spărgerea zidului”: în istoria dezvoltării criptografiei de mii de ani, criptarea și decriptarea sunt o competiție intelectuală nesfârșită, așa a fost și în trecut va fi la fel în viitor. Unii algoritmi de criptare care sunt potriviți pentru astăzi, cum ar fi secp256k1, pot fi învechiți în viitor, algoritmi și tehnologii noi mai valoroase (cum ar fi semnăturile Schnorr sau post-cuantice etc.) vor continua să apară în viitor. Programele care rulează pe mașina virtuală a blockchain-ului ar trebui să poată folosi noi algoritmi mai liber și mai convenabil și, în același timp, acei algoritmi învechiți ar trebui eliminați în mod natural.
Pentru a facilita înțelegerea, folosim Bitcoin ca exemplu. În prezent, Bitcoin folosește SIGHASH pentru semnăturile tranzacțiilor și folosește algoritmul de hashing SHA-256 în protocolul de consens. Deci, ne putem asigura că această abordare SIGHASH folosită de Bitcoin va fi în continuare cea mai bună alegere în câțiva ani? Sau, odată cu creșterea puterii de calcul, SHA-256 este încă potrivit ca algoritm hash stabil? Pentru toate protocoalele blockchain pe care le studiem în prezent, dacă algoritmul de criptare trebuie să fie actualizat, va fi inevitabil necesar un hard fork. Când am proiectat CKB, am vrut să explorăm cum să reducem posibilitatea de furcături dure prin proiectarea VM.
Ne gândim, poate mașina virtuală să permită actualizarea algoritmului de criptare? Sau, este posibil să adăugați o nouă logică de validare a tranzacțiilor la VM? De exemplu, în timp ce încă folosim secp256k1, dacă există stimulente economice sau necesitatea de a actualiza algoritmul, putem implementa un algoritm de verificare a semnăturii mai eficient fără bifurcare? Sau, dacă cineva găsește o modalitate de a implementa un algoritm mai bun pe CKB sau trebuie să introducă un nou algoritm de criptare, ne putem asigura că îl poate implementa liber?
Sperăm că CKB-VM poate oferi tuturor cu mai mult spațiu de implementare, să maximizeze flexibilitatea și să le permită utilizatorilor să utilizeze noi algoritmi de criptare fără a aștepta hard forks.
transparență operațională
După ce am cercetat generația actuală de VM blockchain, am observat o problemă, luând în continuare Bitcoin ca exemplu: stratul VM al Bitcoin oferă doar o stivă, iar stiva nu poate ști ce poate fi stocat pe stivă în timpul execuției sau adâncimea stivei , este aceeași problemă pentru toate celelalte VM implementate în modul stivă, deși stratul de consens poate oferi o definiție a adâncimii stivei sau poate furniza indirect adâncimea stivei (pe baza lungimii instrucțiunii sau a limitelor de gaz). Acest lucru va forța dezvoltatorii de programe de pe VM să ghicească starea programului atunci când rulează. Acest tip de VM împiedică programul să utilizeze pe deplin potențialul VM.
Pe baza acestei probleme, considerăm că ar trebui să fie o prioritate definirea limitelor tuturor resurselor în timpul funcționării VM, inclusiv limitele de gaz și dimensiunea spațiului de stivă, și să permită programelor care rulează pe VM să interogheze utilizarea resurselor. Acest lucru va permite programele care rulează algoritmii VM to Different sunt folosiți pe baza disponibilității resurselor. Cu acest design, programele pot exploata întregul potențial al VM. Și în următoarele scenarii, putem vedea mai multă flexibilitate a VM:
1. Puteți alege diferite strategii pentru contractele inteligente care stochează date în funcție de spațiul de stocare (Cell Capacity) disponibil utilizatorilor pe CKB. Când Capacitatea celulei este suficientă, programul poate stoca direct date pentru a reduce numărul de cicluri CPU utilizate (pașii pe care CPU-ul îi face pentru a executa o instrucțiune a mașinii când Capacitatea celulei este limitată, programul poate comprima datele pentru a se adapta). la Capacitate mai mică și utilizați mai multe Cicluri CPU.
2. Pot fi selectate diferite mecanisme de procesare pentru contractul inteligent pe baza cantității totale de date (Cell Data) stocate de utilizator și a dimensiunii memoriei rămase. Când există o cantitate mică de date celulare sau o cantitate mare de memorie rămasă, toate datele celulare pot fi citite în memorie pentru procesare. Când există o cantitate mare de date celulare sau puțină memorie rămasă, fiecare operație poate citi doar o parte din memorie, similar cu operația de schimbare a memoriei.
3. Pentru unele contracte obișnuite, cum ar fi algoritmii hash, pot fi selectate diferite metode de procesare în funcție de numărul de cicluri CPU furnizate de utilizator. De exemplu, securitatea SHA3-256 este suficientă pentru a satisface nevoile majorității scenariilor, cu toate acestea, contractul poate utiliza algoritmul SHA3-512 pentru a îndeplini cerințele de securitate mai mari prin utilizarea mai multor cicluri CPU.
Timp de execuție
Mecanismul de gaz din mașina virtuală Ethereum (EVM) este un design foarte genial. Rezolvă în mod elegant problema de închidere în scenariile de aplicații blockchain (deoarece Ethereum este complet, instrucțiunile de buclă sunt permise, dar instrucțiunile bucle infinite pot cauza cu ușurință probleme de închidere. Mecanismul de gaz limitează cantitatea maximă de calcul a unui bloc, evitând astfel această problemă) și permițând programului să efectueze calcule pe o mașină virtuală complet descentralizată. Cu toate acestea, am constatat că este foarte dificil să proiectăm o metodă rezonabilă de calcul a gazului pentru diferite opcode (operatori) în EVM EVM trebuie să ajusteze mecanismul de calcul al gazului aproape de fiecare dată când este actualizat (nivelul de abstractizare al EVM este relativ mai mare, unul. Instrucțiunea EVM poate corespunde mai multor instrucțiuni hardware subiacente La executarea programului, cantitatea de date procesate și complexitatea de calcul pot fi evaluate doar prin estimare, astfel încât EVM trebuie să ajusteze continuu mecanismul de calcul al gazului.
Prin urmare, ne-am întrebat: poate fi folosit designul VM pentru a ne asigura că metoda de calcul a consumului de resurse atunci când programul rulează este mai rezonabilă și mai precisă?
Am sperat să găsim un design VM care să ofere toate capabilitățile de mai sus, dar am constatat că nu există o soluție standard care să ne poată realiza viziunea pentru CKB. Prin urmare, am decis să reproiectăm un VM care ar putea îndeplini toate caracteristicile de mai sus pentru a realiza mai bine viziunea CKB.
În timp ce alte seturi de instrucțiuni pot împărtăși unele dintre aceste caracteristici, în evaluarea noastră, setul de instrucțiuni RISC-V este singurul care le are pe toate.
Prin urmare, în cele din urmă, am ales să implementăm CKB-VM folosind setul de instrucțiuni RISC-V.
Lectură recomandată:
1. După ce a așteptat și a privit, a testat apele și a pășit în capcane, RISC-V a stat pe trambulină pentru a intra în epoca de aur.
2. RISC-V a devenit cu adevărat o realitate, iar viteza este puțin peste imaginație.
3. Când CKB-VM întâlnește RISC-V——Nașterea CKB-VM
https://talk.nervos.org/t/ckb-vm-risc-v-ckb-vm/1667
4. Nașterea CKB-VM, o mașină virtuală blockchain bazată pe RISC-V (1)
https://talk.nervos.org/t/risc-v-ckb-vm/1726
5. Inspirație, design și avantaje - nașterea CKB-VM (2)
https://talk.nervos.org/t/ckb-vm/1730
6. Cum să joci fericit pe CKB-VM - Nașterea lui CKB-VM (3)
https://talk.nervos.org/t/ckb-vm-ckb-vm/1765
7. Întrebarea de bază a lui Zaki Manian: mașină virtuală Blockchain, care este mai potrivită, WASM sau RISC-V?
https://talk.nervos.org/t/zaki-manian-wasm-risc-v/463
