Embedded systems · Microcontrollers · Retro CPUs

ESP32, Xtensa, ARM, and the Pentium MMX comparison

The metal can on an ESP32 board can look like a generic mystery chip, but classic ESP32 modules are not ARM. They are Wi-Fi and Bluetooth microcontroller modules built around Espressif SoCs with Xtensa cores.

The short answer: not ARM

If the shielded module is an ESP32-WROOM-class module, the main CPU is not ARM. Classic ESP32 parts use Tensilica Xtensa LX6 cores. Newer ESP32 family members may use Xtensa LX7 or RISC-V, but the original ESP32 line is not Cortex-M.

The confusion is understandable. A small metal RF can on a consumer board does not visually announce an instruction set. From the outside it can look like "some microcontroller." But the ESP32 module is a Wi-Fi and Bluetooth system-on-module, not a bare ARM MCU package.

What is under the shield

On an ESP32 module, the metal shield is there because the board contains radio hardware. In a typical ESP32-WROOM-32 module, Espressif documents the embedded ESP32 SoC, a 40 MHz crystal, 4 MB SPI flash, and an on-board PCB antenna.

That means the shielded part is usually the "brain plus radio" block. Around it, the larger product board adds connectors, voltage regulation, sensors, drivers, buttons, LEDs, relays, or whatever the device needs.

A quick board-reading checklist:

  • Shielded can with QR or module marking: likely the Wi-Fi/Bluetooth module.
  • PCB antenna keepout or antenna area: strong sign of a radio module.
  • 3R3 inductor nearby: often part of a switching regulator for 3.3 V logic power.
  • Test pads or unpopulated headers: likely UART, JTAG, GPIO, or factory programming points.

What Xtensa is

Xtensa is a configurable processor architecture from Tensilica, now part of Cadence. Instead of buying an ARM Cortex-M core, a chip vendor can license an Xtensa core configuration and tune it with selected options, instructions, memories, and integration details.

For the original ESP32 context, the useful mental model is:

  • 32-bit microcontroller-class CPU.
  • Xtensa LX6 in common original ESP32 parts.
  • Up to 240 MHz clock in the Espressif datasheet.
  • Small on-chip memory compared with a PC: Espressif lists 520 KB SRAM for the ESP32 series.
  • No general-purpose desktop-style MMU and no Linux-style process model.
  • Designed to live beside Wi-Fi, Bluetooth, timers, ADC, DAC, PWM, I2C, SPI, UART, I2S, and other embedded peripherals.

From C or C++, most of this is hidden behind the SDK and compiler. From assembly, debugging, exception handling, or reverse-engineering, it matters a lot: Xtensa is not ARM assembly, not x86, and not RISC-V.

How you program an ESP32

The normal choices are:

  • ESP-IDF: Espressif's native C/C++ framework, with FreeRTOS integration, Wi-Fi/Bluetooth APIs, build tools, flashing, monitoring, OTA support, and low-level control.
  • Arduino core for ESP32: a friendlier C++ layer with Arduino-style APIs, useful for quick projects and libraries.
  • MicroPython: a high-level interpreted workflow for rapid iteration, with a performance and memory cost.
  • PlatformIO or editor integrations: project workflow around either ESP-IDF or Arduino.

A typical ESP-IDF loop is:

idf.py build
idf.py flash
idf.py monitor

Physically, development boards usually expose USB through a USB-serial bridge or native USB path, depending on the board and chip. The firmware is flashed to module storage, and code commonly runs through cached external flash, with timing-sensitive code sometimes placed in internal RAM.

Performance compared with consumer CPUs

An ESP32 is not a small laptop CPU. It is a microcontroller with strong wireless integration. Comparing only clock speed is misleading because clock speed hides issue width, cache hierarchy, memory bandwidth, branch behavior, vector units, operating system model, and storage latency.

A modern consumer CPU core is often tens to hundreds of times faster than one ESP32 core on general-purpose C code. That is not because the ESP32 is bad. It is because it is optimized for a different job: low-cost embedded control, peripherals, Wi-Fi/Bluetooth connectivity, and predictable firmware-scale work.

For embedded tasks, an ESP32 can feel fast because the work is local and bounded: read a sensor, push data over MQTT, drive LEDs, sample audio modestly, serve a small configuration page, sleep, wake, repeat.

The Pentium MMX 233 MHz mental model

The Pentium MMX 233 MHz comparison is useful because the clocks are in the same broad range. It is also dangerous because the machines are built for different worlds.

Dimension ESP32-class module Pentium MMX-era PC CPU
Main role Embedded controller with radio and peripherals. General-purpose PC processor.
Software model Firmware, FreeRTOS tasks, event loops, bare-metal-adjacent control. Desktop operating systems, virtual memory, larger applications.
Memory expectation Hundreds of KB internal RAM plus external flash, with careful placement for hot code. External DRAM and a PC memory hierarchy built for larger programs.
Where it wins Integrated Wi-Fi/Bluetooth, GPIO, timers, sensors, low power, small BOM. General-purpose compute, PC workloads, memory-heavy code, legacy x86 software.

For tight integer loops placed in fast memory, an ESP32 can be more capable than its tiny board suggests. For memory-heavy code, desktop-style workloads, retro PC software, graphics, large parsers, or anything needing a full operating system, the Pentium-class machine is the more natural comparison target.

The right conclusion is not "ESP32 is a slow Pentium" or "Pentium is an oversized microcontroller." The right conclusion is that similar clock numbers do not imply similar systems.

Where ESP32 feels fast

The ESP32 is impressive when used in its own domain:

  • sensor collection and filtering;
  • Wi-Fi and Bluetooth connectivity;
  • GPIO, PWM, I2C, SPI, UART, I2S, and timing work;
  • small web servers or device configuration pages;
  • MQTT clients and IoT gateways;
  • basic audio, simple DSP, and control loops;
  • battery-aware devices that sleep and wake.

It feels weak when treated like a miniature desktop: large dynamic runtimes, heavy databases, video encoding, big ML inference, browser-like UI, and memory-hungry applications quickly expose the difference.

Takeaway

The shielded module is not an ARM giveaway. On classic ESP32 boards, it usually points the other way: an Espressif radio module built around Xtensa cores.

Program it like an embedded device, not like a PC. Use ESP-IDF when you need control, Arduino when you want speed of prototyping, and MicroPython when iteration matters more than raw speed. Compare it to a Pentium MMX only as a reminder that clock speed is a bad proxy for what a system can actually do.

Sources

  1. Espressif ESP32 Series Datasheet.
  2. Espressif ESP32-WROOM-32 Datasheet.
  3. ESP-IDF Programming Guide: Get Started.
  4. ESP-IDF Programming Guide: FreeRTOS overview.
  5. Arduino ESP32 documentation.
  6. MicroPython quick reference for the ESP32.
  7. Intel IA-32 Architecture Software Developer's Manual, Volume 1, archived copy.