2. března na první ekologické konferenci Xuantie RISC-V pořádané Ali Pingtou, David Patterson, otec vítěze RISC-V a Turingovy ceny, s důvěrou řekl.

Od uvedení na 10 miliard procesorů trvala architektura x86 Intelu desítky let, ARM 17 let a RISC-V jen asi 10 let, což je v historii vývoje čipové architektury bezprecedentní.

Některá data předpovídají, že do roku 2025 počet procesorů využívajících architekturu RISC-V překročí 80 miliard. V oblasti IoT se předpokládá, že do roku 2025 bude RISC-V zabírat 28 % trhu.

Takže, co je RISC-V? (Následující obsah je převážně odvozen ze série článků „Zrození CKB-VM“)

Úvod do RISC-V

RISC-V je jasná, jednoduchá architektura instrukční sady CPU s otevřeným zdrojovým kódem, zrozená na Kalifornské univerzitě v Berkeley.

V roce 2010, kvůli omezením jiných komerčních uzavřených výukových sad, výzkumný tým ve škole navrhl novou výukovou sadu s otevřeným zdrojovým kódem od začátku při zahájení nového projektu. Tato nová instrukční sada má velký počet registrů a transparentní rychlost provádění instrukcí, což může pomoci kompilátorům a programátorům v assembleru převést praktické a důležité problémy do vhodného, ​​efektivního kódu a obsahuje méně než 50 instrukcí.

Tato instrukční sada je RISC-V, takže RISC-V je velmi mladá instrukční sada.

Jaké jsou tedy hlavní instrukční sady před tímto?

V éře PC je x86 neotřesitelným vládcem x86 je CISC (Complex Instruction Set Computer), který se liší od RISC (Reduced Instruction Set Computer) Počet instrukčních sad CISC s vývojem neustále roste. To způsobí, že náklady budou nadále růst a bude ovlivněn výkon a spotřeba energie. Navíc délka sady instrukcí CISC a doba provádění nejsou pevně dané, což ztěžuje nalezení efektivní univerzální cesty návrhu pro dokončení provádění instrukcí.

Po popularitě chytrých telefonů se ARM stal miláčkem mobilních terminálů. ARM je redukovaná instrukční sada (RISC) s nízkou spotřebou energie a nízkými náklady. Aby však byla zachována zpětná kompatibilita, ARM potřebuje zachovat mnoho zastaralých definic, což má za následek značnou redundanci instrukční sady, což činí dokumentaci architektury ARM stále složitější výš a výš.

V současném monopolu x86 a ARM přinesl RISC-V na trh novou vitalitu.

Cílem RISC-V je poskytnout společnou architekturu instrukční sady CPU pro podporu vývoje systémových architektur nové generace bez zatížení staršími architektonickými problémy po desetiletí.

RISC-V dokáže splnit implementační požadavky od malých mikroprocesorů s nízkou spotřebou až po vysoce výkonné procesory pro datová centra (DC). Ve srovnání s jinými instrukčními sadami CPU má instrukční sada RISC-V následující výhody:

Transparentnost (open source)

ARM a x86 jsou oba projekty s uzavřeným zdrojovým kódem a licenční podmínky jsou extrémně tvrdé: Intel nedovoluje žádné společnosti kromě AMD a VIA používat instrukční sadu x86, získání licence na instrukční sadu ARM může vyžadovat desítky milionů dolarů; licenční poplatky budou účtovány a po vypršení platnosti oprávnění bude nutné znovu projednat oprávnění.

RISC-V je skutečný open source projekt, v oblasti hardwaru známý jako Linux. Ve skutečnosti původním záměrem profesora Davida Pattersona, profesora Krste Asanovic, Andrewa Watermana a Yunsupa Lee, kteří vynalezli RISC-V, bylo „Instrukční sady chtějí být svobodné“, a každá společnost, univerzita, výzkumná instituce a jednotlivec po celém světě může vývoj RISC kompatibilní Procesory s instrukční sadou -V lze integrovat do softwarového a hardwarového ekosystému postaveného na RISC-V.

RISC-V používá smlouvu s otevřeným zdrojovým kódem BSD License (jedna z nejrozšířenějších licenčních smluv ve svobodném softwaru). na otevřeném zdrojovém kódu a může vytvářet nový software/hardware bez omezení.

jednoduchost

Po desetiletích vývoje dosáhly dokumenty o architektuře x86 a ARM tisíce stránek, jejichž čtení trvá inženýrovi téměř měsíc, zatímco čtení dokumentů RISC-V trvá pouze 1 až 2 dny.

RISC-V totiž pouze vybírá nejčastěji používané instrukční sady a následně je specificky optimalizuje. Pokud jde o neobvyklé instrukce, lze je doplnit kombinací několika základních instrukcí, což může výrazně zvýšit efektivitu. Proto za předpokladu poskytování stejných funkcí je instrukční sada RISC-V snadněji implementovatelná a může se vyhnout chybám než instrukční sada x86 s tisíci instrukcemi.

Pokud například používáme x86, musíme si koupit celý supermarket, abychom si mohli užít položky, které potřebujeme, ale RISC-V je supermarket, kde si můžete koupit položky jednotlivě a zákazníci si musí vybrat pouze položky, které potřebují jen to zaplatit.

Modulární

RISC-V využívá zjednodušené jádro a využívá modulární mechanismus k poskytování rozšířenějšího nastavení instrukční sady.

šíře podpory

Kompilátory jako GCC a LLVM podporují instrukční sadu RISC-V a ve vývoji je také backend Go pro RISC-V.

splatnost

Instrukční sada jádra RISC-V byla konečně potvrzena a opravena a všechny budoucí implementace RISC-V musí být zpětně kompatibilní. Instrukční sada RISC-V byla navíc hardwarově implementována a ověřena v reálných aplikačních scénářích a neexistují žádná potenciální rizika, která existují v jiných instrukčních sadách s menší podporou.

Když CKB-VM splňuje RISC-V

CKB je základní vrstvou Nervos Network a jejím cílem je poskytnout dostatečné zabezpečení a decentralizaci pro aplikace vyšší vrstvy. V procesu zkoumání a výběru CKB-VM jsme opakovaně přemýšleli o: Jaké vlastnosti by CKB-VM mělo mít?

Je zřejmé, že pro použití virtuálního stroje na blockchainu existují dvě klíčové vlastnosti, které musí být v každém případě splněny:

1. Determinismus: U pevných programů a vstupů musí virtuální stroj vždy vracet pevné výstupní výsledky a výsledky se nemění v závislosti na čase, operačním prostředí a dalších vnějších podmínkách;

2. Zabezpečení: Spuštění virtuálního stroje neovlivní provoz samotné platformy.

Tyto podmínky jsou však pouze povinné a doufáme, že navrhneme virtuální stroj, který bude lépe sloužit cílům CKB. Po pečlivém zvážení se domníváme, že takový virtuální stroj by měl splňovat následující vlastnosti:

flexibilita

Naším cílem je navrhnout virtuální stroj, který je dostatečně flexibilní, aby fungoval po dlouhou dobu, aby CKB mohla držet krok s vývojem kryptografie. Historie kryptografie je věčným bojem mezi „držením meče“ a „prolomením zdi“: v historii vývoje kryptografie po tisíce let je šifrování a dešifrování nekonečnou intelektuální soutěží bude to stejné i v budoucnu. Některé šifrovací algoritmy, které jsou vhodné pro dnešek, jako je secp256k1, mohou být v budoucnu zastaralé; hodnotnější nové algoritmy a technologie (jako Schnorr nebo post-kvantové podpisy atd.) se budou objevovat i v budoucnu. Programy běžící na virtuálním stroji blockchainu by měly být schopny používat nové algoritmy volněji a pohodlněji a zároveň by tyto zastaralé algoritmy měly být přirozeně odstraněny.

Pro usnadnění porozumění používáme jako příklad bitcoin. V současné době Bitcoin používá SIGHASH pro transakční podpisy a používá SHA-256 hashovací algoritmus v konsensuálním protokolu. Můžeme tedy zajistit, že tento přístup SIGHASH používaný Bitcoinem bude i za pár let stále tou nejlepší volbou? Nebo je s rostoucím výpočetním výkonem SHA-256 stále vhodný jako stabilní hashovací algoritmus? Pro všechny blockchainové protokoly, které v současné době studujeme, pokud je třeba upgradovat šifrovací algoritmus, bude nevyhnutelně vyžadován hard fork. Při navrhování CKB jsme chtěli prozkoumat, jak snížit možnost pevných vidlic prostřednictvím návrhu VM.

Přemýšlíme, může virtuální stroj umožnit upgrade šifrovacího algoritmu? Nebo je možné do virtuálního počítače přidat novou logiku ověřování transakcí? Například, když stále používáme secp256k1, pokud existují ekonomické pobídky nebo potřeba aktualizovat algoritmus, můžeme implementovat efektivnější algoritmus ověřování podpisu bez rozvětvení? Nebo pokud někdo najde způsob, jak implementovat lepší algoritmus na CKB, nebo potřebuje zavést nový šifrovací algoritmus, můžeme zajistit, že jej bude moci implementovat volně?

Doufáme, že CKB-VM může každému poskytnout více implementačního prostoru, maximalizovat flexibilitu a umožnit uživatelům používat nové šifrovací algoritmy bez čekání na hard forky.

provozní transparentnost

Po prozkoumání současné generace blockchainových virtuálních počítačů jsme si všimli problému, stále si bereme bitcoiny jako příklad: bitcoinová VM vrstva poskytuje pouze zásobník a zásobník nemůže vědět, co může být uloženo na zásobníku během provádění , je stejný problém pro všechny ostatní virtuální počítače implementované v režimu zásobníku, i když konsenzuální vrstva může poskytnout definici hloubky zásobníku nebo poskytnout hloubku zásobníku nepřímo (na základě délky instrukce nebo limitů plynu). To donutí vývojáře programu na virtuálním počítači odhadnout stav programu, když je spuštěn. Tento typ virtuálního počítače brání programu v plném využití plného potenciálu virtuálního počítače.

Na základě tohoto problému se domníváme, že by mělo být prioritou definovat limity všech zdrojů během provozu virtuálního počítače, včetně limitů plynu a velikosti zásobníku, a umožnit programům spuštěným na virtuálním počítači dotazovat se na využití prostředků. To umožní spuštěným programům VM na různé algoritmy se používají na základě dostupnosti zdrojů. S tímto návrhem mohou programy využít plný potenciál virtuálního počítače. A v následujících scénářích můžeme vidět větší flexibilitu VM:

1. Můžete si vybrat různé strategie pro chytré smlouvy, které ukládají data na základě úložného prostoru (Cell Capacity), který mají uživatelé na CKB k dispozici. Když je kapacita buňky dostatečná, program může přímo ukládat data, aby se snížil počet použitých cyklů CPU (kroky, které CPU provádí při provádění strojové instrukce, když je kapacita buňky omezena, může program komprimovat data, aby se přizpůsobil). na menší kapacitu a použít více Mnoho cyklů CPU.

2. Pro smart kontrakt lze zvolit různé mechanismy zpracování na základě celkového množství dat (Cell Data) uložených uživatelem a velikosti zbývající paměti. Pokud je k dispozici malé množství dat buňky nebo velké množství zbývající paměti, lze všechna data buňky načíst do paměti pro zpracování. Pokud existuje velké množství dat buňky nebo málo zbývající paměti, každá operace může číst pouze část paměti, podobně jako operace odkládání paměti.

3. Pro některé běžné smlouvy, jako jsou hashovací algoritmy, lze vybrat různé metody zpracování na základě počtu cyklů CPU poskytnutých uživatelem. Například zabezpečení SHA3-256 je dostatečné pro splnění potřeb většiny scénářů, avšak smlouva může využívat algoritmus SHA3-512 ke splnění vyšších bezpečnostních požadavků použitím více cyklů CPU.

Režie za běhu

Mechanismus Gas ve virtuálním stroji Ethereum (EVM) je velmi geniální design a elegantně řeší problém s vypínáním ve scénářích blockchainových aplikací (protože Ethereum je Turing kompletní, jsou povoleny příkazy ve smyčce, ale příkazy s nekonečnými smyčkami mohou snadno způsobit problémy s vypínáním. Plynový mechanismus omezuje maximální výpočetní množství bloku, čímž se tomuto problému vyhne) a umožňuje programu provádět výpočty na zcela decentralizovaném virtuálním stroji. Zjistili jsme však, že je velmi obtížné navrhnout rozumnou metodu výpočtu plynu pro různé operační kódy (operátory) v EVM musí upravit mechanismus výpočtu plynu téměř pokaždé, když je aktualizován (úroveň abstrakce EVM je relativně vyšší, jedna. Instrukce EVM může odpovídat několika základním hardwarovým instrukcím Při provádění programu lze množství zpracovávaných dat a výpočetní složitost ocenit pouze odhadem, takže EVM musí neustále upravovat mechanismus výpočtu plynu).

Proto nás zajímalo: Může být návrh virtuálního počítače použit k zajištění toho, že metoda výpočtu spotřeby zdrojů, když je program spuštěn, bude rozumnější a přesnější?

Doufali jsme, že najdeme návrh virtuálního počítače, který by poskytoval všechny výše uvedené možnosti, ale zjistili jsme, že neexistuje žádné hotové řešení, které by mohlo splnit naši vizi CKB. Proto jsme se rozhodli přepracovat VM, který by mohl splňovat všechny výše uvedené charakteristiky, abychom lépe realizovali vizi CKB.

Zatímco jiné instrukční sady mohou sdílet některé z těchto funkcí, v našem hodnocení je instrukční sada RISC-V jediná, která je má všechny.

Proto jsme se nakonec rozhodli implementovat CKB-VM pomocí instrukční sady RISC-V.

Doporučená četba:

1. Po čekání a sledování, testování vod a vkročení do nástrah se RISC-V postavil na odrazový můstek ke vstupu do zlatého věku.

2. RISC-V se skutečně stalo realitou a rychlost je tak trochu mimo představivost.

3. Když se CKB-VM setká s RISC-V——Zrození CKB-VM

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

4. Zrození CKB-VM, blockchainového virtuálního stroje založeného na RISC-V (1)

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

5. Inspirace, design a výhody - zrod CKB-VM (2)

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

6. Jak hrát šťastně na CKB-VM - Zrození CKB-VM (3)

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

7. Zásadní otázka Zakiho Maniana: Blockchainový virtuální stroj, který je vhodnější, WASM nebo RISC-V?

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