FR 2563349 A1 19851025 FR 8406140 A 19840418 Multiplieur matriciel systolique de traitement de données numériques L'invention a pour objet un multiplieur matriciel systolique, permettant de réaliser de façon simple, répétitive et rapide, une opération numérique de type A*X + B*Y + C*Z (1) où A, B et C sont des variables d'entrée et X, Y et Z sont des coefficients qui peuvent être figés ou au contraire programmables. Un tel multiplieur est utilisable pour traiter des données et des variables numériques codées sur un nombre d'éléments binaires (ebs ou bits) quelconque. Il trouve une application particulièrement importante dans le traitement de signaux numériques video, notamment pour le matriçage et le dématriçage de tels signaux ; parmi les autres applications possibles, on peut citer le filtrage d'images en temps réel et l'extraction de contours. Il faut à ce sujet noter que l'opération réalisée peut avoir un nombre de termes supérieur à trois et notamment être de la forme A*X + B*Y + C*Z + D*W. On sait qu'un système systolique est ainsi dénommé du fait de ltanalogie de son fonctionnement avec la distribution du sang sous la commande des battements du coeur. Un multiplieur systolique permettant de réaliser l'opération numérique A*X + B*Y + C*Z a été décrit par Kung dans "Why systolic architectures ?" - IEEE TRANSACTIONS ON COMPUTERS, Janvier 1982, numéro spécial sur le calcul en parallèle. Ce multiplieur utilise trois multiplieurs dans trois cellules différentes. Il est donc très complexe. Il en est de même des combinaisons de multiplieurs numériques travaillant sur 8 et 16 ebs actuellement disponibles : la constitution d'un multiplieur effectuant l'opération A*X + BIY + C*Z sur des données codées sur 8 ebs exige trois multiplieurs et deux additionneurs. L'invention vise à fournir un multiplieur matriciel systolique permettant de réaliser une opération du type A*X + B*Y + C*Z à une rapidité compatible avec les exigences du traitement video numérique, réalisable de façon industrielle avec intégration sur microplaquette de silicium, à un coût plus faible que par association de composants standard et avec une dissipation de puissance moindre. Pour cela, l'invention propose un multiplieur qui, loin de se borner à juxtaposer des circuits existants, associe suivant une approche originale et de façon répétitive des cellules unitaires simples, aisément réalisables en technologie N-MOS à longueur de canal faible (typiquement 3 Rm) permettant d'atteindre une fréquence d'environ 20 MHz, dans lesquelles la méthode systolique est mise en oeuvre au niveau de l'élé- ment binaire. Le multiplieur comporte un premier ensemble constitué d'une matrice de calcul systolique à n x n cellules élémentaires (n étant le nombre d'ebs de codage) réalisant chacune une opération matricielle élémentaire A*X + B*Y + C*Z, alimentant un second ensemble destiné à la propagation des retenues et des résultats des calculs élémentaires d'obtention des ebs de poids fort ; ce second ensemble alimente è son tour un troisième ensemble constitué par une matrice tri an- gulaire à n lignes de registres de présentation des ebs de poids fort sur des sorties correspondantes. Les registres, qui constituent l'élément de base d'une telle architecture, apportent un avantage important : ils peuvent être conçus pour autoriser un test du multiplieur par chargement en série de tous les registres puis déchargement identique après un cycle de l'horloge qui les commande. L'invention sera mieux comprise à la lecture de la description qui suit de modes particuliers d'exécution donnés à titre d'exemples non limitatifs. La description se réfère aux dessins qui l'accompagnent, dans lesquels - les Figures 1A et 1B dans leur ensemble sont un schéma fonctionnel général d'un multiplieur suivant l'invention permettant de traiter des variables et des coefficients codés sur 8 ebs ; - la Figure 2 est un schéma fonctionnel interne d'une cellule de base, désignée par CEL1, du premier-ensemble du multiplieur; - les Figures 3, 4 et 5 sont des schémas fonctionnels de cellules élémentaires CEL 2, ADD et RG du second ensemble du multiplieur ; - la Figure 6 est un schéma électrique de la cellule RG de la Figure 5. Le multiplieur montré en Figure 1 peut être regardé comme constitué de trois ensembles MAT 1, RET 2 et RG 3. Le premier ensemble MAT 1 reçoit en parallèle, à partir d'un bus à 24 fils, les trois variables A, B et C sur des entrées identifiées par Aû, BO, CO,... A7, 87, C7. Il reçoit également les coefficients constants h partir de 24 fils de programmation selon le même format que les variables. Cet ensemble MAT 1 est constitué d'une matrice à 8 lignes et 8 colonnes de cellules élé- mentaires CELl(i,j), où i et i varient de O h 7, h laquelle sont ajoutés (sur la gauche de la Figure) huit registres 8. L'ensemble MAT 1 est une partie essentielle du multiplieur. Il constitue une matrice de calcul systolique dont chaque cellule CELl(i,j) réalise une opér tion matricielle élémentairp dont on pourra trouver une description complète dans la publication de CARLAC'H et autres "Description préliminaire des circuits intégrés de matriçage et de dématriçage de signaux videonumériques", document du C.C.E.T.T. NT/CNR/VRE/29/83 de Juin 1983. La cellule élémentaire réalise les trois multiplications en parallèle. On supposera qu'elle traite des nombres binaires codes en complément à 2. Elle peut alors avoir la constitution montrée en Figure 2. La cellule comporte des registres dynamiques élémentaires 10 montés en série et qui peuvent être du type décrit plus loin en faisant référence aux Figures 5 et 6. Les sorties des registres attaquent un jeu de trois addition- neurs à retenue 12, 14 et 16, désignés par ADD3, et un additionneur simple 18, désigné par ADD2, par l'intermédiaire d'un jeu de portes. Les entrées et sorties sont désignées sur la Figure 2 par les mêmes symboles que sur la Figure 1, mais affectés d'indices indiquant la cellule d'origine ou de destination. Des entrées "TEST" sont prévues sur les registres 10, comme sur tous les autres registres RG du multiplieur. Ces entrées sont portées au niveau logique 0 lorsque le multiplieur doit fonctionner en mode de calcul. Dans ce cas, la relation combinatoire entre les entrées de données et les sorties S est la suivante pour la cellule CELl(i,j) :: S(i+l,j-1) + A(i,j-l)*X(i) + B(i,j-l5+Y(i) + ç(i,j#l)*Z(i) + Rl(i,J-l) + R2(i-l,j-1) = P2(i,j)22 +Rl(i,j)2 i + S(i,j)2 O Les notations sont celles indiquées sur la Figure 2 et toutes les données appliquées à une norme cellule appartiennent à l'ensemble 0,1 Le second ensemble RET 2 a pour fonction de terminer la propagation des retenues et les résultats des calculs intermédiaires pour l'obtention des ebs de poids fort (MSB).Il est constitué de vingt-deux cellules élémentaires CEL2 (Figure 3), groupées en une matrice triangulaire de 8 colonnes et 4 lignes, associées à quatre additionneurs simples ADD (Figure 4) et à un registre RG (Figure 5). Chaque cellule courante CEL2(i,j) peut avoir la constitution montrée en Figure 3, où les entrées et sorties sont encore désignées par les mêmes notations que sur les Figures précédentes, affectées d'indices indiquant l'origine ou la destination. Elle se compose de registres dynamiques 20 montés en cascade, d'un additionneur simple 22 et d'un additionneur à retenue 24. De même, chaque cellule ADD (Figure 4) peut être constituée de deux registres dynamiques 26 en cascade dont les sorties attaquent un sommateur 28 fournissant le signal de sortie, dirigé vers la première cellule CEL2 d'une ligne (pour quatre des cellules ADD), fournissant le dernier élément binaire de poids fort 57 du résultat (pour la dernière cellule ADD). Enfin, le registre RG a une constitution qu'on peut retrouver dans les registres du troisième ensemble RG3. Du point de vue fonctionnel (Figure 5), il peut être considéré comme constitué d'inverseurs 30 reliés par des interrupteurs commandés par des horloges de cadencement non recouvrantes à l'état haut (indiquées par F1 et F2) et le signal de test. Il peut avoir la constitution électrique montrée en Figure 6 oh les entrées-sorties portent les mêmes références que sur la Figure 5. Enfin, le troisième ensemble RG3 est destiné a fournir les ebs de poids fort du résultat sur des sorties SO-S6. Il est constitué d'une matrice triangulaire à 7 lignes et 4 colonnes de dixKneuf registres RG qui peuvent être identiques è ceux montrés par les Figures 5 et 6. Les registres RG sont commandés par les mêmes horloges que les registres des cellules déjà dé- crites. Ils permettent le fonctionnement systolique du multiplieur. Le rôle des composants apparaîtra mieux en considérant le fonctionnement global du multiplieur, qui sera maintenant évoqué. Les huit cellules d'entrée CELlCO,i > qui reçoivent chacune trois ebs de poids identiques Ai, Bi, Ci des variables d'entrée, traitent cas ebs au niveau haut de l'horloge F1 qui suit la présence des ebs sur le bus d'entrée. Les trois entrées de coefficient de chaque cellule CELl(i,j) (entrées horizontales sur la Figure 1) reçoivent les coefficients selon le même format que les variables, c1est-à-dire le triplet Xi, Vi, Zi des ebs de même poids pour toutes les cellules d'une même colonne i. En d'autres termes, les cellules CELl(O,i) a CEL1(7,i) reçoivent les mêmes ebs Xi, Yi, Zi. A chaque niveau haut de l'horloge Fl, un nouveau triplet de variables numériques A, B, C est introduit dans la première ligne de cellule CELl(O,i > . Les résultats partiels se propagent dans le multiplieur au rythme du signal d'horloge. La traversée synchrone des treize étages successifs est assurée par les registres RG commandés par la double horloge F1 et F2 ne présentant pas de recouvrement à l'état haut A chaque cycle d'horloge, après traversée de tous les étages, les résultats de l'opération AXX + B*Y + C*Z sont présents sur les fils de sortie so à 57 (Figure 1). Les sorties PO à P9 qui reprssentent les poids faibles du résultat. sur 17 ebs ne sont pas prises en compte dans le cas montré en Figure 1.Elles pourraient ltêtre en augmentant la tailla de l'ensemble RG3. L'opération logique est donc effectuée an 13 cycles d'horloge pour des données (variables et coefficients codées sur 8 ebs. Il s'y ajoute le cycle d'horloge de l'étage de sortie du circuit intégré. En mode "calcul" (traitement continu de données numériques), tout se passe comme si l'opérateur effectuait un calcul à chaque cycle d'horloge. Il peut être utile à ce stade de faire apparattre le fonctionnement de chaque cellule élémentaire CELl(i,j) en mode "calcul" et en mode "test". En mode calcul (Figure 2), lorsque l'entrée "test" est au niveau logique zéro, les entrées de données de la cellule d'ordre (i,j) S(i+l, j-l) Rl(i, j-l) A (i, j-1) B (i, j-l) C (i, j-l) R2(i-1, j-l) sont chargées dans les registres 10 lorsque l'entrée d'horloge F1 est à 1, l'entrée F2 étant alors à O.Chaque registre 10 continue à mémoriser dans sa partie esclave la valeur binaire de l'entrée quand F1 repasse à 0 et que F2 reste à o. Les sorties des registres 10 prennent les valeurs des entrées précédemment chargées quand l'horloge F2 passe à 1 et que F1 reste à O. Les sorties sont alors calculées dans le réseau combinatoire constituée des quatre additionneurs 12, 14, 16 et 18 Cette découpe fonctionnelle du réseau combinatoire est optimale du point de vue de la minimisation de la consommation en courant et de la minimisation de la surface de la cellule intégrée sur semiconductaur.La cellule CEL1 assure néanmoins une rapidité compatible avec la fréquence de 20 MHz des horloges biphasées (Fl, F2) non recouvrantes à l;6tat 1. Comme on l'a déjà indiqué plus haut, il est important du point de vue de l'industrialisation que le multiplieur puisse être complètement testé de façon simple. Ce résultat est atteint, dans l'invention, en prévoyant une entrée de test qui permet, lorsqu'elle est mise au niveau logique 1, de modifier le sens des transferts d'information dans les cellules. Lorsque l'entrée TEST est à zéro, tous les registres RG sont connectés en parallèle (mode de calcul). Lorsque l'entrée TEST est à 1, tous les registres RG sont connectés en série, ce qui permet - de charger tous les registres RG avec l'entrée marquée "Entrée série", après des décalages commandés par (Fl, F2). Le contenu des registres RG est donc observable à la sortie "Sortie série" de la cellule, ce qui rend le test des registres RG très simple, exhaustif et rapide, - de positionner les sorties des registres Rf; afin de présenter tous les cas possibles de con figura- tions des entrées logiques du réseau d'additionneurs. Après chargement dans les registres des cellules suivantes, les résultats logiques du réseau d'additionneurs sont observables sur la sortie "Sortie série", après des décalages commandés par (F1, F2). Le test de la cellule pour vérifier qu'elle assume la fonction combinatoire requise est donc également simple, exhaustif et rapide. L'invention est susceptible de nombreuses variantes et peut s'étendre à la réalisation d'un opérateur à plus de trois termes et au traitement de données numériques codées sur un nombre d'ebs quelconque. Il faut remarquer à ce sujet que l'augmentation de trois à quatre du nombre de termes n' accroît ni la taille, ni la complexité du schéma global. On passe à l'opérateur a quatre termes A*X + B*Y + C*Z + D*W par une modification mineure de l'additionneur 18 à deux entrées (Figure 2) pour le transformer en un additionneur è trois entrées et conduire la cellule élémentaire à remplir la relation combinatoire S(i+j,j-l); ;+ A(i,j-l)*X(l) + B(i,j-l)*Y(i) + C(i,j-l)*Z(i) + D(i,j-l)*W(j) + Rl(i,j-l) + R2(i-l,j-1) R2(i,j)2 2 + Rl(i,j)21 + S(i,j)2 Quant à l'augmentation du nombre d'ebs de co- dage, elle conduit à modifier uniquement la taille, et non la structure, du multiplieur. Le temps de calcul instantané n'est pas modifié : seul le nombre de cycles d'horloge nécessaire au calcul complet varie avec la taille de l'opérateur. L'implantation du multiplieur en technologie N.MOS sur silicium en un seul circuit intégré peut se faire sans difficulté et on notera l'avantage que représente le fait que les connexions aient lieu entre cellules mitoyennes. REVENDICATIONS 1. Multiplieur matriciel systolique permettant de réaliser une opération numérique du type A*X + B*V + C*Z caractérisé en ce qu'il comporte un premier ensemble (MAT1) constitué d'une matrice de calcul systolique à n x n cellules élémentaires (n étant le nombre d'ebs de codage) réalisant chacune une opération matricielle élémentaire A*X + B*Y + C*Z, alimentant un second ensemble destiné à la propagation des retenues et des résultats des calculs élémentaires d'obtention des ebs de poids fort, le second ensemble (MAT2) alimentant à son tour un troisième ensemble constitué par une matrice triangulaire à n lignes de registres de présentation des ebs de poids fort sur des sorties correspondantes. 2. Multiplieur matriciel systolique suivant la revendication 1, caractérisé en ce que chaque cellule (CELl) du premier ensemble comporte des registres dynamiques (10) connectables en série ou en parallèle, dont les sorties attaquent quatre additionneurs. 3. Multiplieur matriciel systolique suivant la revendication 1 ou 2, caractérisé en ce que le second ensemble (MAT2) est constitué par une matrice triangulaire à n colonnes de cellules élémentaires (CEL2) associées à des additionneurs simples (ADD) et à un registre dynamique. 4. Multiplieur matriciel systolique suivant la revendication 3, caractérisé en ce que chaque cellule (CEL2) du second ensemble se compose de registres dynamiques (20) montés en cascada, d'un additionneur è deux entrées (22) et d'un additionneur à trois entrées (24). 5. Multiplieur matriciel suivant l'une quelron que des revendications 1 à 4, caractérisé en ce que le troisième ensemble (RG3) est constitué d' une matrice triangulaire à n-l colonnes de registres commandés, en même temps que les autres registres du multiplieur par deux horloges synchrones de cadencement non recouvrantes à l'état haut, permettant le fonctionnement systolique et formant les ebs de poids fort du résultat. 6. Multiplieur matriciel suivant l'une quelconque des revendications 2 à 5, caractérisé en ce que tous les registres sont munis d'une entrée de test permettant de modifier les transferts d'information dans les cellules. 7. Multiplieur matriciel suivant l'une quelconque des revendications précédentes, caractérisé en ce que chaque cellule élémentaire (CELl) du premier ensemble est prévue pour réaliser entre ses entrées E et ses sorties S la relation combinatoire : S(i+1,j-l) + A(i,j-l)*X(i) + B(i,j-l)*Y(i) + C(i,j-1)*Z(i) + Rl(i,3-l) + R2(i-l,j-1) : R2(i,j)22 +Rl(i,j)21 + S(i,j)20.