Проект PyXL развивает процессор для выполнения байткода Python

Представлен специализированный процессор PyXL, развиваемый для ускорения выполнения кода на языке Python. Файлы на языке Python вначале транслируются в байткод CPython, после чего байткод преобразуется в представление на базе специализированного набора инструкций PySM, которое может напрямую выполняться чипом без JIT, интерпретации и виртуальных машин. Инструментарий для подготовки кода к выполнению при помощи чипа написан на Python и работает в стандартном окружении на базе немодицифированного CPython. Реализация процессора разработана с нуля и оформлена на языке описания и моделирования электронных систем Verilog. Рабочий прототип процессора тестируется на платах с FPGA Zynq-7000.

В проведённых тестах на обработку событий GPIO предложенное решение опережает решение на базе MicroPython и платы Pyboard в 30 раз – при выполнении тестового кода при помощи реализации PyXL, работающей с тактовой частотой 100MHz, задержка обработки запроса GPIO (Roundtrip Latency) составила 480 нс, а при помощи MicroPython Pyboard (168MHz) – 14741 нс. Предполагается, что повышение тактовой частоты PyXL до уровня Pyboard позволит увеличить разрыв до 50 раз.

При работе с GPIO на MicroPython при использовании платы PyBoard код на языке Python взаимодействует с аппаратными регистрами через промежуточные Си-функции, при этом сам Python код выполняется в виртуальной машине. В PyXL байткод Python выполняется напрямую процессором и доступ к GPIO осуществляется без дополнительных прослоек и внешних вызовов. Архитектура PyXL использует использует конвейерную обработку (pipelining) и стек для хранения и обработки данных. Платформа сохраняет динамическую типизацию Python и не накладывает ограничений на типы переменных.

На текущем этапе развития проект находится на стадии рабочего прототипа, поддерживающего ограниченное подмножество языка Python и нацеленное на демонстрацию возможности эффективного аппаратного выполнения Python-кода. Дальнейшее расширение функциональности планируют производить у учётом реальных потребностей автора, которые в основном сосредоточены на применении для встраиваемых систем и обработки информации в режиме реального времени.

Архитектура набора команд процессора PyXL спроектирована с оглядкой
на структуру байткода CPython и его эффективную обработку на аппаратном уровне с учётом специфики, такой как динамическая обработка типов и динамическая диспетчеризация. ISA включает инструкции для манипуляции стеком, бинарные операции, операции сравнения и ветвления, возможности вызова функций и доступа к памяти.

Технические детали реализации проекта PyZX будет представлена 17 мая на конференции PyCon 2025. Рассматривается возможность открытия наработок проекта и создания самодостаточного ASIC-чипа, но решение по этим вопросам пока окончательно не принято. Проект развивает Рон Ливне (Ron Livne), специализирующийся на оптимизации производительности и разработке аппаратных ускорителей.

Release. Ссылка here.