Recherche de site Web

PyXL : Exécutez du code Python directement sur le matériel !


Nous connaissons tous Python. C'est l'un des langages de programmation les plus populaires parce qu'il est facile à lire et permet d'accomplir les tâches rapidement. Mais lorsque vous avez besoin que votre code s'exécute extrêmement vite, ou sur de petites puces peu coûteuses appelées microcontrôleurs, Python n'est généralement pas le premier choix. Cela s'explique par le fait que Python nécessite typiquement des couches logicielles supplémentaires, comme des interprètes ou des machines virtuelles (VM), pour s'exécuter, ce qui peut ralentir les choses.

Mais que se passerait-il si vous pouviez exécuter du code Python sans tout ce logiciel supplémentaire ? Directement, sur un matériel spécialement conçu ? C'est l'idée excitante derrière un nouveau projet appelé PyXL.

Qu'est-ce que PyXL exactement ?

Considérez PyXL comme une puce informatique personnalisée (un processeur matériel) spécialement conçue pour comprendre et exécuter du code Python. Au lieu d'une puce informatique standard exécutant un programme interpréteur Python, le matériel PyXL est l'interpréteur, intégré directement dans le « silicium » (le matériau dont sont fabriquées les puces).

PyXL, un processeur personnalisé conçu pour exécuter du code Python

Il ne s'agit pas seulement d'exécuter un programme Python ordinaire sur une puce standard très, très rapidement. PyXL utilise un ensemble spécial d'outils (une chaîne d'outils) pour préparer votre code Python.

Il prend votre fichier Python standard (.py) et le transforme d'abord en un format appelé CPython ByteCode, puis le traduit en un ensemble personnalisé d'instructions (appelé PySM), et enfin crée un fichier matériel (un binaire) que la puce PyXL peut exécuter directement.

Pourquoi construire du matériel pour Python ?

L'objectif principal de PyXL est d'atteindre des vitesses ultra-rapides et un timing prévisible pour le code Python, en particulier dans les situations où le timing est critique.

Examinons un test simple : allumer et éteindre très rapidement une broche numérique sur une puce et mesurer le temps que prend le signal pour sortir d'une broche et être lu sur une autre (appelé un GPIO roundtrip). C'est un test de base de la rapidité avec laquelle une puce peut réagir au monde extérieur.

Sur une carte MicroPython populaire (appelée PyBoard), ce test GPIO prend environ 15 000 nanosecondes (c'est-à-dire 15 millionièmes de seconde). Cela s'explique par le fait que le code Python doit passer par l'interpréteur logiciel de MicroPython et par des couches de logiciel avant de communiquer avec la broche.

PyXL ignore ces couches logicielles. Le matériel PyXL personnalisé est conçu pour exécuter directement les instructions de votre code Python compilé, et la connexion aux broches GPIO est câblée physiquement dans le processeur. Dans le même test, PyXL a atteint un temps de rotation GPIO de seulement 480 nanosecondes.

Cela signifie que PyXL est environ 30 fois plus rapide que MicroPython sur le PyBoard dans ce test. Si vous tenez compte du fait que la puce PyXL fonctionne actuellement à une vitesse plus faible (100 MHz contre 168 MHz pour le PyBoard), la différence de vitesse est encore plus spectaculaire, environ 50 fois plus rapide.

Au-delà de la simple vitesse, PyXL offre un temps déterministe. Dans le test GPIO, le temps pris était exactement le même à chaque fois (480 ns). MicroPython, comme d'autres systèmes basés sur le logiciel, montre une certaine variation dans le temps (gigue). Cette prévisibilité est cruciale pour les applications qui doivent réagir aux événements au moment précis.

À quoi PyXL peut-il servir ?

Parce qu'il rend Python rapide et prévisible, PyXL pourrait être utile dans des domaines où Python n'était traditionnellement pas adapté en raison de limitations de performance. Cela inclut des choses comme :

  • Systèmes de contrôle en temps réel : Là où les machines ou les processus doivent être contrôlés avec un timing très précis.
  • Robotique : Pour des tâches comme le traitement des données des capteurs et le contrôle des moteurs avec une grande précision.
  • Systèmes nécessitant des réactions rapides aux capteurs : Comme dans l'apprentissage automatique où une décision basée sur les données du capteur doit se produire instantanément.
  • Systèmes industriels embarqués : Là où la fiabilité et la synchronisation exacte sont cruciales.

L'idée est que vous pourriez écrire les parties sensibles aux performances importantes de votre projet en Python et les exécuter directement sur le matériel PyXL pour la vitesse et la prévisibilité.

PyXL est-il prêt pour tout le monde ?

PyXL est actuellement un projet en phase initiale, développé par une seule personne. Il fonctionne sur une carte de développement spécifique qui utilise une puce appelée Zynq-7000 FPGA (plus précisément, la carte de développement Arty-Z7-20).

Il est important de noter qu'il ne prend en charge qu'un sous-ensemble de Python pour le moment. De nombreuses fonctionnalités du Python standard (CPython) ne sont pas encore implémentées. Certaines fonctionnalités, comme les modifications complexes du code à l’exécution ou le chargement dynamique, pourraient ne jamais être entièrement prises en charge, car l'accent est mis sur une exécution simple et prévisible pour les systèmes embarqués.

De plus, les bibliothèques Python existantes écrites en C ne peuvent pas être utilisées directement sur PyXL tel qu'il est aujourd'hui. La gestion de la mémoire (comme le ramassage des déchets) est également encore en cours de développement.

Alors que le développeur décrit PyXL comme exécutant Python « directement » dans le matériel, certaines discussions techniques notent qu'il implique la compilation du code Python en un ensemble personnalisé d'instructions pour le matériel, ce qui est une forme de compilation similaire à la préparation du code pour tout autre puce.

Cependant, la principale différence est que le matériel est conçu spécifiquement pour ces instructions de type Python, évitant ainsi le besoin d'un interpréteur logiciel séparé.

Regarder vers l'avenir

PyXL offre une manière unique et potentiellement puissante d'utiliser Python dans des applications intégrées et en temps réel en construisant du matériel spécifiquement pour cela.

Bien qu'il soit encore en cours de développement et présente des limitations, les premiers résultats de performance montrent un bond significatif en termes de vitesse et de prévisibilité du timing par rapport à l'exécution de Python sur des configurations traditionnelles de microcontrôleur.

Le développeur prévoit de partager plus de détails techniques à PyCon 2025.

En résumé, PyXL est un projet créant une puce informatique spéciale pour exécuter du code Python très rapidement et de manière prévisible, ouvrant des possibilités pour utiliser Python dans des systèmes où le timing est critique.

Ressource :

  • Site Web PyXL