2. martā pirmajā Ali Pingtou rīkotajā Xuantie RISC-V ekoloģiskajā konferencē Deivids Patersons, RISC-V tēvs un Tjūringa balvas ieguvējs, ar pārliecību sacīja.

No tā ieviešanas līdz 10 miljardiem procesoru Intel x86 arhitektūra prasīja gadu desmitus, ARM — 17 gadus, bet RISC-V tikai aptuveni 10 gadus, kas ir vēl nebijis gadījums mikroshēmu arhitektūras attīstības vēsturē.

Daži dati paredz, ka līdz 2025. gadam procesoru skaits, kas izmanto RISC-V arhitektūru, pārsniegs 80 miljardus IoT jomā tiek prognozēts, ka līdz 2025. gadam RISC-V aizņems 28% tirgus.

Tātad, kas ir RISC-V? (Sekojošais saturs galvenokārt ir atvasināts no rakstu sērijas "CKB-VM dzimšana")

Ievads RISC-V

RISC-V ir skaidra, vienkārša, atvērtā koda CPU instrukciju kopas arhitektūra, kas dzimusi Kalifornijas Universitātē Bērklijā.

2010. gadā citu komerciālo slēgtā koda instrukciju komplektu ierobežojumu dēļ skolas pētnieku grupa, uzsākot jaunu projektu, no jauna izstrādāja jaunu atvērtā koda instrukciju komplektu. Šai jaunajai instrukciju kopai ir liels reģistru skaits un caurspīdīgs instrukciju izpildes ātrums, kas var palīdzēt kompilatoriem un montāžas valodas programmētājiem pārvērst praktiskas un svarīgas problēmas atbilstošā, efektīvā kodā, un tajā ir mazāk par 50 instrukcijām.

Šī instrukciju kopa ir RISC-V, tāpēc RISC-V ir ļoti jauna instrukciju kopa.

Tātad, kādas ir galvenās instrukciju kopas pirms šī?

PC laikmetā x86 ir CISC (Complex Instruction Set Computer), kas atšķiras no RISC (Reduced Instruction Set Computer). CISC instrukciju kopu skaits turpina pieaugt. Tādējādi izmaksas turpinās pieaugt, kā arī tiks ietekmēta veiktspēja un enerģijas patēriņš. Turklāt CISC instrukciju kopas garums un izpildes laiks nav fiksēts, tāpēc ir grūti atrast efektīvu universāla dizaina ceļu, lai pabeigtu instrukciju izpildi.

Pēc viedtālruņu popularitātes ARM ir kļuvis par mobilā termināļa mīluli. ARM ir samazināta instrukciju kopa (RISC) ar zemu enerģijas patēriņu un zemām izmaksām. Tomēr, lai saglabātu atpakaļejošu saderību, ARM ir jāsaglabā daudzas novecojušas definīcijas, kā rezultātā rodas nopietna instrukciju kopa, kas padara ARM arhitektūras dokumentāciju sarežģītu augstāk un augstāk.

Pašreizējā x86 un ARM monopolā RISC-V ir ienesis tirgū jaunu vitalitāti.

RISC-V mērķis ir nodrošināt kopēju CPU instrukciju kopas arhitektūru, lai atbalstītu nākamās paaudzes sistēmu arhitektūru izstrādi, neapgrūtinot mantotās arhitektūras problēmas turpmākajās desmitgadēs.

RISC-V var izpildīt ieviešanas prasības no mazjaudas maziem mikroprocesoriem līdz augstas veiktspējas datu centra (DC) procesoriem. Salīdzinot ar citām CPU instrukciju kopām, RISC-V instrukciju kopai ir šādas priekšrocības:

Pārredzamība (atvērtā koda)

ARM un x86 ir slēgta pirmkoda projekti, un licencēšanas nosacījumi ir ārkārtīgi bargi: Intel neļauj nevienam uzņēmumam, izņemot AMD un VIA, izmantot x86 instrukciju kopu, lai iegūtu ARM instrukciju kopas licenci, var būt nepieciešami desmitiem miljonu dolāru Licencēšanas maksa tiks iekasēta, un pēc atļaujas derīguma termiņa beigām autorizācija būs jāpārrunā.

RISC-V ir īsts atvērtā pirmkoda projekts, kas aparatūras jomā pazīstams kā Linux. Faktiski RISC-V izgudrotāju profesora Deivida Patersona, profesora Krste Asanoviča, Endrjū Votermena un Junsups Lī sākotnējais nolūks bija "Instrukciju komplekti vēlas būt bez maksas", un jebkurš uzņēmums, universitāte, pētniecības iestāde un privātpersona visā pasaulē var to darīt. izstrādāt ar RISC saderīgus procesorus ar -V instrukciju kopu var integrēt programmatūras un aparatūras ekosistēmā, kas veidota uz RISC-V.

RISC-V izmanto BSD licences līgumu (viens no visplašāk izmantotajiem bezmaksas programmatūras licences līgumiem BSD atvērtā pirmkoda līgums ļauj lietotājiem modificēt un izplatīt atvērtā pirmkoda kodu, kā arī ļauj izstrādāt un pārdot komerciālu programmatūru). uz atvērtā pirmkoda, un var izveidot jaunu programmatūru/aparatūru bez ierobežojumiem.

vienkāršība

Pēc gadu desmitiem ilgas izstrādes x86 un ARM arhitektūras dokumenti ir sasnieguši tūkstošiem lappušu, kuru lasīšana inženierim aizņem gandrīz mēnesi, savukārt RISC-V dokumentu lasīšana aizņem tikai 1 līdz 2 dienas.

Tas ir tāpēc, ka RISC-V atlasa tikai visbiežāk izmantotās instrukciju kopas un pēc tam tās īpaši optimizē. Kas attiecas uz neparastām instrukcijām, tās var pabeigt, apvienojot vairākas pamata instrukcijas, kas var ievērojami uzlabot efektivitāti. Tāpēc, pamatojoties uz to pašu funkciju nodrošināšanu, RISC-V instrukciju kopu ir vieglāk ieviest, un tā var izvairīties no kļūdām nekā x86 instrukciju kopa ar tūkstošiem instrukciju.

Piemēram, ja mēs izmantojam x86, mums ir jāiegādājas viss lielveikals, lai izbaudītu mums nepieciešamās preces, bet RISC-V ir lielveikals, kurā varat iegādāties preces atsevišķi, un klientiem ir jāizvēlas tikai vajadzīgās preces vienkārši maksājiet par to.

Moduļu

RISC-V izmanto vienkāršotu kodolu un modulāru mehānismu, lai nodrošinātu plašākus instrukciju kopas iestatījumus.

atbalsta plašums

Kompilatori, piemēram, GCC un LLVM, atbalsta RISC-V instrukciju kopu, un tiek izstrādāta arī Go aizmugursistēma RISC-V.

briedums

RISC-V pamata instrukciju kopa ir beidzot apstiprināta un izlabota, un visām turpmākajām RISC-V ieviešanām ir jābūt atpakaļsaderīgām. Turklāt RISC-V instrukciju kopa ir ieviesta aparatūrā un ir pārbaudīta reālos lietojumprogrammu scenārijos, un nav potenciālu risku, kas pastāv citās instrukciju kopās ar mazāku atbalstu.

Kad CKB-VM atbilst RISC-V

CKB ir Nervos tīkla pamatslānis, un tā mērķis ir nodrošināt pietiekamu drošību un decentralizāciju augšējā slāņa lietojumprogrammām. CKB-VM izpētes un atlases procesā mēs vairākkārt domājām par: Kādām funkcijām vajadzētu būt CKB-VM?

Acīmredzot, lai virtuālo mašīnu izmantotu blokķēdē, ir divas galvenās īpašības, kas jāievēro jebkurā gadījumā:

1. Determinisms: fiksētām programmām un ievadiem virtuālajai mašīnai vienmēr ir jāatgriež fiksēti izvades rezultāti, un rezultāti nemainīsies laika, darbības vides un citu ārējo apstākļu ietekmē;

2. Drošība: virtuālās mašīnas izpilde neietekmēs pašas platformas darbību.

Taču šie nosacījumi ir tikai obligāti, un mēs ceram izveidot virtuālo mašīnu, kas varētu labāk kalpot CKB mērķiem. Pēc rūpīgas apsvēršanas mēs uzskatām, ka šādai virtuālajai mašīnai jāatbilst šādām īpašībām:

elastība

Mūsu mērķis ir izstrādāt virtuālo mašīnu, kas ir pietiekami elastīga, lai darbotos ilgu laiku, lai CKB spētu iet kopsolī ar kriptogrāfijas attīstību. Kriptogrāfijas vēsture ir mūžīga cīņa starp "zobena turēšanu" un "mūra laušanu": kriptogrāfijas attīstības vēsturē tūkstošiem gadu šifrēšana un atšifrēšana ir nebeidzama intelektuāla konkurence tā būs arī turpmāk. Daži mūsdienās piemēroti šifrēšanas algoritmi, piemēram, secp256k1, nākotnē var būt novecojuši vērtīgāki jauni algoritmi un tehnoloģijas (piemēram, Schnorr vai post-quantum signatures u.c.); Programmām, kas darbojas blokķēdes virtuālajā mašīnā, būtu jāspēj brīvāk un ērtāk izmantot jaunos algoritmus, un tajā pašā laikā šie novecojušie algoritmi būtu dabiski jālikvidē.

Lai atvieglotu izpratni, mēs izmantojam Bitcoin kā piemēru. Pašlaik Bitcoin izmanto SIGHASH darījumu parakstiem un izmanto SHA-256 jaukšanas algoritmu konsensa protokolā. Tātad, vai mēs varam nodrošināt, ka šī Bitcoin izmantotā SIGHASH pieeja joprojām būs labākā izvēle pēc dažiem gadiem? Vai, palielinoties skaitļošanas jaudai, SHA-256 joprojām ir piemērots kā stabils jaukšanas algoritms? Visiem blokķēdes protokoliem, kurus mēs pašlaik pētām, ja šifrēšanas algoritms ir jājaunina, neizbēgami būs nepieciešama cietā dakša. Izstrādājot CKB, mēs vēlējāmies izpētīt, kā samazināt cieto dakšu iespējamību, izmantojot VM dizainu.

Mēs domājam, vai virtuālā mašīna var ļaut jaunināt šifrēšanas algoritmu? Vai arī VM ir iespējams pievienot jaunu darījumu validācijas loģiku? Piemēram, vai joprojām izmantojot secp256k1, ja ir ekonomiski stimuli vai nepieciešamība atjaunināt algoritmu, vai mēs varam ieviest efektīvāku paraksta pārbaudes algoritmu bez dakšām? Vai arī, ja kāds atrod veidu, kā ieviest labāku algoritmu CKB, vai ir jāievieš jauns šifrēšanas algoritms, vai mēs varam nodrošināt, ka viņš/viņa var to brīvi ieviest?

Mēs ceram, ka CKB-VM var nodrošināt ikvienam vairāk ieviešanas vietas, palielināt elastību un ļaut lietotājiem izmantot jaunus šifrēšanas algoritmus, negaidot stingras dakšas.

darbības pārredzamība

Izpētot pašreizējās blokķēdes virtuālo mašīnu paaudzi, mēs pamanījām problēmu, joprojām ņemot par piemēru Bitcoin: Bitcoin VM slānis nodrošina tikai steku, un steks nevar zināt, ko izpildes laikā var saglabāt kaudzē , ir tā pati problēma visām pārējām virtuālajām mašīnām, kas ieviestas steka režīmā, lai gan vienprātības slānis var nodrošināt steka dziļuma definīciju vai nodrošināt steka dziļumu netieši (pamatojoties uz instrukcijas garumu vai gāzes ierobežojumiem). Tas liks VM programmu izstrādātājiem uzminēt programmas stāvokli, kad tā darbojas. Šāda veida virtuālā mašīna neļauj programmai pilnībā izmantot visu virtuālās mašīnas potenciālu.

Pamatojoties uz šo problēmu, mēs uzskatām, ka prioritātei vajadzētu būt visu resursu ierobežojumu noteikšanai virtuālās mašīnas darbības laikā, tostarp gāzes ierobežojumu un skursteņa vietas lieluma noteikšanai, un ļaut programmām, kas darbojas virtuālajā mašīnā, pieprasīt resursu izmantošanu VM to Different algoritmi tiek izmantoti, pamatojoties uz resursu pieejamību. Izmantojot šo dizainu, programmas var pilnībā izmantot virtuālās mašīnas potenciālu. Un tālāk norādītajos scenārijos mēs varam redzēt lielāku VM elastību:

1. Varat izvēlēties dažādas stratēģijas viedajiem līgumiem, kas glabā datus, pamatojoties uz CKB lietotājiem pieejamo krātuves vietu (šūnas ietilpību). Ja šūnas ietilpība ir pietiekama, programma var tieši saglabāt datus, lai samazinātu izmantoto CPU ciklu skaitu (darbības, ko CPU veic, lai izpildītu mašīnas instrukciju, ja šūnas ietilpība ir ierobežota, programma var saspiest datus, lai pielāgotos). uz mazāku kapacitāti un izmantot vairāk Daudz CPU ciklu.

2. Viedajam līgumam var izvēlēties dažādus apstrādes mehānismus, pamatojoties uz lietotāja saglabāto datu (Cell Data) kopējo apjomu un atlikušās atmiņas lielumu. Ja ir mazs šūnu datu apjoms vai liels atlikušās atmiņas apjoms, visus šūnu datus var nolasīt atmiņā apstrādei. Ja ir liels šūnu datu apjoms vai maz atlikušās atmiņas, katra darbība var nolasīt tikai daļu atmiņas, līdzīgi kā atmiņas maiņas darbība.

3. Dažiem izplatītiem līgumiem, piemēram, jaukšanas algoritmiem, var izvēlēties dažādas apstrādes metodes, pamatojoties uz lietotāja nodrošināto CPU ciklu skaitu. Piemēram, SHA3-256 drošība ir pietiekama, lai apmierinātu vairuma scenāriju vajadzības, tomēr līgumā var izmantot SHA3-512 algoritmu, lai izpildītu augstākas drošības prasības, izmantojot vairāk CPU ciklu.

Izpildes laika pieskaitāmās izmaksas

Gāzes mehānisms Ethereum virtuālajā mašīnā (EVM) ir ļoti ģeniāls dizains. Tas eleganti atrisina izslēgšanas problēmu blokķēdes lietojumprogrammu scenārijos (tā kā Ethereum ir pabeigts Tjūrings, ir atļauti cilpas paziņojumi, bet bezgalīgas cilpas Paziņojumi var viegli izraisīt izslēgšanas problēmas. Gāzes mehānisms ierobežo bloka maksimālo aprēķinu apjomu, tādējādi izvairoties no šīs problēmas) un ļaujot programmai veikt aprēķinus pilnībā decentralizētā virtuālajā mašīnā. Tomēr mēs atklājām, ka ir ļoti grūti izstrādāt saprātīgu gāzes aprēķina metodi dažādiem opkodiem (operatoriem) EVM ir jāpielāgo gāzes aprēķina mehānisms gandrīz katru reizi, kad tas tiek atjaunināts (EVM abstrakcijas līmenis ir salīdzinoši augstāks, par vienu). EVM instrukcija var atbilst vairākām pamatā esošajām aparatūras instrukcijām. Programmas izpildes laikā apstrādāto datu apjomu un skaitļošanas sarežģītību var noteikt tikai, izmantojot aplēses, tāpēc EVM ir nepārtraukti jāpielāgo gāzes aprēķina mehānisms.

Tāpēc mēs jautājām: vai VM dizainu var izmantot, lai nodrošinātu, ka resursu patēriņa aprēķina metode programmas darbības laikā ir saprātīgāka un precīzāka?

Mēs cerējām atrast virtuālās mašīnas dizainu, kas nodrošinātu visas iepriekš minētās iespējas, taču atklājām, ka nav gatavu risinājumu, kas varētu sasniegt mūsu vīziju par CKB. Tāpēc mēs nolēmām pārveidot virtuālo mašīnu, kas varētu atbilst visām iepriekšminētajām īpašībām, lai labāk realizētu CKB vīziju.

Lai gan citām instrukciju kopām var būt dažas no šīm funkcijām, mūsu vērtējumā RISC-V instrukciju kopa ir vienīgā, kurā ir tās visas.

Tāpēc mēs galu galā izvēlējāmies ieviest CKB-VM, izmantojot RISC-V instrukciju kopu.

Ieteicamā literatūra:

1. Pēc gaidīšanas un skatīšanās, ūdeņu pārbaudīšanas un iekļūšanas slazdos, RISC-V ir nostājies uz tramplīna, lai ieietu zelta laikmetā.

2. RISC-V patiešām ir kļuvis par realitāti, un ātrums ir mazliet ārpus iztēles.

3. Kad CKB-VM satiekas ar RISC-V — CKB-VM dzimšana

https://talk.nervos.org/t/ckb-vm-risc-v-ckb-vm/1667

4. CKB-VM — blokķēdes virtuālās mašīnas, kuras pamatā ir RISC-V, dzimšana (1)

https://talk.nervos.org/t/risc-v-ckb-vm/1726

5. Iedvesma, dizains un priekšrocības - CKB-VM dzimšana (2)

https://talk.nervos.org/t/ckb-vm/1730

6. Kā laimīgi spēlēt CKB-VM — CKB-VM dzimšana (3)

https://talk.nervos.org/t/ckb-vm-ckb-vm/1765

7. Zaki Manian pamatjautājums: Blockchain virtuālā mašīna, kura ir piemērotāka, WASM vai RISC-V?

https://talk.nervos.org/t/zaki-manian-wasm-risc-v/463