Twenty years ago, Arm, Sun Microsystems, and others developed Java processors (JPUs?), microprocessors that directly ran Java bytecode. Today, Ron Livne’s PyXL processor does the same for Python, executing its bytecode (CPython) (albeit mapped to the PyXL machine language). Operating at 100 MHz on an AMD (Xilinx) Zynq-7000 FPGA, PyXL twiddles GPIO lines with 1/30th the round-trip latency of the same Python code running on a similar Arm Cortex-M4 board and with less variability. Power should be much lower than a comparably fast CPU-based implementation.
Developers love Python. It’s a rich programming environment with an easily understood grammar. Like Java, it’s an unnatural fit for embedded systems because its programming and execution models are decoupled from hardware. However, a CPU directly running Java or Python mitigates these languages’ disadvantages by improving determinism, per-cycle performance, and power efficiency.
Bottom Line
Java processors ultimately fizzled, however. Smart cards are one area where they succeeded owing to their infinitesimally low power and minimal performance requirements. Conventional CPU architectures scale to greater performance and are more flexible. Developers requiring determinism can employ assembly, C, or another compiled language. For now, the PyXL project is a labor of love. Given Java processors’ limited acceptance and shortcomings, it’s likely to remain only that.