Адрес: ул. Б. Очаковская 32 Москва Россия
Наши официальные канал и чат в telegram
Поднимем Devuan на вершину Distrowatch! Просто перейдите по ссылке один раз в день.

PyXL: процессор для аппаратного выполнения кода на Python без JIT и виртуальных машин

PyXL — специализированный процессор для выполнения кода на Python без JIT и виртуальных машин. Разработан на Verilog

Новости собранные из разных RSS источников
Аватара пользователя
root:#
Site Admin
Сообщения: 181
Зарегистрирован: Вт ноя 08, 2022 3:27 pm
Благодарил (а): 38 раз
Поблагодарили: 22 раза

PyXL: процессор для аппаратного выполнения кода на Python без JIT и виртуальных машин

Сообщение root:# »

PyXL: процессор для аппаратного выполнения кода на Python без JIT и виртуальных машин
Представлен специализированный процессор PyXL, предназначенный для ускорения выполнения кода на языке Python. Байткод Python напрямую выполняться чипом без JIT, интерпретации и виртуальных машин. Файлы на языке Python вначале транслируются в байткод CPython, после чего байткод преобразуется в специализированный набор инструкций PySM, выполняемых чипом.

Инструментарий для подготовки кода к выполнению написан на Python и работает в стандартном окружении на базе немодицифированного CPython. Реализация процессора разработана с нуля и оформлена на языке описания и моделирования электронных систем Verilog. Рабочий прототип процессора тестируется на платах с FPGA Zynq-7000. В проведённых тестах, оценивающих скорость обработки событий GPIO, PyXL опережает решение на базе 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), специализирующийся на оптимизации производительности и разработке аппаратных ускорителей.



Источник: https://www.opennet.ru/opennews/art.shtml?num=63157