Arquitecturas de CPU: Xtensa vs RISC-V

Todos los ESP32 caen en una de dos ISAs. Como desarrollador de sistemas, esto es lo que cambia:

Xtensa LX6 / LX7 (ESP32 clásico, S2, S3)

  • ISA propietaria de Cadence/Tensilica - spec completa requiere NDA
  • Instrucciones de longitud variable: 16, 24 o 32 bits mezclados - más difícil de leer en disassembly
  • Register windows: 64 registros físicos, expuestos de a 16 por frame de llamada. En ISRs esto requiere save/restore explícito del estado de ventana - el IRAM_ATTR en ESP-IDF existe exactamente por esto.
  • Toolchain: fork propietario de GCC (xtensa-esp32-elf-gcc). No funciona con GCC upstream.
  • Tendencia: no hay nuevos chips Xtensa anunciados más allá del S3.

RISC-V (C2, C3, C5, C6, H2, P4)

  • ISA completamente abierta - spec pública gratuita, sin NDAs
  • Instrucciones de 32 bits fijas + extensión C de 16 bits comprimidos (RV32IMC) - encoding regular y predecible
  • 32 registros planos (x0-x31) - sin register windows, sin sorpresas en GDB
  • Toolchain: riscv32-esp-elf-gcc con soporte upstream de LLVM/Clang
  • Debug: RISC-V Debug Spec estándar - OpenOCD mainstream funciona sin patches de vendor
  • Tendencia: todos los chips nuevos de Espressif son RISC-V. El P4 a 400 MHz demostró que escala al tier de alto rendimiento.

Impacto práctico

SituaciónRecomendación
Usando ESP-IDF o ArduinoNo notás la diferencia porque el compila en ambos
Cámara o frame buffer grande en PSRAMESP32-S3 (LX7) - única con MIPI camera + 8 MB PSRAM en módulo único
Budget de energía ajustadoRISC-V siempre - toda la serie H existe por esto
Debug a bajo nivelRISC-V - crash dumps, stack traces y disassembly mucho más legibles
Proyecto nuevo sin restriccionesDefault a RISC-V