Il a été démontré qu’un FPGA – c’est un réseau de portes programmable sur le terrain, une sorte de micropuce reconfigurable – exécute un jeu 3D à lancer de rayons écrit en C 50 fois plus efficacement qu’un processeur x86 tout en utilisant une fraction de l’énergie et peut-être en pointant la voie vers de futurs gains d’efficacité dans la programmation. Les revendications sont faites dans un livre blanc [PDF (opens in new tab)] par Victor Suarez Rovere, un développeur argentin, et Julian Kemmerer, un ingénieur système de Pennsylvanie, et porté à notre attention par CNX Software (s’ouvre dans un nouvel onglet).
Le FPGA (s’ouvre dans un nouvel onglet) en question c’est l’Arty A7 (s’ouvre dans un nouvel onglet), une carte de développement FPGA Xilinx Artix-7 100T qui se vend environ 280 $ et comprend 101 440 cellules logiques (les cellules logiques d’un FPGA contiennent une table de consultation qui peut implémenter n’importe quelle fonction logique, donnant à la puce sa programmabilité) sur un processus de 28 nanomètres, et qui tire moins d’un watt de puissance. Le processeur contre lequel il a été opposé (sans, il faut le dire, déranger l’iGPU de la puce) était un Ryzen 7 4800H, un processeur pour ordinateur portable à huit cœurs à 16 threads qui a été construit sur un processus de 7 nm et a un TDP par défaut de 45W. C’est une puce pour ordinateur portable qui n’est pas disponible seule, mais le R7 4700G est actuellement disponible pour environ 240 $.
Le jeu qui a été compilé pour fonctionner sur les deux plates-formes très différentes est « Sphery Vs Shapes », et ne semble pas contenir beaucoup d’intrigue, de personnages ou de gameplay réel, mais a beaucoup de lancer de rayons, comme un une balle métallique brillante rebondit dans un environnement semblable à un échiquier, ce qui se reflète dans sa surface sphérique brillante.
Les deux plates-formes ont rendu le jeu à 1080p et 50 images par seconde sans problème, mais le FPGA l’a fait en utilisant 660 mW, tandis que le R7 avait besoin de 35W, une différence de 53x. On suppose que si le FPGA utilisait le même processus de 7 nm que le CPU, ce chiffre pourrait être six fois plus élevé.
Les clés de tout cela sont Pipeline C (s’ouvre dans un nouvel onglet)une invention de Kemmerer, et CflexHDL (s’ouvre dans un nouvel onglet) de Suarez. Vous pouvez les trouver tous les deux sur GitHub. « Le rendu des pixels et la logique d’animation du jeu sont basés sur des opérations mathématiques en virgule flottante et vectorielles. Tout le code du jeu est exprimé à l’aide d’une syntaxe propre qui se traduit directement en un circuit numérique. La cible actuelle de cette conception est une carte FPGA avec Full HD sortie vidéo numérique, et le flux de travail permet également d’exécuter le jeu en temps réel sur un PC ordinaire en utilisant la source non modifiée », écrivent-ils dans leur article. « Cela permet des itérations de test de développement beaucoup plus rapides qu’avec les outils de conception de matériel traditionnels. Pour la même charge de travail, l’efficacité de calcul a été plus de 50 fois supérieure à l’utilisation d’un processeur moderne, dans une puce d’un ordre de grandeur plus petite. »
« Sphery Vs Shapes » se présente assez bien comme une démo graphique, mais ce que cela signifie pour l’avenir de la programmation est plus intéressant – d’autant plus que les FPGA vont commencer à apparaître (s’ouvre dans un nouvel onglet) dans les puces AMD. Il est prévu de porter le tout sur RISC-V et de concevoir un ASIC open source (circuit intégré spécifique à l’application) qui prend en charge le pipeline, et il existe également des possibilités pour le monde des microcontrôleurs. » Le code peut être traduit à un circuit logique, exécuté sur un[n] CPU standard ou sur un microcontrôleur pour développer des périphériques matériels/logiciels sans modifier le code », écrivent Suarez et Kemmerer dans leur conclusion. « Les résultats que nous avons obtenus sont facilement reproductibles, car les matériaux sont faciles à obtenir et peu coûteux. »