Elegance návrhu RISC-V nespočívá jenom v tom, že jde o otevřenou architekturu, ale že se od začátku počítá s tím, že bude modulární. Zatímco x86 má více než tisíc instrukcí a ARM jich má stovky, minimální návrh RISC-V má všehovšudy 40 instrukcí s tím, že pokud jich výrobce chce víc, použije instrukční rozšíření (extensions).
Samotné minimální instrukční jádro (instrukční báze) je maličké a podporuje matematiku pouze v celočíselné formě (integer). Specifikace rozeznává čtyři různé instrukční báze: RV32I, RV32E, RV64I a RV128I, kde „I“ označuje právě celočíselnou matematiku (integer) a číslo udává šířku adresové sběrnice, která může mít 32, 64 a nebo v budoucnosti i 128 bitů (nutnost používat paměťové sběrnice o šířce větší než 64 bitů se očekává kolem roku 2030). RV32E je návrh speciálně určený právě pro mikrokontroléry (embedded), který je ještě zmenšený a místo 32 pracovních registrů jich má pouze 16 a také nemusí podporovat časovače: Cílem je opravdu jen naprosté minimum, aby si tvůrci kontrolérů mohli přidat jenom ty funkce, které opravdu potřebují.
Báze dávají procesorům jenom skutečně naprosto základní funkce, které mají být doplněny pomocí rozšíření (extensions). Rozšíření jsou specifikována písmeny, která vyjadřují jejich význam: F označuje instrukce pro práci v plovoucí řádové čárce (Floating Point), D pro výpočty s dvojitou přesností (Double-precision Floating Point) a Q pro práci se čtyřnásobnou přesností (Quad-precision Floating Point). Některé z těchto extenzí jsou už uzavřené (frozen), o dalších se jedná a některé extenze jsou připraveny pro budoucí rozšíření, například extenze J je určena pro budoucí podporu dynamicky překládaných jazyků. Mimo tyto otevřeně specifikované extenze (standard extensions) může mít konkrétní model procesoru ještě svoje vlastní atypické instrukce (non standard extensions), které „mohou být vysoce specializované a mohou kolidovat s jinými rozšířeními“. Tato rozšíření si každý výrobce může dělat na míru pro svoje vlastní využití.
Každý RISC-V procesor je schopen programu sdělit, které extenze podporuje. V případě už uzavřených (frozen) extenzí podpora pro danou extenzi znamená, že procesor musí podporovat všechny instrukce z dané třídy. V případě, že program pošle procesoru instrukci, kterou neumí zpracovat (illegal instruction, unsupported instruction), nastane výjimka (trap), kterou může operační systém vyřešit tak, že nekompatibilní program ukončí, ale také může danou nepodporovanou instrukci emulovat v softwaru. Emulace chybějících instrukcí je sice pomalá, ale v mnoha aplikacích to může dávat smysl.
Specifikace je tedy navržená „zdola nahoru“ a „je nafukovací“, což je přesný opak filozofie jiných architektur, kde se typicky jenom přidávají další a další instrukce a opravdu jen vzácně se instrukce odstraňují. Další rozdíl je v tom, že u současných systémů architekt procesoru určuje instrukce a výrobce si architekturu upravuje většinou tak, že tam přidává svoje další věci. U RISC-V si celou architekturu může navrhnout výrobce konkrétního procesoru a nebo mikrokontroléru úplně sám od základů – a nemusí nikoho žádat o svolení.
Celá specifikace instrukčního setu (User Level ISA) je zdarma k dispozici ke stažení z webu risc.org.

Michal Rybka
Michal Rybka je publicista a nadšenec s 20 lety zkušeností v IT a gamingu. Je kurátorem AlzaMuzea a YouTube kanálu AlzaTech. Napsal několik fantasy a sci-fi povídek, které vyšly v knižní podobě, a pravidelně pokrývá páteční obsah na internetovém magazínu PCTuning.