RISC-V: Deberían haberlo sabido mejor
El rápido ascenso de RISC‑V como conjunto de instrucciones de CPU abierto y libre de regalías se está contrastando con una crítica aguda de sus decisiones técnicas de diseño. Los comentaristas debaten si sus extensiones opcionales fragmentadas, codificaciones de instrucciones incómodas y débil detección de características en tiempo de ejecución lo convierten en una base pobre para sistemas de alto rendimiento o de propósito general, o si esos defectos son menores frente a los beneficios de un estándar abierto y un ecosistema en crecimiento. Muchos concluyen que, aunque sea una oportunidad perdida desde una perspectiva purista de la ISA, RISC‑V es “suficientemente bueno” para desplazar núcleos propietarios en diseños embebidos, MCU y aceleradores donde dominan el costo y las licencias.
Sentimiento general
- Muchos coinciden en que el artículo resalta con precisión defectos reales de diseño en RISC‑V (opcionalidad, codificaciones, traps, interrupciones).
- Otros sostienen que la crítica está exagerada: RISC‑V está “bien”, es utilizable en productos reales, y todas las ISA tienen rincones feos.
- Varios señalan que, como Linux, “suficientemente bueno + gratis” puede vencer a “técnicamente mejor + con licencia”.
Extensiones opcionales y fragmentación
- Preocupación principal: casi todo es opcional; cada opción duplica el número de variantes.
- La falta de una forma simple y estándar de enumerar todas las extensiones (incluidas las de proveedores) dificulta binarios portables, kernels y blobs.
- Algunos dicen que esto no es un problema para sistemas embebidos (sabes el chip exacto), ni para aplicaciones a nivel de sistema operativo (apuntas a un perfil como RVA23).
- Otros responden que las bibliotecas compartidas, los blobs y los productos de larga vida hacen que esto sea un problema práctico, no teórico.
- Los perfiles (p. ej., RVA23) se ven como una mitigación parcial, pero no una solución completa.
Codificación de instrucciones, densidad de código y decodificación
- Debate sobre codificaciones comprimidas (16/32 bits) frente a ancho fijo frente a longitud totalmente variable:
- Críticos: RISC‑V paga costos de complejidad de longitud variable, pero solo iguala la densidad de código de AArch64 en lugar de superarla claramente; las codificaciones superpuestas entre extensiones se califican de peligrosas y confusas.
- Defensores: los núcleos modernos ya descomponen/fusionan instrucciones complejas (x86, ARM), así que el enfoque de RISC‑V es comparable; se afirma que RV64GC/RVA23 superan a x86‑64 y compiten con AArch64 en tamaño de texto.
- Algunos detalles microarquitectónicos (alcance de JAL, ausencia de flags, disposición de inmediatos) se califican como “errores no forzados”; otros dicen que son compensaciones razonables para diseños de alto rendimiento más simples.
Casos de uso embebidos frente a alto rendimiento
- Muchos ven a RISC‑V como muy adecuado para roles profundamente embebidos y similares a MCU, especialmente como reemplazo legalmente “limpio” de núcleos de clase 8051 y ARM‑M con licencia.
- Se critican la latencia de interrupción y la sobrecarga de guardado de contexto (especialmente con FP); algunos señalan que esto puede mitigarse con mejores convenciones o extensiones (p. ej., Zfinx).
- Para núcleos de clase escritorio/servidor, las opiniones divergen:
- Escépticos: RISC‑V no aprendió las lecciones de ARMv8/x86, lo que lo convierte en una mala opción para núcleos OoO de gama alta; los mercados de alto margen pueden simplemente pagar ARM.
- Optimistas: con el tiempo, los núcleos abiertos y los perfiles alcanzarán rendimiento de clase M‑series/A‑series; los núcleos x86/ARM de gama alta ya ocultan las peculiaridades de la ISA detrás de micro‑ops.
Compatibilidad de software y detección de características
- Crítica fuerte: no puedes capturar de forma fiable instrucciones indefinidas porque podrían pertenecer a otra extensión, lo que hace inseguro sondear ejecutando opcodes.
- Algunos argumentan que el descubrimiento mediado por el sistema operativo (device tree, /proc/cpuinfo, perfiles estandarizados) es suficiente para software práctico.
- Los desarrolladores embebidos señalan que a menudo deben dar soporte a familias de componentes; los cambios silenciosos de comportamiento entre núcleos similares (especialmente con blobs de proveedores) se consideran un riesgo serio.
Argumentos legales, de mercado y de “apertura”
- Un tema central a favor de RISC‑V: el diseño libre de regalías, consciente de patentes, y el estatus de “estándar abierto” son convincentes, especialmente para:
- Dispositivos embebidos sensibles al costo.
- Empresas y países que quieren evitar la concesión de licencias de ARM/x86 o el apalancamiento geopolítico.
- Otros advierten que las patentes sobre microarquitecturas y extensiones siguen existiendo, y que no se puede demostrar que ninguna ISA sea totalmente inmune a trolls.
RISC‑V como “marco de ISA” y direcciones futuras
- Algunos presentan RISC‑V no como una sola ISA, sino como un generador de muchas ISAs (base + extensiones combinables).
- Esa flexibilidad se elogia para aceleradores (IA, GPUs, IP personalizada) y núcleos de aficionados, pero se culpa de la fragmentación del ecosistema.
- Aparecen sugerencias de:
- Un “RISC‑VI” o una versión recodificada y más estricta que aprenda de ARMv8 y de los propios tropiezos de RISC‑V.
- Una estandarización más agresiva en torno a unos pocos perfiles bien definidos y mecanismos de consulta, en lugar de añadir cada vez más opciones de grano fino.