Projekt PyXL vyvíja procesor na vykonávanie bajtkódu Pythonu

Predstavuje sa špecializovaný procesor PyXL, určený na urýchlenie vykonávania kódu v jazyku Python. Bajtkód Pythonu je priamo vykonávaný čipom bez JIT, interpretácie alebo virtuálnych strojov. Súbory Pythonu sa najprv preložia do bajtkódu CPython, ktorý sa potom prevedie na špecializovanú sadu inštrukcií PySM, ktoré vykonáva čip. Sada nástrojov na prípravu kódu na spustenie je napísaná v jazyku Python a beží v štandardnom prostredí založenom na nemodifikovanom CPython. Implementácia procesora bola vyvinutá od základov a napísaná v jazyku Verilog pre popis a modelovanie elektronických systémov. Funkčný prototyp procesora sa testuje na doskách s FPGA Zynq-7000.

V testoch vykonaných na vyhodnotenie rýchlosti spracovania udalostí GPIO PyXL prekonáva riešenie založené na MicroPython a Pyboard 30-krát. Pri spustení testovacieho kódu s implementáciou PyXL bežiacou na 100 MHz bola latencia spracovania požiadavky GPIO (Roundtrip Latency) 480 ns, zatiaľ čo pri použití MicroPython Pyboard (168 MHz) to bolo 14741 ns. Očakáva sa, že zvýšenie taktovacej frekvencie PyXL na úroveň Pyboardu zväčší rozdiel až 50-násobne.

Pri práci s GPIO na MicroPython pomocou PyBoardu interaguje kód Pythonu s hardvérovými registrami prostredníctvom medziľahlých funkcií C, zatiaľ čo samotný kód Pythonu sa vykonáva v virtuálny prístrojV PyXL je bajtkód Pythonu vykonávaný priamo procesorom a prístup k GPIO je dosiahnutý bez ďalších vrstiev alebo externých volaní. Architektúra PyXL využíva spracovanie pipeline a model ukladania a spracovania dát založený na zásobníku. Platforma zachováva dynamické typovanie Pythonu a neukladá žiadne obmedzenia na typy premenných.

V súčasnej fáze vývoja sa projekt nachádza vo fáze funkčného prototypu, ktorý podporuje obmedzenú podmnožinu jazyka Python a jeho cieľom je demonštrovať možnosť efektívneho hardvérového vykonávania kódu v jazyku Python. Ďalšie rozšírenie funkcionality sa plánuje s ohľadom na skutočné potreby autora, ktoré sú zamerané najmä na aplikácie pre vstavané systémy a spracovanie informácií v reálnom čase.

Architektúra inštrukčnej sady PyXL je navrhnutá s ohľadom na štruktúru bajtkódu CPython a jej efektívne spracovanie v hardvéri, berúc do úvahy špecifiká, ako je dynamická manipulácia s typmi a dynamické odosielanie. ISA obsahuje inštrukcie pre manipuláciu so zásobníkom, binárne operácie, porovnávacie a vetvené operácie, volanie funkcií a možnosti prístupu k pamäti.

Technické detaily implementácie projektu PyZX budú prezentované 17. mája na konferencii PyCon 2025. Zvažuje sa možnosť otvorenia vývoja projektu a vytvorenia sebestačného ASIC čipu, ale konečné rozhodnutie o týchto otázkach ešte nebolo prijaté. Projekt vyvíja Ron Livne, ktorý sa špecializuje na optimalizáciu výkonu a vývoj hardvérových akcelerátorov.



Zdroj: opennet.ru

Pridať komentár