- Python é executado diretamente no hardware por um processador customizado, funcionando sem interpretador nem JIT
- O tempo de ida e volta do GPIO no PyXL é de 480ns, 30 vezes mais rápido que o PyBoard com MicroPython
- Roda em um FPGA Zynq-7000, com a CPU ARM cuidando da configuração e da memória
- GPIO significa entrada/saída de propósito geral, e o PyXL executa isso diretamente no hardware, sem passar por uma VM nem por uma pilha de software
- Oferece desempenho determinístico e consistente em sistemas de controle em tempo real, robótica e sistemas industriais embarcados
Introdução ao PyXL
- PyXL é um processador customizado que executa Python diretamente no hardware
- Executa código Python no silício sem interpretador nem JIT
- Converte CPython ByteCode em assembly customizado para execução em um processador pipeline
Características do PyXL
- Não é C nem loop inline
- Não é MicroPython nem JIT
- Não roda Linux nem sistema operacional
- É um processador dedicado a Python, projetado para ser determinístico e rápido
Ambiente de execução do PyXL
- Roda em um FPGA Zynq-7000, usando a placa de desenvolvimento Arty-Z7-20
- O núcleo PyXL opera a 100MHz
- A CPU ARM cuida da configuração e da memória, enquanto o código Python é executado diretamente no hardware
O que é GPIO?
- GPIO significa entrada/saída de propósito geral e permite que o software controle LEDs, botões, sensores, motores e mais
- No MicroPython, o código Python interage com funções em C para acessar registradores de hardware
- O PyXL executa bytecode Python diretamente no hardware, sem interpretador nem chamadas de função, rodando em hardware nativo
Teste de GPIO
- O teste foi feito conectando dois pinos da placa Arty com um cabo jumper
- Foi escrito um programa Python para medir o tempo desde que o pino GPIO 1 é definido como 1 até que 1 seja detectado no outro pino
- A diferença de desempenho foi confirmada por meio de um vídeo comparando o PyXL com a VM MicroPython do PyBoard
Estrutura do programa no PyXL
- O programa Python é compilado para CPython Bytecode e depois convertido em assembly do PyXL
- Um binário é gerado e enviado para a placa Arty pela rede
- A CPU ARM recebe a aplicação, copia para o hardware PyXL e para a memória compartilhada, e então executa
Comparação de plataformas
- Latência de ida e volta do GPIO: PyXL = 480ns, MicroPython (PyBoard) = 14.741ns
- O PyXL é 30 vezes mais rápido que o PyBoard e, com a frequência de clock normalizada, é 50 vezes mais rápido
Vantagens do PyXL
- A VM Python se baseia em um interpretador de software, o que gera overhead e complexidade
- O PyXL remove essas barreiras, executando código Python diretamente no hardware
- O acesso ao GPIO é físico, e o fluxo de controle é previsível, oferecendo desempenho consistente
Áreas de aplicação do PyXL
- Pode ser implementado em sistemas de controle em tempo real usando Python puro
- Atende restrições rígidas de tempo em inferência de ML e loops de resposta de sensores
- Em robótica, lida com feedback de motores e fusão de sensores com precisão em nível de ciclo
- É adequado para sistemas industriais embarcados em que timing e confiabilidade são críticos
6 comentários
Como vocês lidam com mudanças de versão?
Talvez isso acabe sendo uma boa notícia para engenheiros de HiL.
Nossa, que interessante.
Estou muito animado.
O desenvolvedor deste projeto vai apresentar esse tema na PyCon US desta vez. Quando a proposta foi revisada no começo do ano, isso também virou um assunto bem comentado entre os avaliadores, mas, em comparação com isso, a descrição da palestra está modesta demais. Para quem for à PyCon, recomendo muito assistir.
https://us.pycon.org/2025/schedule/presentation/40/
Comentários do Hacker News
Fico curioso se há restrições sobre que tipo de código pode ser executado, além de limites de memória ou interação com o SO. Acho que a ideia de pegar bytecode voltado para runtimes de linguagens dinâmicas e criar um processador customizado para ele não foi explorada o suficiente recentemente. Gostaria de entender por que escolheram esse caminho, por que acharam que era uma boa ideia e como foi a implementação
Foi construído um processador em hardware que executa programas Python diretamente, sem VM ou interpretador tradicionais. Benchmark inicial: latência de ida e volta no GPIO de 480ns, 30 vezes mais rápido que MicroPython
Trabalho muito legal. Fico me perguntando se o conjunto final de funcionalidades será maior do que simplesmente criar uma linguagem type-safe com sintaxe de Python e compilação nativa, em vez de fabricar hardware customizado. Coleta de lixo em segundo plano não é tão fácil quanto parece, mas estou dizendo isso para alguém que já realizou um trabalho impressionantemente difícil
Fico curioso sobre por que "compilar" Python não é algo corriqueiro. Entendo que interpretadores são bons para iteração rápida, compatibilidade etc., mas no ecossistema Python me pergunto por que virou prática aceitável abrir mão dos benefícios da compilação e simplesmente despejar arquivos-fonte em produção
Muito interessante. Fico curioso sobre quais são os limites físicos fundamentais: precisão de temporização, latência e jitter. Quão rapidamente o bytecode do PyXL consegue reagir a entradas. Existe algo parecido chamado ARTIQ, que executa código Python com desempenho em "nível embarcado". O ARTIQ é muito usado em laboratórios de física quântica. O código Python e o FPGA precisam se comunicar entre si, o que é tecnicamente difícil e cheio de armadilhas. Se o PyXL tornar isso mais simples para o usuário, isso já é uma grande vantagem para todos
Quando o C# surgiu, eu tinha certeza de que alguém acabaria criando um processador capaz de executar bytecode .Net nativamente. Fico curioso para saber qual HDL foi usado no projeto do processador. Também queria ver se seria possível compartilhar a linguagem assembly do processador. E me pergunto qual é a vantagem de projetar o processador e criar um compilador para bytecode Python, em comparação com fazer um compilador de bytecode para um processador já existente (ARM/x86/RISCV etc.)
Queria fazer uma pergunta aos desenvolvedores Python. Acho este projeto impressionante, mas, como alguém de fora da linguagem, não entendo muito bem. a) o que antes era difícil por causa do Python, b) por que o Python é útil para esse tipo de trabalho, c) o que vocês acham do próprio Python. Já tive dificuldades com Python 2 e 3, ambientes virtuais, bibliotecas de cada versão etc. Como desenvolvedor PHP/Go, tenho interesse, mas esses problemas me fazem hesitar
Trabalho surpreendente. Sempre que vejo uma ótima implementação em FPGA, fico triste por a Tabula não ter dado certo. Era um FPGA muito inovador e rápido
Fico curioso se a ideia é que um ASIC execute um microcontrolador dedicado a Python, com microcódigo ajustado para Python. Também imagino se há um compilador que transforma o bytecode Python em microcódigo e uma infraestrutura de suporte que envia o bytecode compilado ao ASIC. Interessante. Queria saber se entendi corretamente