FR 3128542 A1 20230428 FR 2111263 A 20211022 Le circuit intégré comprend un calculateur matériel adapté pour calculer en une série d’opérations, des composantes de sortie telles que : . Une opération comprend : - dans une première voie de calcul (VC1), une multiplication-accumulation entre des premiers facteurs contenus dans un premier registre (R3) et des deuxièmes facteurs contenus dans un deuxième registre (R7) ; - dans une deuxième voie de calcul (VC2), une multiplication-accumulation entre les mêmes premiers facteurs et les deuxièmes facteurs contenus dans le deuxième registre (R7) et dans un troisième registre (R6) ; - un chargement dans le premier registre (R3) des premiers facteurs de la prochaine opération des deux voies, - un chargement dans le deuxième registre (R7) des deuxièmes facteurs correspondant au calcul de l’opération suivant la prochaine opération de la première voie (VC1). Figure pour l’abrégé : Fig 3 Circuit intégré comprenant un calculateur matériel et procédé de calcul correspodant. Des modes de réalisation et de mise en œuvre concernent les calculateurs matériels, réalisés de façon intégrée, en particulier adaptés pour effectuer des calculs parallèles des composantes de vecteur de sortie d’un produit de convolution. Typiquement, et en particulier dans des algorithmes de filtre à réponse impulsionnelle finie « FIR » (acronyme des termes anglais usuels « Finite Impulse Response »), un produit de convolution entre un vecteur d’entrée et un autre vecteur d’entrée résulte à un vecteur de sortie dont chaque composante est définie par la formule . Usuellement, les données du vecteur d’entrée peuvent être appelées « échantillons » (« samples » en anglais) et les données du vecteur d’entrée peuvent être appelées « taps ». Des calculateurs matériels peuvent être spécifiquement dédiés aux calculs du type multiplications et accumulations « MAC » des composantes du vecteur de sortie d’un tel produit de convolution. L’usage de calculateurs matériel permet d’optimiser la charge de travail d’une unité de calculs à usage général, typiquement un processeur d’un système sur puce, et d’optimiser le temps de calcul du vecteur de sortie, appelé temps d’inférence. Des calculateurs matériels optimisés sont capables, en une instruction, d’effectuer simultanément deux calculs de multiplication-accumulation, ainsi qu’un chargement des deux prochains échantillons et un chargement des deux prochains taps pour les deux prochaines opérations de multiplication-accumulation. Ainsi, le nombre de multiplications-accumulations pour calculer toutes les composantes du vecteur de sortie est égal au produit du nombre d’échantillons par le nombre de taps , par exemple selon l’exemple de dimensions donné ci-dessus. Et, le nombre de chargements d’échantillons et de taps est aussi égal à . Les applications des produits de convolution exécutés par des calculateurs matériels tendent à une augmentation de la dimension N, ce qui a un impact quadratique sur le temps d’inférence desdits calculs. Multiplier le nombre de calculateurs du type MAC en parallèle permet d’optimiser le nombre d’instructions successives, mais nécessite de multiplier le nombre de processus de chargement de données d’entrée à chaque instruction. Les chargements des échantillons et des taps, à partir de mémoires, peuvent devenir le facteur limitant en matière de durée, pour calculer le produit convolution. Ainsi, il existe un besoin d’optimiser les techniques de multiplication-accumulation afin de réduire la durée nécessaire au calcul complet du produit de convolution. A cet égard, il est proposé des modes de réalisation et de mise en œuvre permettant d’effectuer à chaque opération, quatre multiplications-accumulations avec seulement deux chargements de données d’entrée. Selon un aspect, il est proposé à cet égard un circuit intégré comprenant un calculateur matériel adapté pour calculer parallèlement une première composante de sortie d’un premier rang et une deuxième composante de sortie d’un deuxième rang supérieur et consécutif au premier rang, suivant la formule : , en une série d’opérations, le calculateur matériel comportant une première voie de calcul dédiée à la première composante de sortie , une deuxième voie de calcul dédiée à la deuxième composante de sortie , dans lequel, à chaque opération, un premier registre est configuré pour contenir une paire de premiers facteurs correspondant aux termes de ladite opération dans la première voie, un deuxième registre est configuré pour contenir une paire de deuxièmes facteurs correspondant aux termes de ladite opération dans la première voie, et un troisième registre est configuré pour contenir une paire de deuxièmes facteurs correspondant aux termes de la prochaine opération dans la première voie, les deux voies de calculs étant configurées pour accéder chacune au premier registre, au deuxième registre et au troisième registre, de manière à utiliser dans chaque opération les premiers facteurs et les deuxièmes facteurs à la position correspondante de l’indice de sommation dans ladite formule de rang respectif à chacune des composantes de sortie . Ainsi, à chaque opération, la première voie de calcul utilise des facteurs prévus pour cette opération contenus dans le premier registre et dans le deuxième, tandis que la deuxième voie de calcul utilise les facteurs correspondant au deuxième rang et à la position correspondante de l’indice de sommation commun avec les deuxièmes facteurs de ladite opération en cours dans la première et voie et avec la prochaine opération dans la première voie. Selon un mode de réalisation, à chaque opération : - la première voie de calcul est configurée pour calculer et accumuler dans un premier registre de sortie la paire de deux produits entre les premiers facteurs contenus dans le premier registre et les deuxièmes facteurs contenus dans le deuxième registre, - la deuxième voie de calcul est configurée pour calculer et accumuler dans un deuxième registre de sortie la paire de deux produits entre les mêmes premiers facteurs contenus dans le premier registre et les deuxièmes facteurs correspondant au calcul du deuxième rang , contenus dans le deuxième registre et dans le troisième registre ; - le calculateur matériel est configuré pour charger dans le premier registre une paire de premiers facteurs correspondant au calcul de la prochaine opération de la première voie, et pour charger dans le deuxième registre une paire de deuxièmes facteurs correspondant au calcul de l’opération suivant la prochaine opération de la première voie. En effet, la configuration des deux voies de calculs accédant aux trois registres d’entrée, permet d’effectuer seulement deux chargements à chaque opération pour permettre les quatre multiplication-accumulation de l’opération suivante. Selon un autre aspect, il est proposé un circuit intégré comprenant un calculateur matériel adapté pour calculer parallèlement une première composante de sortie d’un premier rang et une deuxième composante de sortie d’un deuxième rang supérieur et consécutif au premier rang, suivant la formule : , en une série d’opérations, le calculateur matériel comportant une première voie de calcul dédiée à la première composante de sortie , une deuxième voie de calcul dédiée à la deuxième composante de sortie , un premier registre destiné à contenir une paire de premiers facteurs , un deuxième registre destiné à contenir une paire de deuxièmes facteurs et un troisième registre destiné à contenir une paire de deuxièmes facteurs , caractérisé en ce qu’à chaque opération, le calculateur matériel est configuré pour : - avec la première voie, calculer et accumuler dans un premier registre de sortie une paire de deux produits entre les premiers facteurs contenus dans le premier registre et les deuxièmes facteurs contenus dans le deuxième registre ; - avec la deuxième voie, calculer et accumuler dans un deuxième registre de sortie une paire de deux produits entre les mêmes premiers facteurs contenus dans le premier registre et les deuxièmes facteurs correspondant au calcul du deuxième rang , contenus dans le deuxième registre et dans le troisième registre ; - charger dans le premier registre une paire de premiers facteurs correspondant au calcul de la prochaine opération de la première voie ; - charger dans le deuxième registre une paire de deuxièmes facteurs correspondant au calcul de l’opération suivant la prochaine opération de la première voie. En d’autres termes, les deux voies de calculs sont configurées pour accéder chacune au premier registre, au deuxième registre et au troisième registre, de manière à utiliser dans chaque opération les premiers facteurs et les deuxièmes facteurs communs pour les rangs de chacune des composantes de sortie , et à la position correspondante de l’indice de sommation dans ladite formule respective au rang de chacune des composantes de sortie . En conséquence de cette configuration des deux voies de calculs de multiplication-accumulation pouvant accéder aux trois registres, le calculateur matériel est capable de calculer quatre termes de multiplication-accumulation pour deux chargements de facteurs dans lesdits registres, à chaque opération. En effet, le chargement des deuxièmes facteurs correspondant au calcul de l’opération suivant la prochaine opération de la première voie ; permet, au cours de la prochaine opération : - d’avoir à disposition les deuxièmes facteurs (chargées dans le registre appelé « deuxième registre » lors de l’opération précédente) qui seront utilisés dans l’opération suivante par la première voie, mais qui sont utilisés, au moins en partie (au moins un), dans cette opération par la deuxième voie ; et - d’avoir à disposition les deuxièmes facteurs (chargées dans le registre appelé « troisième registre » lors de l’opération antérieure à l’opération précédente), utilisés dans cette opération par la première voie et utilisés, au moins en partie (au moins un), dans cette opération par la deuxième voie. En fait, les qualifications « deuxième » et « troisième » registres sont arbitraires, c’est-à-dire que le circuit intégré comporte matériellement ces deux registres qui peuvent alternativement avoir la fonction définie ci-avant du deuxième registre et la fonction définie ci-avant du troisième registre. Par exemple si, lors d’une opération, (resp.) l’un des registres assure la fonction du « deuxième » registre alors (resp.) l’autre assure la fonction du « troisième » registre, tandis que lors d’une autre opération (opération suivante), ledit (resp.) l’un assurera la fonction du « troisième » registre et (resp.) l’autre assurera la fonction du « deuxième » registre. Par exemple, à cet égard, le calculateur matériel est configuré, dans la série d’opérations, pour permuter les fonctions du deuxième registre et du troisième registre, à chaque opération successive. Selon un mode de réalisation, le premier registre, le deuxième registre, le troisième registre ainsi que le premier registre de sortie et le deuxième registre de sortie ont une taille de 2M bits, par exemple 64 bits (M=32), et contiennent chacun une paire de deux données codées sur M bits, par exemple 32bits (M=32). Selon un mode de réalisation, le calculateur matériel comporte un circuit de sélection configuré pour distribuer les accès au deuxième registre et au troisième registre à la première voie de calcul et à la deuxième voie de calcul, de sorte que la première voie ait accès aux deuxièmes facteurs correspondant à ladite opération contenus dans le deuxième registre, et que la deuxième voie ait accès aux deuxièmes facteurs correspondant à ladite opération contenus dans le deuxième registre et dans le troisième registre. En d’autres termes, contrairement aux calculateurs matériels classiques, les registres d’entrées ne sont pas dédiés à une seule voie de calcul, mais sont mutualisés et distribuées entre les différentes voies de calculs par l’intermédiaire du circuit de sélection. Selon un mode de réalisation, le calculateur matériel est adapté en outre pour calculer parallèlement une troisième composante de sortie , d’un troisième rang supérieur et consécutif au deuxième rang , suivant la même formule, le calculateur matériel comportant une troisième voie de calcul dédiée à la troisième composante de sortie , et dans lequel, à chaque opération, le calculateur matériel est en outre configuré pour : - avec la troisième voie, calculer et accumuler dans un troisième registre de sortie une paire de deux produits entre les mêmes premiers facteurs contenus dans le premier registre et les deuxièmes facteurs correspondant au calcul du troisième rang , contenus dans le troisième registre. Ainsi, avec une troisième voie de calcul configurée pour elle-aussi accéder au premier registre, au deuxième registre et au troisième registre, on peut utiliser dans chaque opération les premiers facteurs et les deuxièmes facteurs , en outre communs pour le rang et à la position correspondante de l’indice de sommation dans ladite formule. En conséquence de cette configuration des trois voies de calculs de multiplication-accumulation pouvant accéder aux trois registres, le calculateur matériel est capable de calculer six termes de multiplication-accumulation pour deux chargements de facteurs dans lesdits registres, à chaque opération. En effet, le chargement des deuxièmes facteurs correspondant au calcul de l’opération suivant la prochaine opération de la première voie ; permet en outre, au cours de la prochaine opération : - d’avoir à disposition les deuxièmes facteurs (chargées dans le registre appelé « deuxième registre » lors de l’opération précédente) qui seront utilisés dans l’opération suivante par la première voie, mais qui sont utilisés, au moins en partie, dans cette opération par la deuxième voie, et qui sont en outre utilisés dans cette opération par la troisième voie. Selon un mode de réalisation, le circuit intégré défini ci-avant incorpore un processeur de signaux numériques. Selon un autre aspect, il est proposé un procédé, mis en œuvre au sein d’un calculateur matériel, de calcul parallèle d’une première composante de sortie d’un premier rang et d’une deuxième composante de sortie d’un deuxième rang supérieur et consécutif au premier rang, suivant la formule : , en une série d’opérations, dans lequel, à chaque opération : - le calcul de la première composante comprend un calcul et une accumulation de deux produits entre des premiers facteurs contenus dans un premier registre et des deuxièmes facteurs contenus dans un deuxième registre ; - le calcul la deuxième composante de un calcul et une accumulation de deux produits entre les mêmes premiers facteurs contenus dans le premier registre et des deuxièmes facteurs correspondant au calcul du deuxième rang , contenus dans le deuxième registre et dans un troisième registre ; - un chargement, dans le premier registre, d’une paire de premiers facteurs correspondant au calcul de la prochaine opération, - un chargement, dans le deuxième registre, d’une paire de deuxièmes facteurs correspondant au calcul de l’opération suivant la prochaine opération de la première voie. Selon un mode de mise en œuvre, le procédé comprend, dans la série d’opérations, une permutation des fonctions du deuxième registre et du troisième registre, à chaque opération successive. Selon un mode de mise en œuvre, le premier registre, le deuxième registre, le troisième registre ainsi que le premier registre de sortie et le deuxième registre de sortie ont une taille de 2M bits et contiennent chacun une paire de deux données codées sur M bits. Selon un mode de mise en œuvre, les accès au deuxième registre et au troisième registre sont distribués de sorte qu’une première voie de calcul dédiée à la première composante de sortie , ait accès aux deuxièmes facteurs correspondant à ladite opération contenus dans le deuxième registre, et qu’une deuxième voie de calcul dédiée à la deuxième composante de sortie , ait accès aux deuxièmes facteurs correspondant à ladite opération contenus dans le deuxième registre et dans le troisième registre. Selon un mode de mise en œuvre, le procédé comprend en outre un calcul parallèle d’une troisième composante de sortie , d’un troisième rang supérieur et consécutif au deuxième rang , suivant la même formule, dans lequel, à chaque opération : - le calcul de la troisième composante comprend un calcul et une accumulation de deux produits entre les mêmes premiers facteurs contenus dans le premier registre et les deuxièmes facteurs correspondant au calcul du troisième rang , contenus dans le troisième registre. D’autres avantages et caractéristiques de l’invention apparaîtront à l’examen de la description détaillée de modes de réalisation et de mise en œuvre, nullement limitatifs, et des dessins annexés, sur lesquels : ; ; ; ; ; ; illustrent des modes de réalisation et de mise en œuvre de l’invention. La illustre un exemple de calculateur matériel CAL notamment adapté pour calculer des produits de convolutions. Le calculateur matériel peut être réalisé au sein d’un circuit intégré de processeur de signaux numériques DSP. Les composantes d’un vecteur de sortie d’un produit de convolution peuvent s’exprimer par la formule générale , qui est une somme dont chaque terme est le produit de facteurs. Les facteurs sont des données d’entrées de la convolution. Les premiers facteurs sont par exemple des composantes d’un vecteur d’entrée, autrement appelés « échantillons », les deuxièmes facteurs sont par exemple des coefficients, autrement appelés « taps ». Le calculateur matériel CAL comporte deux voies de calcul parallèles VC1, VC2, chacune configurée pour effectuer des opérations de multiplications-accumulations MACg, MACd, dans une série d’opérations successives, de sorte que les termes accumulés dans les registres de sortie REGout composent au fur et à mesure une composante de sortie à l’issue de la série. Chaque opération comprend une multiplication des données contenues dans des registres d’entrée respectifs REGin, et une accumulation des produits dans un registre de sortie REGout. En outre, dans une opération, un chargement des données d’entrée d’une prochaine opération peut être fait dans les registres d’entrée REGin. Les voies de calcul VC1, VC2 comportent avantageusement une première optimisation de l’usage des registres d’entrée REGin et de sortie REGout, permettant de limiter le nombre de chargement des données d’entrée dans la série d’opérations. En effet, les registres REGin et REGout ont une taille de 2M bits, par exemple 64bits (M=32) et contiennent chacun deux données distinctes codées sur M bits, par exemple 32 bits. Arbitrairement, dans chaque registre 64bits on distingue ainsi le mot de 32 bits stocké à gauche dans les dessins par la référence « g », et le mot de 32 bits stocké à droite dans les dessins par la référence « d ». Ainsi, dans chaque voie de calcul VC1, VC2, un seul chargement d’un mot de 2M bits dans un registre d’entrée REGin permet de charger à la fois un premier facteur d’entrée pour une première multiplication-accumulation MACg effectuée dans la partie gauche « g » des registres d’entrée-sortie REGin, REGout, et un autre premier facteur d’entrée pour une deuxième multiplication-accumulation MACd effectuée parallèlement dans la partie droite « d » des registres d’entrée-sortie REGin, REGout. Par exemple, on peut mettre en œuvre les calculs dans les parties de gauche « g » et de droite « d » des registres REGin, REGout, de sortes que les termes de la somme ayant un indice paire sont accumulés dans la partie droite « d » du registre de sortie REGout, tandis que les termes ayant un indice impaire sont accumulés dans la partie gauche « g » du registre de sortie REGout. Ainsi, indépendamment dans chacune des voies VC1, VC2 et à chaque opération, deux chargements de 64 bits sont suffisants pour réaliser deux multiplications-accumulations MACg, MACd. En outre, les deux voies de calcul VC1, VC2 peuvent avantageusement partager l’un des deux registres d’entrée REGin, par exemple le registre d’entrée R3 stockant des données d’entrée , et effectuer les opérations de multiplication-accumulation avec les coefficients ayant les indices correspondant à ces données d’entrée dans la somme vis-à-vis du rang de la composante de sortie , respective à chaque voie de calcul VC1, VC2. Par exemple, la première voie VC1 calcule la composante de sortie d’un premier rang et la deuxième voie calcule la deuxième composante de sortie d’un deuxième rang . Alors, dans la première voie VC1 au rang , on charge les coefficients ayant les indices correspondant aux produits pour les données d’entrée , (i.e. soit ), c’est-à-dire les coefficients et , dans le deuxième registre d’entrée R7. De manière analogue, dans la deuxième voie VC2 au rang , on charge les coefficients ayant les indices correspondant aux produits pour les données d’entrée , (i.e. soit ), c’est-à-dire les coefficients et , dans le troisième registre d’entrée R6. Cela permet de mutualiser, dans l’ensemble des deux voies VC1, VC2 et à chaque opération, un chargement de 64 bits dans le registre commun R3, de sorte que trois chargements de 64 bits sont suffisants pour réaliser quatre multiplications-accumulations à chaque opération dans l’ensemble des deux voies VC1, VC2. On se réfère désormais aux figures 2 à 5 illustrant un exemple avantageux permettant de réduire à deux le nombre de chargements dans les registres d’entrée REGin ( ) pour réaliser les quatre multiplications-accumulations à chaque opération dans l’ensemble des deux voies VC1, VC2. Le illustre le principe de mise en œuvre permettant de mutualiser un chargement supplémentaire dans les registres d’entrée R3, R7, R6, pour la première voie de calcul VC1 et la deuxième voie de calcul VC2 telles que décrites ci-avant en relation avec la . D’une part, le premier rang de la première composante de sortie calculée par la première voie VC1, et le deuxième rang de la deuxième composante de sortie calculée par la deuxième voie VC2, sont avantageusement consécutifs entre eux. On choisit le cas où le deuxième rang est supérieur et directement consécutif au premier rang . Cela correspond au cas décrit en relation avec la . Dans les figures 2, 4 et 6, la représentation des équations sont le développement de la formule pour les rangs respectifs, dans lesquelles les motifs de remplissage des lettres correspondent au motif du registre d’entrée R3, R7, R6 qui contient les facteurs respectifs, le motif « vide » ou « blanc » signifiant que ces facteurs ne sont pas chargés dans un registre lors de l’opération OP1. Lors d’une première opération OP1, effectuée avec les données d’entrée , les coefficients et utilisés par la première VC1 sont contenus dans le deuxième registre R7. Pour les mêmes données d’entrée , le coefficient utilisé par la deuxième voie VC2 est contenu dans le deuxième registre R7, le coefficient utilisé par la deuxième voie VC2 est contenu dans le troisième registre R6. On se réfère à la , illustrant le calculateur matériel CAL dans le cadre de la mise en œuvre de la première opération OP1. Dans la première voie VC1, l’opération de multiplication-accumulation est mise en œuvre de la manière décrite en relation avec la figure 1, c’est-à-dire que les deux produits entre les premiers facteurs contenus dans le premier registre R3 et les deuxièmes facteurs contenus dans le deuxième registre R7 sont accumulés dans le registre de sortie R0 de la première voie VC1. En détails, le produit entre le premier facteur et le deuxième facteur est accumulé dans la partie droite du registre de sortie R0d, à partir des données contenues dans la partie droite du premier registre R3d et dans la partie droite du deuxième registre R7d. On pourra écrire cette opération de multiplication-accumulation « R0d+=R3d*R7d » (« += » signifiant « accumulation », « * » signifiant « multiplication »). De même, le produit entre l’autre premier facteur et l’autre deuxième facteur est accumulé dans la partie gauche du registre de sortie R0g, tel que « R0g+=R3g*R7g ». Dans la deuxième voie VC2, l’opération de multiplication-accumulation est mise en œuvre de sorte que les deux produits entre les premiers facteurs contenus dans le premier registre R3 et les deuxièmes facteurs contenus dans le deuxième registre R7 et dans le troisième registre R6 sont accumulés dans le registre de sortie R4 de la deuxième voie VC2. En détails, dans la deuxième voie VC2, le produit entre le premier facteur et le deuxième facteur est accumulé dans la partie droite du registre de sortie R4d, à partir des données contenues dans la partie droite du premier registre R3d et dans la partie gauche du deuxième registre R7d, tel que « R4d+=R3d*R7g ». Et, le produit entre l’autre premier facteur et l’autre deuxième facteur est accumulé dans la partie gauche du registre de sortie R4g, à partir des données contenues dans la partie gauche du premier registre R3g et dans la partie droite du troisième registre R6d, tel que « R4g+=R3g*R6d ». A cet égard, le calculateur matériel CAL peut comporter un circuit de sélection SWT configuré pour distribuer les accès au deuxième registre R7 et au troisième registre R6, à la première voie de calcul VC1 et à la deuxième voie de calcul VC2. Le circuit de sélection SWT est configuré pour distribuer distinctement les parties gauches et droites desdits registres R7, R6. Dans la première opération OP1, la distribution est faite de sorte que la partie gauche MACg de la première voie VC1 reçoit en entrée la partie gauche du premier registre R3g et la partie gauche du deuxième registre R7g ; la partie droite MACd de la première voie VC1 reçoit en entrée la partie droite du premier registre R3d et la partie droite du deuxième registre R7d. Tandis que la partie gauche MACg de la deuxième voie VC2 reçoit en entrée la partie gauche du premier registre R3g et la partie droite du troisième registre R6d ; et la partie droite MACd de la deuxième voie VC2 reçoit en entrée la partie droite du premier registre R3d et la partie gauche du deuxième registre R7g. Ainsi la première voie VC1 a accès aux deuxièmes facteurs de l’opération correspondante contenus dans le deuxième registre R7, et la deuxième voie VC2 a accès aux deuxièmes facteurs de l’opération correspondante contenus dans le deuxième registre R7g et dans le troisième registre R6d. Simultanément aux calculs de multiplication-accumulation parallèles dans les deux voies de calculs VC1, VC2, le calculateur matériel CAL est configuré pour effectuer, dans le premier registre R3, un chargement de la paire de premiers facteurs correspondant au calcul de la prochaine opération OP2 (figures 4 et 5) de la première voie VC1 et de la deuxième voie VC2 ; ainsi que, dans le deuxième registre R7, un seul autre chargement de la paire de deuxièmes facteurs correspondant au calcul de l’opération suivant la prochaine opération OP2 de la première voie VC1. En conséquence, lors de la prochaine opération OP2, le deuxième registre R7 et le troisième registre R6 contiendront des deuxièmes facteurs d’une manière comparable à leur contenu au commencement de la première opération OP1. On se réfère à cet égard à la . La illustre le principe de mise en œuvre des calculs dans la première voie VC1 et dans la deuxième voie VC2, lors de la prochaine opération après la première opération OP1, c’est-à-dire lors de la deuxième opération OP2. On rappelle qu’à l’issue des chargements effectués lors de la première opération OP1, le premier registre d’entrée R3 contient les données d’entrée , le deuxième registre d’entrée R7 contient les coefficients et correspondant aux produits pour les données d’entrée de l’opération suivant la deuxième opération OP2, dans la première voie VC1. Le troisième registre R6 n’a pas été chargé avec de nouvelles données, et contient donc les coefficients et , correspondant aux produits pour les données d’entrée de l’opération suivant la première opération OP1, dans la première voie VC1, c’est-à-dire la deuxième opération OP2 en cours dans la première voie VC1. Lors de la deuxième opération OP2, avec les données d’entrée , les coefficients et pour la première VC1 sont contenus dans le troisième registre R6. Pour les mêmes données d’entrée , le coefficient utilisé par la deuxième voie VC2 est contenu dans le troisième registre R6, et le coefficient utilisé par la deuxième voie VC2 est contenu dans le deuxième registre R7. On se réfère à la , illustrant le calculateur matériel CAL dans le cadre de la mise en œuvre de la deuxième opération OP2, suivant (après) la première opération OP1. Dans la première voie VC1, l’opération de multiplication-accumulation est mise en œuvre de sorte que les deux produits entre les premiers facteurs contenus dans le premier registre R3 et les deuxièmes facteurs contenus dans le troisième registre R6 sont accumulés dans le registre de sortie R0 de la première voie VC1. En détails, la multiplication-accumulation dans la partie droite du registre de sortie R0d de la première voie VC1 s’exprime « R0d+=R3d*R6d », et la multiplication-accumulation dans la partie gauche du registre de sortie R0g s’exprime « R0g+=R3g*R6g ». Dans la deuxième voie VC2, l’opération de multiplication-accumulation est mise en œuvre de sorte que les deux produits entre les premiers facteurs contenus dans le premier registre R3 et les deuxièmes facteurs contenus dans le deuxième registre R7 et dans le troisième registre R6 sont accumulés dans le registre de sortie R4 de la deuxième voie VC2. En détails, la multiplication-accumulation dans la partie droite du registre de sortie R4d de la deuxième voie VC2 s’exprime « R4d+=R3d*R6g », et la multiplication-accumulation dans la partie gauche du registre de sortie R4g s’exprime « R4g+=R3g*R7d ». Là encore, le circuit de sélection SWT est configuré pour faire la distribution de sorte que la partie gauche MACg de la première voie VC1 reçoit en entrée la partie gauche du premier registre R3g et la partie gauche du troisième registre R6g ; la partie droite MACd de la première voie VC1 reçoit en entrée la partie droite du premier registre R3d et la partie droite du troisième registre R6d. Tandis que la partie gauche MACg de la deuxième voie VC2 reçoit en entrée la partie gauche du premier registre R3g et la partie droite du deuxième registre R7d ; et la partie droite MACd de la deuxième voie VC2 reçoit en entrée la partie droite du premier registre R3d et la partie gauche du troisième registre R6g. Et là encore, simultanément aux calculs de multiplication-accumulation parallèles dans les deux voies de calculs VC1, VC2, le calculateur matériel CAL est configuré pour effectuer, dans le premier registre R3, un chargement de la paire de premiers facteurs correspondant au calcul de la prochaine opération (i.e. l’opération après la deuxième opération OP2) de la première voie VC1 et de la deuxième voie VC2 ; ainsi que, dans le troisième registre R6, un seul autre chargement de la paire de deuxièmes facteurs correspondant au calcul de l’opération suivant la prochaine opération (i.e. suivant l’opération après la deuxième opération OP2) de la première voie VC1. En conséquence, lors de la prochaine opération (après la deuxième opération OP2), le deuxième registre R7 et le troisième registre R6 contiendront des deuxièmes facteurs d’une manière comparable à leur contenu au commencement de la première opération OP1 et au commencement de la deuxième opération OP2. La mise en œuvre de l’opération suivant la deuxième opération OP2 est strictement identique à la première opération OP1, du point de vue des accès et des chargements dans les registres d’entrées R3, R6, R7, mais cette fois chargés avec les données correspondant à l’avancement respectif de l’indice dans la somme du rang . On remarquera que, entre la première opération OP1 et la deuxième opération OP2, la différence entre toutes les actions effectuées dans le deuxième registre R7 et le troisième registre R6 correspond à une permutation, c’est-à-dire un échange strict, entre les actions faites dans le deuxième registre R7 et les actions faites dans le troisième registre R6. En conséquence, dans la série d’opérations, le calculateur matériel CAL est configuré pour permuter les fonctions du deuxième registre R7/R6 et du troisième registre R6/R7, à chaque opération successive, l’une après l’autre. En d’autres termes, à chaque nouvelle opération, le troisième registre devient le deuxième registre et le deuxième registre devient le troisième registre, et les mêmes actions sont faites dans le « nouveau » deuxième registre et dans le « nouveau » troisième registre. D’un autre point de vue, on peut considérer que le calculateur matériel CAL effectue toujours strictement les mêmes actions dans « un » deuxième registre et dans « un » troisième registre à chaque opération. En effet, dans la première opération OP1 (et les opération « impaires »), le deuxième registre est le registre ayant la référence R7 et le troisième registre est le registre ayant la référence R6 ; tandis que dans la deuxième opération OP2 (et les opération « paires »), les exactement mêmes actions sont exécutées dans un deuxième registre et dans un troisième registre, le deuxième registre étant le registre ayant la référence R6 et le troisième registre étant le registre ayant la référence R7. En résumé, il a été décrit une technique de calcul matériel d’opérations de multiplication-accumulation, dans laquelle, à chaque opération composant au fur et à mesure la première composante de sortie de rang inférieur , les premiers facteurs d’entrée sont chargés dans un premier registre R3 et les deuxièmes facteurs sont chargés dans un deuxième registre R7/R6. Un troisième registre R6/R7 est en outre prévu pour contenir les prochains deuxièmes facteurs pour la prochaine opération de la première composante de sortie de rang inférieur . Parallèlement, les opérations de multiplication-accumulation pour la deuxième composante de sortie de rang consécutif supérieur , entre les mêmes premiers facteurs chargés dans le premier registre R3, et les deuxièmes facteurs correspondant à ces premiers facteurs, distribués dans le deuxième registre R7/R6 et dans le troisième registre R6/R7. En conséquence, la technique de calcul matériel ainsi résumée permet de réaliser les quatre multiplications-accumulations à chaque opération dans l’ensemble des deux voies VC1, VC2, avec seulement deux chargements dans les registres d’entrée R3, R7/R6 (REGin - ). On notera qu’une phase d’initialisation de la série, avant la toute première opération de la série, comprend trois chargements des registres d’entrée R3, R7, R6 avec les données correspondantes, par exemple telles que représentées sur la . Ensuite, dans toute la mise en œuvre de la série d’opérations, chaque opération ne comporte que deux chargements. D’autre part, dans les expressions développées des équations de la formule illustrées par les figures 2, 4 et 6, les indices des coefficients vont tous de 0 à N-1, tandis que les indices des données d’entrée sont notés de sorte à aller du rang correspondant au rang . Cela étant, on entend que les valeurs d’indice, telles qu’éventuellement la valeur notée , sont considérées modulo de sorte que lorsque les indices effectifs valent , étant donné que le vecteur d’entrée n’a typiquement pas d’indice de signe négatif. A cet égard, les valeurs des données d’entrée peuvent typiquement être stockées dans un registre circulaire, mettant en œuvre par construction la fonction de modulo. La figure 6 illustre un exemple complémentaire correspondant à un cas où le calculateur matériel comporte en outre une troisième voie de calcul (non-représentée), analogue à la première voie de calcul VC1 et à la deuxième voie de calcul VC2, adaptée pour calculer parallèlement une troisième composante de sortie , d’un troisième rang supérieur et consécutif au deuxième rang , et suivant la même formule . A chaque opération, le calculateur matériel est configuré pour calculer et accumuler dans un troisième registre de sortie (non-représenté) une paire de deux produits entre les mêmes premiers facteurs contenus dans le premier registre R3 et les deuxièmes facteurs contenus dans le troisième registre R6. Dans une première opération OP11, les opérations de multiplication-accumulation effectuées pour la première composante de sortie par la première voie VC1, et pour la deuxième composante de sortie par la deuxième voie VC2, correspondent précisément à la première opération OP1 décrite précédemment en relation avec les figures 2 et 3. Ainsi, dans la première opération OP1 décrite précédemment en relation avec les figures 2 et 3, le troisième registre R6 contient les coefficients . Or, pour les termes de la troisième composante de sortie par la troisième voie, les deuxièmes facteurs d’indices correspondant aux produits avec données d’entrée pour le rang (i.e. soit ), sont les coefficients contenus dans le troisième registre R6. Les mêmes chargements que ceux décrits en relation avec les figures 2 et 3 sont faits dans les registres R3 et R7 lors de la première opération OP11. Ensuite, dans une deuxième opération suivant la première opération OP11, le premier registre R3 contient les premiers facteurs , le deuxième registre R7 contient les deuxièmes facteurs et le troisième registre R6 contient les deuxièmes facteurs . Ainsi, là encore les opérations de multiplication-accumulation effectuées pour la première composante de sortie par la première voie VC1, et pour la deuxième composante de sortie par la deuxième voie VC2, correspondent précisément à la deuxième opération OP2 décrite précédemment en relation avec les figures 4 et 5. Et, pour les termes de la troisième composante de sortie par la troisième voie, les deuxièmes facteurs d’indices correspondant aux produits avec données d’entrée pour le rang (i.e. soit ), sont les coefficients contenus dans le deuxième registre R7. En conséquence, au moyen d’une troisième voie calcul supplémentaire, le calculateur matériel est capable de calculer six termes de multiplication-accumulation pour deux chargements de facteurs dans lesdits registres, à chaque opération. La illustre un exemple de réalisation du calculateur matériel CAL décrit précédemment en relation avec les figures 2 à 6. Le calculateur matériel CAL appartient par exemple à un processeur de signaux numériques DSP, réalisé de façon intégré au sein d’un circuit intégré, tel qu’un microcontrôleur MCU. Circuit intégré comprenant un calculateur matériel adapté pour calculer parallèlement une première composante de sortie d’un premier rang et une deuxième composante de sortie d’un deuxième rang supérieur et consécutif au premier rang, suivant la formule : , en une série d’opérations, le calculateur matériel comportant une première voie de calcul (VC1) dédiée à la première composante de sortie , une deuxième voie de calcul (VC2) dédiée à la deuxième composante de sortie , dans lequel, à chaque opération, un premier registre (R3) est configuré pour contenir une paire de premiers facteurs correspondant aux termes de ladite opération dans la première voie (VC1), un deuxième registre (R7, R6) est configuré pour contenir une paire de deuxièmes facteurs correspondant aux termes de ladite opération dans la première voie (VC1), et un troisième registre (R6, R7) est configuré pour contenir une paire de deuxièmes facteurs correspondant aux termes de la prochaine opération dans la première voie (VC1), les deux voies de calculs (VC1, VC2) étant configurées pour accéder chacune au premier registre (R3), au deuxième registre (R7) et au troisième registre (R6), de manière à utiliser dans chaque opération les premiers facteurs et les deuxièmes facteurs à la position correspondante de l’indice de sommation dans ladite formule de rang respectif à chacune des composantes de sortie . Circuit intégré selon la revendication 1, dans lequel, à chaque opération : - la première voie de calcul (VC1) est configurée pour calculer et accumuler dans un premier registre de sortie (R0) la paire de deux produits entre les premiers facteurs contenus dans le premier registre (R3) et les deuxièmes facteurs contenus dans le deuxième registre (R7, R6), - la deuxième voie de calcul (VC2) est configurée pour calculer et accumuler dans un deuxième registre de sortie (R4) la paire de deux produits entre les mêmes premiers facteurs contenus dans le premier registre (R3) et les deuxièmes facteurs correspondant au calcul du deuxième rang , contenus dans le deuxième registre (R7g, R6d) et dans le troisième registre (R6g, R7d) ; - le calculateur matériel est configuré pour charger dans le premier registre (R3) une paire de premiers facteurs correspondant au calcul de la prochaine opération de la première voie (VC1), et pour charger dans le deuxième registre une paire de deuxièmes facteurs correspondant au calcul de l’opération suivant la prochaine opération de la première voie (VC1). Circuit intégré comprenant un calculateur matériel adapté pour calculer parallèlement une première composante de sortie d’un premier rang et une deuxième composante de sortie d’un deuxième rang supérieur et consécutif au premier rang, suivant la formule : , en une série d’opérations, le calculateur matériel comportant une première voie de calcul (VC1) dédiée à la première composante de sortie , une deuxième voie de calcul (VC2) dédiée à la deuxième composante de sortie , un premier registre (R3) destiné à contenir une paire de premiers facteurs , un deuxième registre (R7, R6) destiné à contenir une paire de deuxièmes facteurs et un troisième registre (R6, R7) destiné à contenir une paire de deuxièmes facteurs , caractérisé en ce qu’à chaque opération, le calculateur matériel est configuré pour : - avec la première voie (VC1), calculer et accumuler dans un premier registre de sortie (R0) une paire de deux produits entre les premiers facteurs contenus dans le premier registre (R3) et les deuxièmes facteurs contenus dans le deuxième registre (R7, R6) ; - avec la deuxième voie (VC2), calculer et accumuler dans un deuxième registre de sortie (R4) une paire de deux produits entre les mêmes premiers facteurs contenus dans le premier registre (R3) et les deuxièmes facteurs correspondant au calcul du deuxième rang , contenus dans le deuxième registre (R7, R6) et dans le troisième registre (R6, R7) ; - charger dans le premier registre (R3) une paire de premiers facteurs correspondant au calcul de la prochaine opération de la première voie (VC1), - charger dans le deuxième registre une paire de deuxièmes facteurs correspondant au calcul de l’opération suivant la prochaine opération de la première voie (VC1). Circuit intégré selon l’une des revendications précédentes, dans lequel le calculateur matériel est configuré, dans la série d’opérations, pour permuter les fonctions du deuxième registre (R7, R6) et du troisième registre (R6, R7), à chaque opération successive. Circuit intégré selon l’une des revendications précédentes, dans lequel le premier registre (R3), le deuxième registre (R7, R6), le troisième registre (R6, R7) ainsi que le premier registre de sortie (R0) et le deuxième registre de sortie (R4) ont une taille de 2M bits et contiennent chacun une paire de deux données codées sur M bits. Circuit intégré selon l’une des revendications précédentes, dans lequel le calculateur matériel comporte un circuit de sélection (SWT) configuré pour distribuer les accès au deuxième registre (R7, R6) et au troisième registre (R6, R7) à la première voie de calcul (VC1) et à la deuxième voie de calcul (VC2), de sorte que la première voie (VC1) ait accès aux deuxièmes facteurs correspondant à ladite opération contenus dans le deuxième registre (R7, R6), et que la deuxième voie (VC2) ait accès aux deuxièmes facteurs correspondant à ladite opération contenus dans le deuxième registre (R7, R6) et dans le troisième registre (R6, R7). Circuit intégré selon l’une des revendications précédentes, dans lequel le calculateur matériel est adapté en outre pour calculer parallèlement une troisième composante de sortie , d’un troisième rang supérieur et consécutif au deuxième rang , suivant la même formule, le calculateur matériel comportant une troisième voie de calcul dédiée à la troisième composante de sortie , et dans lequel, à chaque opération, le calculateur matériel est en outre configuré pour : - avec la troisième voie, calculer et accumuler dans un troisième registre de sortie une paire de deux produits entre les mêmes premiers facteurs contenus dans le premier registre (R3) et les deuxièmes facteurs correspondant au calcul du troisième rang , contenus dans le troisième registre (R6, R7). Circuit intégré selon l’une des revendications précédentes, incorporant un processeur de signaux numériques (DSP). Procédé, mis en œuvre au sein d’un calculateur matériel, de calcul parallèle d’une première composante de sortie d’un premier rang et d’une deuxième composante de sortie d’un deuxième rang supérieur et consécutif au premier rang, suivant la formule : , en une série d’opérations, dans lequel, à chaque opération : - le calcul de la première composante comprend un calcul et une accumulation de deux produits entre des premiers facteurs contenus dans un premier registre (R3) et des deuxièmes facteurs contenus dans un deuxième registre (R7, R6) ; - le calcul de la deuxième composante comprend un calcul et une accumulation de deux produits entre les mêmes premiers facteurs contenus dans le premier registre (R3) et des deuxièmes facteurs correspondant au calcul du deuxième rang , contenus dans le deuxième registre (R7, R6) et dans un troisième registre (R6, R7) ; - un chargement, dans le premier registre (R3), d’une paire de premiers facteurs correspondant au calcul de la prochaine opération, - un chargement, dans le deuxième registre (R7, R6), d’une paire de deuxièmes facteurs correspondant au calcul de l’opération suivant la prochaine opération de la première voie (VC1). Procédé selon la revendication 9, comprenant, dans la série d’opérations, une permutation des fonctions du deuxième registre (R7, R6) et du troisième registre (R6, R7), à chaque opération successive. Procédé selon l’une des revendications 9 ou 10, dans lequel le premier registre (R3), le deuxième registre (R7, R6), le troisième registre (R6, R7) ainsi que le premier registre de sortie (R0) et le deuxième registre de sortie (R4) ont une taille de 2M bits et contiennent chacun une paire de deux données codées sur M bits. Procédé selon l’une des revendications 9 à 11, dans lequel les accès au deuxième registre (R7, R6) et au troisième registre (R6, R7) sont distribués de sorte qu’une première voie de calcul (VC1) dédiée à la première composante de sortie , ait accès aux deuxièmes facteurs correspondant à ladite opération contenus dans le deuxième registre (R7, R6), et qu’une deuxième voie de calcul (VC2) dédiée à la deuxième composante de sortie , ait accès aux deuxièmes facteurs correspondant à ladite opération contenus dans le deuxième registre (R7, R6) et dans le troisième registre (R6, R7). Procédé selon l’une des revendications 9 à 12, comprenant en outre un calcul parallèle d’une troisième composante de sortie , d’un troisième rang supérieur et consécutif au deuxième rang , suivant la même formule, dans lequel, à chaque opération, le procédé comprend en outre : - le calcul de la troisième composante comprend un calcul et une accumulation de deux produits entre les mêmes premiers facteurs contenus dans le premier registre (R3) et les deuxièmes facteurs correspondant au calcul du troisième rang , contenus dans le troisième registre (R6, R7).