Представен е специализираният процесор PyXL, предназначен за ускоряване на изпълнението на кода на езика Python. Байткодът на Python се изпълнява директно от чипа без каквито и да било JIT, интерпретация или виртуални машини. Файловете Python първо се преобразуват в байткода CPython, след което байткодът се преобразува в специализирания набор от инструкции PySM, изпълнявани от чипа. Инструментариумът за подготовката на кода за изпълнение е написан на Python и работи в стандартна среда, базирана на немодифицирания CPython. Реализацията на процесора е разработена от нулата и е написана на езика за описание и моделиране на електронни системи Verilog. Работещият прототип на процесора е тестван на платки с FPGA Zynq-7000.
При тестовете, оценяващи скоростта на обработка на GPIO събитията, PyXL превъзхожда 30 пъти решението, базирано на MicroPython и Pyboard. При изпълнение на тестовия код с реализацията на PyXL, работеща с тактова честота 100 MHz, латентността на обработката на GPIO заявките (Roundtrip Latency) е 480 ns, докато при MicroPython Pyboard (168 MHz) тя е 14741 ns. Очаква се увеличаването на тактовата честота на PyXL до тази на Pyboard да увеличи разликата до 50 пъти.
При работа с GPIOs на MicroPython с помощта на PyBoard кодът на Python взаимодейства с хардуерните регистри чрез междинните функции на C, като самият код на Python се изпълнява във виртуална машина. В PyXL байткодът на Python се изпълнява директно от процесора и достъпът до GPIOs се осъществява без допълнителни слоеве и външни извиквания. Архитектурата на PyXL използва конвейерна обработка и стек-базиран модел на съхранение и обработка на данните. Платформата запазва динамичното типизиране на Python и не налага ограничения върху типовете променливи.
На настоящия етап на разработване проектът е на етап работен прототип, като поддържа ограничено подмножество на езика Python и има за цел да демонстрира възможността за ефективно хардуерно изпълнение на код на Python. Планира се да бъдат направени допълнителни разширения на функционалността, като се вземат предвид реалните нужди на разработчика, които са фокусирани основно върху приложенията за вградени системи и обработка на информация в реално време.
Архитектурата на набора от инструкции на процесора PyXL е проектирана с оглед на структурата на байткода на CPython и неговата ефективна обработка на хардуерно ниво, като се отчитат особености като динамичната обработка на типовете и динамичното разпределение. ISA включва инструкции за манипулация със стека, двоични операции, операции за сравнение и разклоняване, извикване на функции и възможности за достъп до паметта.
Техническите подробности за изпълнението на проекта PyZX ще бъдат представени на 17-ти май на конференцията PyCon 2025. Обмисля се възможността за отваряне на разработките на проекта и създаване на самостоятелен ASIC-чип, но решение по тези въпроси все още не е взето. Проектът се разработва от Рон Ливне, който е специализиран в оптимизиране на производителността и разработване на хардуерни ускорители.
Всичко важно от света на технологиите, директно в пощата ти.
С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.
Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!