Accélérateurs spécifiques à un domaine : définition, architecture et utilisation

Accélérateurs spécifiques à un domaine : définition, architecture et utilisation

Les accélérateurs spécifiques au domaine ou les accélérateurs spécifiques au domaine sont un type d'unité qui se situe par sa complexité en dessous d'un Processeur, mais a la capacité d'effectuer certaines tâches en consommant moins d'énergie et en étant plus rapides. Mais comment fonctionnent-ils, qu'est-ce qui les définit et pourquoi sont-ils l'avenir du matériel ?

Au fil du temps, les programmes doivent aller de plus en plus vite, mais en même temps, les CPU et les GPU sont devenus des géants de la complexité où il est très difficile d'augmenter les performances de manière traditionnelle. La future solution à ce problème ? Accélérateurs spécifiques à un domaine

Tout d'abord, le concept d'accélérateur

Système ARM RISC

Depuis l'aube de l'informatique, les puces de support ont été nécessaires pour accélérer certaines techniques, à l'origine ces puces ont libéré le CPU d'une tâche répétitive et récursive. L'exemple le plus clair était les systèmes graphiques qui ont permis au CPU de ne pas perdre la plupart du temps à dessiner sur l'écran.

Un accélérateur est une puce de support qui va plus loin, car non seulement il libère le processeur de cette tâche, mais l'accélère également. C'est-à-dire que la tâche est effectuée dans une partie du temps que prendrait le processeur. Ce qui veut dire qu'il est accéléré et a un impact sur tout ce qui va plus vite. D'où le nom d'accélérateur.

Accélérateurs il existe de nombreux types et conceptions, tout type de matériel peut être un accélérateur : un microcontrôleur, un FPGA, un circuit combinatoire ou séquentiel, etc. Ces dernières années, un type d'accélérateur est apparu qui dominera le matériel dans les années suivantes , les accélérateurs spécifiques au domaine.

Accélérateurs spécifiques au domaine, définition générale

montre-CPU

Dans le matériel, nous utilisons depuis longtemps des accélérateurs pour différents types de travaux et applications spécifiques et donc pour un domaine spécifique en particulier. Aujourd'hui, ces domaines peuvent être le graphisme, le Deep Learning, la bioinformatique, le traitement de la voix et les images en temps réel. Il existe de nombreux domaines spécifiques dans lesquels un accélérateur spécifique à un domaine peut résoudre le problème d'une meilleure manière qu'un processeur, c'est-à-dire en moins de temps et en consommant moins.

La première chose qui vient à l'esprit est la question : est-ce qu'un GPU un accélérateur spécifique à un domaine ? Non, ce n'est pas le cas. Les DSA s'occupent en particulier de tâches très spécifiques, donc un GPU va avoir plusieurs de ces unités. Pour le rendre plus compréhensible, il faut tenir compte du fait que chaque tâche peut être divisée en plusieurs plus petites qui peuvent être accélérées indépendamment avec ce type de processeurs.

Cependant, les accélérateurs spécifiques au domaine sont différents des autres options qui existent sur le marché, car ils exploitent dans leur conception une série de caractéristiques qui les placent entre les processeurs à usage général et les accélérateurs conventionnels. Autrement dit, elles n'atteignent pas la complexité d'un CPU, mais elles sont bien plus complexes que les solutions classiques, notamment celles basées sur une fonction fixe.

Domaine spécifique, ISA spécifique

Code source

La première chose que nous devons garder à l'esprit est qu'un accélérateur spécifique à un domaine n'est pas un processeur, bien qu'il exécute également un programme, sa conception est optimisée pour une solution spécifique et non pour une en général, pour cela un ISA totalement est créé autour du Unité DSA exclusive dont les instructions, les registres et les types de données utilisés sont censés résoudre en peu de temps certaines instructions qu'une CPU prendrait plusieurs cycles à faire.

Les processeurs de leurs ISA créent aujourd'hui des instructions à partir de micro-instructions qui partagent un chemin de données commun tout au long du cycle d'instructions. Cela signifie qu'en raison de la complexité du jeu d'instructions, une instruction complexe prend de nombreux cycles pour se terminer. Dans un DSA, nous pouvons créer des boucles d'instructions et des chemins de données spécifiques pour certaines instructions qui s'exécutent plus rapidement. Nous pouvons même créer des unités en parallèle qui exécutent uniquement cette instruction de manière récursive.

Mais le plus grand avantage de ceci est que cela nous permet pour certaines applications de nous débarrasser des instructions qu'une unité à usage général qui pour notre application spécifique est inutile. Et que ces dernières années ils ont fini par transformer les ensembles de registres et d'instructions des CPU et GPU en mastodontes qui occupent un grand espace.

Accélérateurs spécifiques au domaine et accès à la mémoire

Coût énergétique relatif

Une autre amélioration du DSA concerne la mémoire, car comme un microcontrôleur, ils utilisent la mémoire au sein de l'accélérateur lui-même. Ce qui est important, puisque la distance physique dans laquelle se trouve la mémoire influence le coût énergétique des instructions.

Sa configuration mémoire est le principal avantage des accélérateurs, puisque chaque instruction exécutée consomme beaucoup moins d'énergie que dans un CPU, en plus elle évite le problème de contention avec la mémoire. Un DSA n'utilise pas le système RAM pour effectuer ses calculs, afin qu'il puisse travailler en parallèle tout le temps.

De plus, en raison de leur fonctionnement, nous pouvons les placer dans un SoC ou une structure similaire et faire communiquer directement le CPU avec eux, le tout sans avoir à passer par la RAM pour obtenir les données.

Le matériel et le logiciel vont de pair dans les DSA

Conception de circuits papel

La conception du matériel n'est normalement pas faite pour un logiciel spécifique, c'est plutôt le logiciel qui est adapté pour tirer parti du matériel. Cela se fait grâce à l'utilisation d'API spécialisées au niveau logiciel où le logiciel interagit avec une abstraction du matériel de sorte qu'un programme qui est le pilote soit celui qui effectue la traduction entre l'abstraction et le matériel.

Dans les accélérateurs spécifiques au domaine, l'idée est qu'ils peuvent exécuter un programme qui s'exécute sur eux comme s'il s'agissait d'un processeur, mais étant donné qu'ils disposent d'un ensemble d'instructions spécialisé pour un problème spécifique dans le but que les programmes s'exécutent plus rapidement sous un DSA qui sous un processeur en raison de son architecture et de son ISA spécialisées.

Testez les processeurs Diseño

La plupart des conceptions matérielles à l'avenir seront des DSA pour des problèmes spécialisés. Qui seront créés localement dans chaque entreprise et institution pour accélérer des parties spécifiques d'un ou plusieurs programmes qui ont été développés. Son implémentation passera par la création de puces uniques, son implémentation dans des SoC et même dans des FPGA grâce à des langages tels que Verilog ou VHDL.

Il s'agit donc d'inverser complètement la relation entre matériel et logiciel, puisque nous passons de la conception de logiciels pour tirer parti d'un matériel spécifique à la conception de matériel pour des solutions logicielles spécifiques.