
Il progetto PyXL mira a migliorare le prestazioni di Python per i progetti embedded, promettendo un aumento di velocità di trenta volte rispetto a MicroPython, utilizzando un processore personalizzato specifico per Python, attualmente collaudato in formato FPGA.
“Python è potente ma lento, frenato dal sovraccarico dell’interprete e dalla tipizzazione dinamica”, afferma Ron Livne, creatore del progetto. “E se funzionasse nativamente sull’hardware? Ho creato PyXL, un processore personalizzato progettato per accelerare l’esecuzione di Python in silicio, eliminando i suoi maggiori colli di bottiglia prestazionali. PyXL raggiunge enormi guadagni di efficienza per ciclo, superando significativamente persino CPU di fascia alta come l'[Apple] M1 Pro!”
Python è un linguaggio popolare grazie alla sua accessibilità, ma nonostante l’ampio utilizzo negli ambienti del calcolo ad alte prestazioni, è considerevolmente meno efficiente di linguaggi come C/C++ e l’assembler diretto. Il modo tradizionale per aggirare questo problema è quello di delegare il pesante carico di calcolo a una libreria scritta in un linguaggio più veloce, ma il progetto di Livne adotta l’approccio opposto e modifica l’hardware su cui Python viene eseguito.
“PyXL è un processore hardware personalizzato che esegue Python direttamente, senza interprete, senza compilazione JIT [Just-In-Time] e senza trucchi. Prende il normale codice Python e lo esegue in silicio”, spiega l’ingegnere del software Livne. “Una toolchain personalizzata compila un file .py in CPython ByteCode, lo traduce in un assembly personalizzato e produce un binario che viene eseguito su un processore pipeline costruito da zero.”
Come potete vedere nel video, I risultati sono impressionanti: un programma scritto per misurare la latenza di andata e ritorno per l’attivazione e la disattivazione di un pin GPIO (input/output generico) mostra un guadagno trenta volte maggiore quando si utilizza un processore PyXL implementato su una scheda di sviluppo FPGA Digilent Arty rispetto a quando si utilizza MicroPython con il processore generico su una scheda di sviluppo PyBoard, che aumenta fino a cinquanta volte se si considera la differenza di velocità di clock tra i due.
“Questo non è solo un miglioramento delle prestazioni, è una vera e propria rivoluzione. PyXL offre un livello di reattività e determinismo che Python non ha mai avuto in contesti embedded o in tempo reale”, afferma Livne. “Le VM [Macchine Virtuali] Python, anche quelle progettate per i microcontrollori, sono comunque basate su interpreti software. Questo introduce overhead e complessità tra il codice e l’hardware. PyXL rimuove questa barriera. Il codice Python viene eseguito direttamente nell’hardware. L’accesso GPIO è fisico. Il flusso di controllo è prevedibile. L’esecuzione è precisa e coerente fin dalla progettazione.”
Questo, afferma Livne, rende Python più adatto a casi d’uso che includono sistemi di controllo in tempo reale, inferenza di apprendimento automatico e intelligenza artificiale (ML e AI) e cicli di risposta dei sensori, attività di robotica come feedback motorio e fusione di sensori a livello di ciclo preciso, e nei sistemi industriali embedded “dove tempi e affidabilità sono importanti”.
Ulteriori informazioni sono disponibili sul sito web di PyXL, sebbene il codice non sia ancora stato rilasciato; Livne terrà una presentazione sul progetto al PyCon 2025 sabato 17 maggio a Pitsburgh, in Pennsylvania.
Kit consigliati:
Link utili