← Tornar als articles
Notícies· 3 min de lectura

Com fer servir instruccions personalitzades de RISC-V a Ubuntu

Escritorio de Ubuntu 24.10 (Oracular Oriole) con GNOME
Imagen: Canonical Ltd. / GPL · Wikimedia Commons

Una de les idees que sostenen RISC-V és que no tothom necessita la mateixa CPU. L’arquitectura reserva espai de codificació per a instruccions que queden fora de l’ISA estàndard i de les extensions ratificades, justament perquè els fabricants puguin afegir-ne de pròpies. El 22 de juny de 2026, Jon Taylor va publicar al blog de Canonical un repàs de com encaixa aquesta mena de maquinari amb Ubuntu i on són els límits.

Una instrucció personalitzada és la que un dissenyador de xip afegeix més enllà del que defineix l’estàndard. Els motius solen ser concrets: accelerar operacions criptogràfiques en dispositius encastats, processament d’àudio amb DSP a mida (l’exemple que cita és el SIMD DSP de l’ESP32-P4 d’Espressif), tipus de dades propis per a machine learning amb millor relació rendiment/consum, o controlar acceleradors externs de manera més directa que amb perifèrics mapejats a memòria.

La clau per saber què cal a Ubuntu rau en una distinció tècnica: si la instrucció necessita o no desar estat addicional al processador.

Sense estat: PPAs i prou

Quan una instrucció només processa dades i no afegeix registres ni estat que el sistema operatiu hagi de preservar, no cal tocar el SO. El flux recomanat es recolza en la infraestructura de Launchpad. Distribueixes llibreries precompilades o un toolchain a mida a través de PPAs (Private Package Archives), compiles la teva aplicació contra aquest toolchain i ja està. L’avantatge de fer-ho així és que segueixes rebent els pedaços de seguretat i manteniment de Canonical per a la resta del sistema, a més del guany de rendiment del maquinari personalitzat.

Amb estat: kernel propi, i te’l manté tu

El cas complicat és el de les instruccions que sí que afegeixen estat al processador. Aquí el sistema operatiu ha de poder desar i restaurar aquest estat als canvis de context, així que necessites un kernel a mida. Per això Canonical ofereix un “image cookbook” amb què construir-lo, a més del toolchain i les aplicacions d’espai d’usuari en PPAs.

L’avís és directe i val la pena llegir-lo abans de posar-s’hi: aquest kernel personalitzat no el manté Canonical. Les actualitzacions de seguretat i els pedaços van a càrrec teu. Els paquets que vénen dels repositoris estàndard sí que segueixen amb suport, però el kernel modificat queda fora d’aquesta garantia.

Detecció en temps d’execució amb hwprobe

L’altre punt pràctic és la portabilitat. Si compiles binaris que assumeixen una extensió concreta i després corren en maquinari que no la té, t’emportes un trap per instrucció il·legal. La recomanació de Canonical és fer servir hwprobe, que permet al codi d’usuari preguntar al kernel quines extensions admet el maquinari on s’està executant.

Amb aquesta informació pots aplicar alternatives en comptes de fallar: per exemple, recórrer a una implementació de coma flotant per programari quan la unitat corresponent no hi és. És el patró assenyat per distribuir programari que ha de funcionar en una família de xips RISC-V variada, no en un únic model.

Per a qui treballi amb silici RISC-V a mida, el repartiment queda clar: si la teva instrucció no desa estat, et quedes en espai d’usuari amb PPAs i mantens totes les garanties; si en desa, assumeixes el kernel i el seu manteniment. I en tots dos casos, detectar capacitats en runtime abans de fer-les servir evita sorpreses quan canvies de placa.

Font

Basat en How to use RISC-V custom instructions with Ubuntu, publicat per Jon Taylor al blog de Canonical el 22 de juny de 2026.