RĂ©seau systolique
Dans les architectures informatiques parallĂšles, un rĂ©seau systolique est un rĂ©seau homogĂšne d'unitĂ©s de traitement de donnĂ©es (DPU) Ă©troitement couplĂ©es appelĂ©es cellules ou nĆuds. Chaque nĆud ou DPU calcule indĂ©pendamment un rĂ©sultat partiel en fonction des donnĂ©es reçues de ses voisins en amont, stocke le rĂ©sultat et le transmet en aval. Les matrices systoliques ont Ă©tĂ© utilisĂ©es pour la premiĂšre fois dans Colossus, qui Ă©tait un des premiers ordinateurs utilisĂ©s pour casser les chiffrements allemands de Lorenz pendant la Seconde Guerre mondiale[1]. Ils ont Ă©tĂ© redĂ©couverts par H.T. Kung et Charles Leiserson qui ont dĂ©crit des rĂ©seaux pour de nombreux calculs d'algĂšbre linĂ©aire dense (produit matriciel, rĂ©solution de systĂšmes d'Ă©quations linĂ©aires, dĂ©composition LU, etc.) pour les matrices Ă bandes. Les premiĂšres applications incluent le calcul des plus grands diviseurs communs d'entiers et de polynĂŽmes[2]. Ils sont parfois classĂ©s comme architectures Ă donnĂ©es uniques Ă instructions multiples (MISD) selon la taxonomie de Flynn, mais cette classification est discutĂ©e plus loin dans cet article.
Les donnĂ©es d'entrĂ©e parallĂšles circulent Ă travers un rĂ©seau de nĆuds de processeur cĂąblĂ©s, qui combinent, traitent, fusionnent ou trient les donnĂ©es d'entrĂ©e en un rĂ©sultat dĂ©rivĂ©. Parce que la propagation des donnĂ©es Ă travers un rĂ©seau systolique ressemble au pouls du systĂšme circulatoire humain, le nom systolique a Ă©tĂ© inventĂ© Ă partir de la terminologie mĂ©dicale. Le nom est dĂ©rivĂ© de la systole par analogie avec le pompage rĂ©gulier du sang par le cĆur.
Applications
Les 2014x systoliques sont souvent cùblés pour des opérations spécifiques, telles que "multiplier et accumuler", pour effectuer des tùches d'intégration massivement parallÚle, de convolution, de corrélation, de multiplication matricielle ou de tri de données. Ils sont également utilisés pour les algorithmes de programmation dynamique, et dans l'analyse de séquences d'ADN et de protéines.
Architecture
Un rĂ©seau systolique se compose gĂ©nĂ©ralement d'un grand rĂ©seau monolithique de nĆuds informatiques primitifs qui peuvent ĂȘtre cĂąblĂ©s ou configurĂ©s par logiciel pour une application spĂ©cifique. Les nĆuds sont gĂ©nĂ©ralement fixes et identiques, tandis que l'interconnexion est programmable. Les processeurs Ă front d'onde plus gĂ©nĂ©raux, en revanche, emploient des nĆuds sophistiquĂ©s et programmables individuellement qui peuvent ou non ĂȘtre monolithiques, en fonction de la taille du rĂ©seau et des paramĂštres de conception. L'autre distinction est que les rĂ©seaux systoliques reposent sur des transferts de donnĂ©es synchrones, tandis que le front d'onde a tendance Ă fonctionner de maniĂšre asynchrone.
Contrairement Ă l' architecture Von Neumann plus courante, oĂč l'exĂ©cution du programme suit un script d'instructions stockĂ©es dans la mĂ©moire commune, adressĂ©es et sĂ©quencĂ©es sous le contrĂŽle du compteur de programme (PC) du CPU, les nĆuds individuels au sein d'un rĂ©seau systolique sont dĂ©clenchĂ©s par l'arrivĂ©e de nouvelles donnĂ©es et traitent toujours les donnĂ©es exactement de la mĂȘme maniĂšre. Le traitement rĂ©el au sein de chaque nĆud peut ĂȘtre cĂąblĂ© ou microcodĂ© par bloc, auquel cas la personnalitĂ© du nĆud commun peut ĂȘtre programmable par bloc.
Le paradigme du rĂ©seau systolique avec des flux de donnĂ©es pilotĂ©s par des compteurs de donnĂ©es est la contrepartie de l'architecture Von Neumann avec un flux d'instructions pilotĂ© par un compteur de programme. Ătant donnĂ© qu'un rĂ©seau systolique envoie et reçoit gĂ©nĂ©ralement plusieurs flux de donnĂ©es et que plusieurs compteurs de donnĂ©es sont nĂ©cessaires pour gĂ©nĂ©rer ces flux de donnĂ©es, il prend en charge le parallĂ©lisme des donnĂ©es.
Objectifs et avantages
Un avantage majeur des rĂ©seaux systoliques est que toutes les donnĂ©es d'opĂ©rande et les rĂ©sultats partiels sont stockĂ©s dans (passant par) le rĂ©seau. Il n'est pas nĂ©cessaire d'accĂ©der aux bus externes, Ă la mĂ©moire principale ou aux caches internes lors de chaque opĂ©ration comme c'est le cas avec les machines sĂ©quentielles Von Neumann ou Harvard. Les limites sĂ©quentielles des performances parallĂšles dictĂ©es par la loi d'Amdahl ne s'appliquent pas non plus de la mĂȘme maniĂšre, car les dĂ©pendances de donnĂ©es sont implicitement gĂ©rĂ©es par l'interconnexion de nĆuds programmable et il n'y a pas d'Ă©tapes sĂ©quentielles dans la gestion du flux de donnĂ©es hautement parallĂšle.
Les rĂ©seaux systoliques sont donc extrĂȘmement efficaces pour l'intelligence artificielle, le traitement d'images, la reconnaissance de formes, la vision par ordinateur et d'autres tĂąches que le cerveau des animaux accomplit particuliĂšrement bien. Les processeurs de front d'onde en gĂ©nĂ©ral peuvent Ă©galement ĂȘtre trĂšs efficaces pour l'apprentissage automatique en implĂ©mentant des rĂ©seaux de neurones Ă auto-configuration en matĂ©riel.
Controverse sur la classification
Alors que les rĂ©seaux systoliques sont officiellement classĂ©s comme MISD, leur classification est quelque peu problĂ©matique. Ătant donnĂ© que l'entrĂ©e est gĂ©nĂ©ralement un vecteur de valeurs indĂ©pendantes, le rĂ©seau systolique n'est certainement pas SISD. Ătant donnĂ© que ces valeurs d'entrĂ©e sont fusionnĂ©es et combinĂ©es dans le(s) rĂ©sultat(s) et ne conservent pas leur indĂ©pendance comme elles le feraient dans une unitĂ© de traitement vectoriel SIMD, il ne peut pas ĂȘtre classĂ© comme tel. Par consĂ©quent, il ne peut pas non plus ĂȘtre classĂ© comme MIMD, car un MIMD peut ĂȘtre considĂ©rĂ© comme une simple collection de petites machines SISD et SIMD.
Enfin, Ă©tant donnĂ© que les donnĂ©es sont transformĂ©e lorsqu'elles traversent le rĂ©seau de nĆud en nĆud, les nĆuds multiples ne fonctionnent pas sur les mĂȘmes donnĂ©es, ce qui rend la classification MISD impropre.
Malgré tout ce qui précÚde, les réseaux systoliques sont souvent proposés comme un exemple classique d'architecture MISD dans les manuels sur l' informatique parallÚle et dans les cours d'ingénierie.
Les rĂ©seaux systoliques utilisent un graphe de flux de calcul prĂ©dĂ©fini qui connecte leurs nĆuds. Les rĂ©seaux de processus Kahn utilisent un graphe de flux similaire, mais il y a des files d'attente FIFO entre chaque nĆud, et les nĆuds ne sont pas synchronisĂ©s.
Description détaillée
Un rĂ©seau systolique est composĂ© d'une matrice d'unitĂ©s de traitement de donnĂ©es appelĂ©es cellules. Les unitĂ©s de traitement de donnĂ©es (DPU) sont similaires aux unitĂ©s centrales de traitement (CPU), (Ă l'exception de l'absence habituelle d'un compteur de programme[3], puisque l'opĂ©ration est dĂ©clenchĂ©e par le transport, c'est-Ă -dire par l'arrivĂ©e d'un objet de donnĂ©es). Chaque cellule partage les informations avec ses voisines immĂ©diatement aprĂšs le traitement. Le rĂ©seau systolique est souvent rectangulaire oĂč les donnĂ©es circulent Ă travers le rĂ©seau entre les DPU voisins, souvent avec des donnĂ©es diffĂ©rentes circulant dans des directions diffĂ©rentes. Les flux de donnĂ©es entrant et sortant des ports de la matrice sont gĂ©nĂ©rĂ©s par des unitĂ©s de mĂ©moire Ă sĂ©quençage automatique, les ASM. Chaque ASM comprend un compteur de donnĂ©es. Dans les systĂšmes embarquĂ©s, un flux de donnĂ©es peut Ă©galement ĂȘtre entrĂ© depuis et/ou sorti vers une source externe.
Un exemple d'algorithme systolique effectue la multiplication matricielle. Une matrice est alimentĂ©e une rangĂ©e Ă la fois Ă partir du haut du rĂ©seau et est transmise vers le bas du rĂ©seau, l'autre matrice est alimentĂ©e dans une colonne Ă la fois du cĂŽtĂ© gauche du rĂ©seau et passe de gauche Ă droite. Les valeurs fictives sont ensuite transmises jusqu'Ă ce que chaque processeur ait vu une ligne entiĂšre et une colonne entiĂšre. Ă ce stade, le rĂ©sultat de la multiplication est stockĂ© dans le rĂ©seau et peut maintenant ĂȘtre sorti une ligne ou une colonne Ă la fois, descendant ou traversant le rĂ©seau[4].
Les rĂ©seaux systoliques sont des rĂ©seaux de DPU qui sont connectĂ©s Ă un petit nombre de DPU voisins souvent suivant un maillage rectangulaire. Les DPU effectuent une sĂ©quence d'opĂ©rations sur les donnĂ©es qui circulent. Seules les applications avec des dĂ©pendances de donnĂ©es rĂ©guliĂšres peuvent ĂȘtre implĂ©mentĂ©es sur des rĂ©seaux systoliques classiques. Comme les machines SIMD, les rĂ©seaux systoliques calculent de façon synchronisĂ©e. Un rĂ©seau systolique bien connu est le processeur iWarp de l'UniversitĂ© Carnegie Mellon, qui a Ă©tĂ© fabriquĂ© par Intel. Un systĂšme iWarp possĂšde un processeur linĂ©aire connectĂ© par des bus de donnĂ©es allant dans les deux sens.
Histoire
Les réseaux systoliques ont été décrits pour la premiÚre fois par H.T. Kung et Charles E. Leiserson, qui ont publié le premier article décrivant les réseaux systoliques en 1979. Cependant, la premiÚre machine connue pour avoir utilisé une technique similaire était le Colossus Mark II en 1944.
Exemple d'application
- Ăvaluation polynomiale
La rĂšgle de Horner pour Ă©valuer un polynĂŽme est :
Un réseau systolique linéaire dans lequel les processeurs sont disposés par paires : on multiplie son entrée par et passe le résultat à droite, le suivant ajoute et passe le résultat vers la droite.
Avantages et inconvénients
Avantages :
- Plus rapide que les processeurs à usage général
- Ăvolutif
Inconvénients :
- Cher, en raison de la faible Ă©conomie d'Ă©chelle
- Un matériel hautement spécialisé et personnalisé est requis et souvent spécifique à l'application.
- Pas largement mis en Ćuvre
- Base de code limitĂ©e de programmes et d'algorithmes. (Tous les algorithmes ne peuvent pas ĂȘtre implĂ©mentĂ©s sous forme de rĂ©seaux systoliques. Souvent, des astuces sont nĂ©cessaires pour mapper de tels algorithmes sur un rĂ©seau systolique. )
Implémentations
- Le processeur de réseau Cisco PXF est organisé en interne comme une matrice systolique[5].
- Le TPU de Google est également conçu autour d'un réseau systolique.
- SystĂšme de recherche de texte Paracel FDF4T TestFinder [6]
- Paracel FDF4G GeneMatcher SystÚme de recherche biologique (ADN et protéines)
- Puce d'inférence chez Amazon Web Services [7]
- MIT Eyeriss est un accélérateur de réseau systolique pour les réseaux de neurones convolutifs[8] - [9].
Voir Ă©galement
- MISD - Données uniques d'instructions multiples, exemple : réseaux systoliques
- iWarp â Ordinateur Ă matrice systolique, VLSI, Intel/CMU
- WARP (rĂ©seau systolique) â Ordinateur de rĂ©seau systolique, GE/CMU
- Tensor Processing Unit â accĂ©lĂ©rateur d'IA ASIC
Notes et références
- [vidéo] Colossus - The Greatest Secret in the History of Computing sur YouTube
- [PDF] Systolic VLSI array, harvard.edu, consulté le 9 octobre 2021.
- The Paracel GeneMatcher series of systolic array processors do have a program counter. More complicated algorithms are implemented as a series of simple steps, with shifts specified in the instructions.
- Systolic Array Matrix Multiplication
- « Cisco 10000 Series Router Performance Routing Engine Installation » (consulté le )
- « About Paracel », brandprosgroup.com, Paracel (consulté le )
- « Announcing availability of Inf1 instances in Amazon SageMaker for high performance and cost-effective machine learning inference » (consulté le )
- « Eyeriss Project », eyeriss.mit.edu (consulté le )
- (en) Chen, Emer et Sze, « Eyeriss: a spatial architecture for energy-efficient dataflow for convolutional neural networks », ACM SIGARCH Computer Architecture News, vol. 44, no 3,â , p. 367â379 (ISSN 0163-5964, DOI 10.1145/3007787.3001177, lire en ligne)
- (en) Cet article est partiellement ou en totalitĂ© issu de lâarticle de WikipĂ©dia en anglais intitulĂ© « systolic array » (voir la liste des auteurs).
Sources
- H. T. Kung, C. E. Leiserson: Algorithms for VLSI processor arrays; in: C. Mead, L. Conway (eds.): Introduction to VLSI Systems; Addison-Wesley, 1979
- S. Y. Kung: VLSI Array Processors; Prentice-Hall, Inc., 1988
- N. Petkov: Systolic Parallel Processing; North Holland Publishing Co, 1992