FR 3107375 A1 20210820 FR 2001470 A 20200214 PROCEDE DE TRANSMISSION DE DONNEES ET PUCE ELECTRONIQUE DE TYPE MANYCORE Un procédé de transmission de données entre des fonctions implémentées sur une première puce électronique de type manycore est décrit. La première puce électronique comprend une pluralité de cœurs d’exécution, les cœurs d’exécution étant regroupés en clusters, les clusters étant interconnectés par au moins deux systèmes de communication. Le procédé de transmission de données comprend les étapes de : - implémenter une première fonction sur un premier cluster ; - implémenter une seconde fonction sur un second cluster, caractérisée en ce que ladite seconde fonction est également implémentée sur un troisième cluster distinct desdits premier et second clusters ; et - transmettre au moins une donnée entre ladite première fonction et ladite seconde fonction. Fig. 5 PROCEDE DE TRANSMISSION DE DONNEES ET PUCE ELECTRONIQUE DE TYPE MANYCORE L’invention concerne un procédé de transmission de données entre des fonctions implémentées sur une puce électronique de type manycore comprenant une pluralité de cœurs d’exécution. L’invention concerne également un puce électronique de type manycore. ETAT DE LA TECHNIQUE ANTERIEURE Un processeur «multi-cœur» («multi-core» en anglais) est un processeur possédant au moins deux cœurs ou unités de calcul gravés au sein de la même puce («chip» en anglais) et qui travaillent en parallèle. Un cœur est un ensemble de circuits capable d’exécuter des programmes de façon autonome. Aujourd’hui, il existe des processeurs dits «manycore» qui comportent des dizaines voire des centaines de cœurs. Ces cœurs peuvent être regroupés. Un groupe de cœurs est connu sous la terminologie anglaise de «cluster». Ainsi, un «cluster» est un ensemble de cœurs qui communiquent entre eux à travers une mémoire partagée. Les clusters sont quant à eux interconnectés par des systèmes de communication mettant en œuvre différentes techniques de communication (e.g. NoC, acronyme anglais de «Network-on-Chip» ou bus parallèle de type AXI, (acronyme anglais de «Advanced eXtensible Interface»). De tels processeurs manycore ont des propriétés d’architecture, qui en plus de permettre l’exécution de calculs massivement parallèles, permettent aussi d’héberger des fonctions différentes en termes de criticité et de sûreté, fonctions qui était auparavant hébergées sur des CPUs et donc des boîtiers différents. Ainsi, l’utilisation de puces comprenant un processeur «manycore» permet de réduire le poids, l’encombrement ainsi que la consommation électrique d’une architecture implémentant de nombreuses fonctions. Toutefois, cette solution va de pair avec une perte de fiabilité liée à des modes communs de défaillance ce qui est problématique dans le cas où l’on doit pouvoir assurer un niveau de sûreté élevé à un processus logiciel, e.g. pour le contrôle des différents composants d’un avion. En effet, si plusieurs fonctions sont hébergées sur une même puce, la perte de la puce entraîne la perte de toutes les fonctions hébergées sur celle-ci. La probabilité de perdre plusieurs fonctions simultanément est donc accrue, ce qui peut être dramatique dans le cas d’un avion. Il est donc souhaitable de s’assurer qu’un cluster ou un lien d’échange entre clusters sujet à une défaillance ne puisse pas perturber le bon déroulement d’une autre fonction s’exécutant sur un autre cluster. Selon un premier mode de réalisation, un procédé de transmission de données entre des fonctions implémentées sur une première puce électronique de type manycore est décrit. La première puce électronique comprend une pluralité de cœurs d’exécution, lesdits cœurs d’exécution étant regroupés en cluster, lesdits clusters étant interconnectés par au moins deux systèmes de communication. Le procédé de transmission de données comprend les étapes de: - implémenter une première fonction sur un premier cluster ; - implémenter une seconde fonction sur un second cluster, caractérisée en ce que ladite seconde fonction est également implémentée sur un troisième cluster différent desdits premier et second clusters; et - transmettre au moins une donnée entre ladite première fonction et ladite seconde fonction. Selon un mode de réalisation particulier, transmettre au moins une donnée entre ladite première fonction et ladite seconde fonction comprend transmettre une donnée entre ladite première fonction et ladite seconde fonction à la fois sur un premier lien de communication appartenant à un premier système de communication et sur un second lien de communication appartenant à un second système de communication différent dudit premier système de communication. Selon un mode de réalisation particulier, ledit premier système de communication est de type réseau sur une puce. Selon un mode de réalisation particulier, ledit second système de communication est un bus parallèle. Selon un mode de réalisation particulier, ladite première puce électronique étant interconnectée à une seconde puce électronique de type manycore distincte de ladite première puce électronique, ladite première fonction est en outre implémentée sur un premier cluster de ladite seconde puce électronique et ladite seconde fonction est en outre implémentée sur un second cluster de ladite seconde puce électronique. Selon un mode de réalisation particulier, ladite première fonction implémentée sur l’une desdites première ou seconde puces transmet au moins une donnée à ladite seconde fonction implémentée sur l’autre desdites première ou seconde puces à la fois sur un premier lien de communication de type réseau sur une puce et sur un second lien de communication de type bus parallèle. Selon un mode de réalisation particulier, ladite première puce électronique étant interconnectée à une troisième puce électronique de type multi-coeur, ladite première fonction est en outre implémentée sur un premier cœur de ladite troisième puce électronique et ladite seconde fonction est en outre implémentée sur un second cœur de ladite troisième puce électronique. Selon un mode de réalisation particulier, ladite première fonction transmet au moins une donnée à ladite seconde fonction à la fois sur un premier lien de communication de type Ethernet et sur un second lien de communication de type PCIe. Une puce électronique de type manycore comprenant une pluralité de cœurs d’exécution est également décrite. Les cœurs d’exécution sont regroupés en clusters, lesdits clusters étant interconnectés par au moins deux systèmes de communication. La puce électronique de type manycore comprend : - un premier cluster sur lequel est implémentée une première fonction ; - un second cluster sur lequel est implémentée une seconde fonction; - un troisième cluster sur lequel est implémentée ladite seconde fonction, ledit troisième cluster étant distinct desdits premier et second clusters; et - des liens de communication entre ledit premier cluster et lesdits second et troisième clusters configurés pour transmettre au moins une donnée entre ladite première fonction et ladite seconde fonction. Un système comprenant une première puce électronique de type manycore selon un des modes de réalisation précédents interconnectée à une seconde puce électronique de type manycore distincte de ladite première puce électronique est décrit. La première fonction est en outre implémentée sur un premier cluster de ladite seconde puce électronique et la seconde fonction est en outre implémentée sur un second cluster de ladite seconde puce électronique. Un système comprenant une première puce électronique selon la revendication 8 interconnectée à une troisième puce électronique de type multi-cœur distincte de ladite première puce électronique est décrit. La première fonction est en outre implémentée sur un premier cœur de ladite troisième puce électronique et la seconde fonction est en outre implémentée sur un second cœur de ladite troisième puce électronique. Les caractéristiques de l'invention mentionnées ci-dessus, ainsi que d'autres, apparaîtront plus clairement à la lecture de la description suivante d'un exemple de réalisation, ladite description étant faite en relation avec les dessins joints, parmi lesquels : illustre une architecture de composant de type manycore selon un premier mode de réalisation; illustre une architecture de composant de type manycore dans lequel des clusters sont reliés en point à point; illustre une architecture de composant de type manycore dans lequel des clusters sont reliés par bus parallèle; illustre une architecture de composant de type manycore selon un second mode de réalisation; illustre un système comprenant deux composants de type manycore selon un mode de réalisation particulier ; illustre un système comprenant deux composants, un composant manycore et un composant de type multi-cœur,selon un mode de réalisation particulier ; et, illustre schématiquement un procédé de transmission de données entre des fonctions implémentées sur une puce électronique de type manycore comprenant une pluralité de cœurs d’exécution. EXPOSE DETAILLE DE MODES DE REALISATION La Fig. 1 A illustre une architecture de composant manycore selon un premier mode de réalisation. Au sein d’un même composant ou puce P, on dispose d’une pluralité de clusters, C0 à C4. Chaque cluster comprend une pluralité de cœurs ou unités de calcul. Chaque cœur communique avec les autres cœurs du cluster à travers une mémoire partagée. Les clusters C0 à C4 sont interconnectés entre eux par au moins deux systèmes de communication distincts S1 et S2. Dans un mode de réalisation, les deux systèmes de communication distincts S1 et S2 sont de conceptions différentes. Sur la Fig. 1A, le premier système de communication S1 est représenté en trait plein et le second système de communication est représenté en trait pointillé S2. Le composant manycore peut comprendre d’autres composants bien connus non représentés sur la Fig. 1A (e.g. cache, mémoire, ROM, RAM, etc). Dans un mode de réalisation particulier, le premier système de communication S1 assure l’acheminement déterministe des données. Ce premier système de communication S1 est typiquement de type communication en point à point (e.g. NoC, connu sous la terminologie française de «réseau sur une puce»). Tous les chemins entre les clusters étant des liens dédiés, l’acheminement des données est garanti avec une latence maitrisée. NoC est une technique de conception de système de communication entre les clusters sur le composant manycore. Un système de communication de type NoC applique les théories et méthodes de réseau aux communications à l'intérieur du composant. Un système de communication de type NoC bus série a en outre l’avantage d’être scalable. Il permet notamment de multiplier les liaisons point à point entre clusters. Dans un mode de réalisation particulier, le second système de communication S2 n’assure pas ce déterminisme dans l’acheminement des données. En revanche, il offre la possibilité d’échanges via des interfaces diverses. Ce deuxième système de communication S2 est typiquement de type bus parallèle (e.g. AXI). Dans ce second système de communication, l’acheminement des données n’est pas garanti avec une latence maitrisée. La Fig. 1B illustre une telle connexion en point à point des clusters C0 à C4 . Sur cette figure 1B, chaque couple de flèches représente une connexion Bus PP entre deux clusters en point à point. Toutes les connexions ne sont pas représentées. Par exemple, le cluster C1 peut également être connecté au cluster C3 en point à point par un bus de type NoC. L’AXI est un protocole permettant l’interconnection des clusters par l’intermédiaire d’un bus parallèle. Ce protocole fait partie du standard AMBA (acronyme anglais de «Advanced Microcontroller Bus Architecture») développé par la société ARM Limited. Le protocole établit simplement les règles de communication entre les différents modules (e.g. clusters) d'une puce. La Fig. 1C illustre une telle connexion des clusters C0 à C4 par un bus parallèle. Sur cette Fig.1C, chaque couple de flèches représente une connexion Bus Par entre un cluster et une barre de distribution B dist , i.e. un bus destiné à la distribution de données sur plusieurs types d’interfaces (e.g. DDR, PCxpres, CAN, UART I2C, SPI, etc). Ainsi, les clusters C0 à C4 sont interconnectés entre eux par l’intermédiaire de la barre de distribution B dist . Cette puce P est avantageusement utilisée pour implémenter des fonctions avioniques qui nécessitent une sûreté accrue. Ainsi, dans un avion plusieurs fonctions critiques doivent échanger des données. Les données en question sont par exemple des paramètres de vol tels que l’altitude de l’avion, sa vitesse, etc. Sur la Figure 1, une première fonction A, e.g. surveillance («monitoring» en anglais) de paramètres de vol est implémentée sur un premier cluster C4 et une seconde fonction B, e.g. gérant des commandes de vol, est implémentée sur un second cluster C0 distinct du premier cluster C4. Selon un mode particulier de réalisation, la fonction B est également implémentée sur un troisième cluster C2 distinct des premier et second clusters C4 et C0. La fonction B implémentée sur le cluster C2 est appelée fonction «redondée» et est notée B’. Il s’agit bien de la même fonction que la fonction B implémentée sur le cluster C0. En cas de défaillance du cluster C0, la fonction B implémentée sur C0 est arrêtée. Grâce à la fonction «redondée» B’, un fonctionnement correct du système avionique est maintenu. En effet, la fonction A peut continuer à échanger des données avec la fonction B’ implémentée sur le cluster C2. Les données sont par exemple échangées en passant du cluster C4 au cluster C3 et du cluster C3 au cluster C2. Les échanges de données entre C4 et C2 via C3 peuvent se faire au travers d’un système de communication interne à la puce, e.g. de type NoC. Ainsi, l’implémentation de la fonction B sur deux clusters distincts C0 et C2 permet d’améliorer nettement la fiabilité du système avionique. Selon une variante de réalisation, la fonction B est implémentée sur plus de deux clusters distincts afin d’augmenter la redondance et donc la fiabilité. Toutefois, dans le mode de réalisation de la Fig. 1A, la défaillance d’un lien d’échange de données entre deux clusters, e.g. entre C2 et C3, ou bien du système de communication de type NoC dans son ensemble peut provoquer un arrêt du système avionique ou au moins de certaines fonctions lesquelles peuvent être critiques d’un point de vue sûreté. La Fig. 2 illustre une architecture de composant manycore selon un second mode de réalisation. Au sein d’un même composant ou puce P, on dispose d’une pluralité de clusters, C0 à C4. Chaque cluster comprend une pluralité de cœurs ou unités de calcul. Chaque cœur communique avec les autres cœurs du cluster à travers une mémoire partagée. Les clusters C0 à C4 sont interconnectés entre eux par au moins deux systèmes de communication S1 et S2, e.g. de type NoC et bus parallèle. Selon ce mode de réalisation particulier, les mêmes données sont échangées sur deux systèmes de communication différents, e.g. sur un premier système de type NoC et un second système de type bus parallèle. Sur la Fig. 2, les échanges de données via le premier système de communication sont représentés par des flèches en traits pleins et les échanges de données via le second système de communication sont représentés par des flèches en traits pointillés. Ainsi, en cas de défaillance d’un des systèmes de communication dans son ensemble ou bien d’un des liens de ce système de communication, le second système de communication permet de maintenir l’échange de données. Par exemple, lorsque la fonction A implémentée sur C4 envoie des données à la fonction B’ implémentée sur C2, elle les envoie via les liens L0 et L1 appartenant au premier système de communication et également via les liens L2 et L3 appartenant au second système de communication Ainsi, en cas de défaillance du premier système de communication, e.g. de type NoC, les échanges de données continuent via le second système de communication, e.g. bus parallèle de type AXI. Selon un autre exemple, en cas de défaillance du lien L2 entre le cluster C3 et le cluster C4 du second système de communication, les échanges de données peuvent continuer sur l’autre lien L0 appartenant au premier système de communication. Dans le cas où aucune défaillance ne se produit, la fonction B’ peut le cas échéant recevoir deux fois les mêmes données, i.e. une fois pour chaque système de communication. Dès lors, il peut être décidé que la fonction B’ n’utilise que les données reçues en premier et donc ignore les mêmes données qui seraient reçues en second. Selon une variante, une priorité peut être donnée à un système de communication par rapport à l’autre. Ainsi, si la priorité est donnée au premier système de communication et que la fonction B’ reçoit des données en provenance de la fonction A via ces deux systèmes de communication, elles utilisent les données en provenance du premier système de communication et ignorent les données en provenance du second système de communication. Selon une variante de réalisation, les données entre deux clusters sont échangées par l’intermédiaire de plus de deux systèmes de communication différents afin d’augmenter la redondance et donc la fiabilité. Les systèmes de communication de type NoC et bus parallèle sont donnés au titre de simples exemples illustratifs. D’autres systèmes de communication fonctionnant selon d’autres protocoles de communication et permettant l’échange de données entre clusters peuvent être utilisés à la place ou en plus des systèmes de communication de type NoC et bus parallèle. La Fig. 3 illustre un système comprenant deux composants manycore selon un mode de réalisation particulier. Le système comprend un premier composant manycore P1 et un second composant manycore P2, lesquels sont interconnectés par au moins deux liens de communication La et Lb. Chaque composant P1 et P2 comprend une pluralité de clusters, C0 à C4. Chaque cluster comprend une pluralité de cœurs ou unités de calcul. Chaque cœur communique avec les autres cœurs du cluster à travers une mémoire partagée. Les clusters C0 à C4 sont interconnectés entre eux par au moins deux systèmes de communication S1 et S2, e.g. de type NoC et bus parallèle. L’association de plusieurs composants manycore permet d’éviter les modes communs de défaillance. Ainsi, en cas de défaillance du composant P1, les fonctions A et B sont assurées par le composant P2. Dans un autre exemple de fonctionnement, la fonction A implémentée sur le composant P1 peut échanger des données avec la fonction B ou B’ située sur le même composant P1 selon les modes de réalisation décrits en référence aux Figs 1 et 2. En outre, la fonction A implémentée sur le composant P1 peut échanger des données avec la fonction B implémentée sur le second composant P2 grâce au lien La d’un premier système de communication (e.g. de type NoC) ou grâce au lien Lb d’un second système de communication (e.g. bus parallèle). Dans ce mode de réalisation, les composants échangent les données via au moins deux systèmes de communication, e.g. de type NoC et bus parallèle comme illustré sur la Fig. 3. Selon une variante de réalisation (non représentée sur la fig. 3), la fonction B peut également être implémentée dans le composant P2 sur un autre cluster distinct de C2 sur lequel elle est déjà implémentée afin d’augmenter la redondance et donc la fiabilité du système. La Fig. 4 illustre un système comprenant deux composants selon un mode de réalisation particulier. Le système comprend un premier composant manycore P1 et un second composant multi-coeur P3 lesquels sont interconnectés par au moins deux liens de communication Lc et Ld. Le composant P1 comprend une pluralité de clusters, C0 à C4. Chaque cluster comprend une pluralité de cœurs ou unités de calcul. Chaque cœur communique avec les autres cœurs du cluster à travers une mémoire partagée. Les clusters C0 à C4 sont interconnectés entre eux par au moins deux systèmes de communication S1 et S2, e.g. de type NoC et bus parallèle. Le composant P3 est un composant multi-cœur, e.g. quadri-cœur comme illustré sur la Fig.4. L’association de plusieurs composants mettant en œuvre des technologies différentes permet d’éviter des modes communs de défaillance. Ainsi, en cas de défaillance du composant P1, les fonctions A et B sont assurées par le composant P3. Dans le cas où les deux composants P1 et P3 mettraient en œuvre des technologies identiques et/ou seraient de même marque, la probabilité que les deux composants ne fonctionnent plus en même temps serait accrue. Dans un autre exemple de fonctionnement, la fonction A implémentée sur le composant P1 peut échanger des données avec la fonction B ou B’ située sur le même composant P1 selon les modes de réalisation décrits en référence aux Figs 1 et 2. La fonction A implémentée sur le composant P1 peut en outre échanger des données avec la fonction B implémentée sur le second composant P3 via un premier système de communication en utilisant par exemple des liens Lc, e.g. de type Ethernet ou via un second système de communication en utilisant par exemple des liens Ld, e.g. de type PCIe (acronyme anglais de «Peripheral Component Interconnect Express»). Pour passer par le lien Lc, on utilise le NoC et pour passer par le lien Ld on utilise le bus parallèle. D’autres technologies peuvent être utilisées pour l’échange de données entre les deux puces telles que GPIO (acronyme anglais de «General Purpose Input/Output»), USB (acronyme anglais de «Universal Serial Bus»), CAN (acronyme anglais de «Controller Area Network»). Dans ce mode de réalisation, les composants échangent les données grâce aux liens Lc et Ld d’au moins deux systèmes de communication. Dans un autre mode de réalisation, le premier composant manycore P1 est connecté à la fois à un composant manycore P2 et à un composant multi-cœur P3 grâce à au moins deux systèmes de communication afin d’augmenter la redondance de fonction et également la redondance de liens de communication. La Fig. 5 illustre schématiquement un procédé de transmission de données entre des fonctions implémentées sur une première puce électronique de type manycore comprenant une pluralité de cœurs d’exécution, lesdits cœurs d’exécution étant regroupés en clusters selon un mode particulier de réalisation. Lors d’une étape S100, une première fonction est implémentée sur un premier cluster d’un composant électronique manycore, ladite première fonction échangeant des données avec une seconde fonction. Lors d’une étape S110, la seconde fonction est implémentée sur un second cluster distinct du premier cluster. Lors d’une étape S112, la seconde fonction est également implémentée sur un troisième cluster distinct desdits premier et second clusters. Lors d’une étape S114, au moins une donnée est transmise entre ladite première fonction et ladite seconde fonction. Selon un mode particulier de réalisation, ladite donnée est transmise deux fois, à la fois sur un premier lien de communication appartenant à un premier système de communication et sur un second lien de communication appartenant à un second système de communication différent dudit premier système de communication. Les variantes de réalisation décrites en références aux Figs 1 à 4 s’appliquent également au procédé de transmission de données. Un procédé de transmission de données entre des fonctions implémentées sur une première puce électronique (P1) de type manycore comprenant une pluralité de cœurs d’exécution, lesdits cœurs d’exécution étant regroupés en clusters, lesdits clusters étant interconnectés par au moins deux systèmes de communication, comprenant les étapes de: - implémenter (S100) une première fonction sur un premier cluster (C4); - implémenter (S110) une seconde fonction sur un second cluster (C0), caractérisée en ce que ladite seconde fonction est également implémentée (S112) sur un troisième cluster (C2) distinct desdits premier et second clusters; et - transmettre (S114) au moins une donnée entre ladite première fonction et ladite seconde fonction. Le procédé selon la revendication 1, dans lequel transmettre au moins une donnée entre ladite première fonction et ladite seconde fonction comprend transmettre une donnée entre ladite première fonction et ladite seconde fonction à la fois sur un premier lien de communication (L0, L1) appartenant à un premier système de communication et sur un second lien de communication (L2, L3) appartenant à un second système de communication différent dudit premier système de communication. Le procédé selon la revendication 1 ou 2, dans lequel ledit premier système de communication est de type réseau sur une puce. Le procédé selon l’une des revendications 1 à 3, dans lequel ledit second système de communication est un bus parallèle. Le procédé selon l’une des revendications 1 à 4, dans lequel ladite première puce électronique (P1) étant interconnectée à une seconde puce électronique (P2) de type manycore distincte de ladite première puce électronique, ladite première fonction est en outre implémentée sur un premier cluster (C4) de ladite seconde puce électronique et ladite seconde fonction est en outre implémentée sur un second cluster (C0) de ladite seconde puce électronique. Le procédé selon la revendication 5, dans lequel ladite première fonction implémentée sur l’une desdites première ou seconde puces transmet au moins une donnée à ladite seconde fonction implémentée sur l’autre desdites première ou seconde puces à la fois sur un premier lien de communication (L0, L1, La) de type réseau sur une puce et sur un second lien de communication (L2, L3, Lb) de type bus parallèle. Le procédé l’une des revendications 1 à 4, dans lequel ladite première puce électronique (P1) étant interconnectée à une troisième puce électronique (P3) de type multi-cœur, ladite première fonction est en outre implémentée sur un premier cœur (Cr1) de ladite troisième puce électronique et ladite seconde fonction est en outre implémentée sur un second cœur (Cr2) de ladite troisième puce électronique. Le procédé selon la revendication 7, dans lequel ladite première fonction implémentée sur l’une desdites première ou troisième puces transmet au moins une donnée à ladite seconde fonction implémentée sur l’autre desdites première ou troisième puces à la fois sur un premier lien de communication de type Ethernet (Lc) et sur un second lien de communication de type PCIe (Ld). Une puce électronique de type manycore comprenant une pluralité de cœurs d’exécution, lesdits cœurs d’exécution étant regroupés en clusters, lesdits clusters étant interconnectés par un système de communication, comprenant : - un premier cluster sur lequel est implémentée une première fonction ; - un second cluster sur lequel est implémentée une seconde fonction; - un troisième cluster sur lequel est implémentée ladite seconde fonction, ledit troisième cluster étant distinct desdits premier et second clusters; et - des liens de communication entre ledit premier cluster et lesdits second et troisième clusters configurés pour transmettre au moins une donnée entre ladite première fonction et ladite seconde fonction. Un système comprenant une première puce électronique selon la revendication 9 interconnectée à une seconde puce électronique de type manycore distincte de ladite première puce électronique, dans lequel ladite première fonction est en outre implémentée sur un premier cluster de ladite seconde puce électronique et ladite seconde fonction est en outre implémentée sur un second cluster de ladite seconde puce électronique. Un système comprenant une première puce électronique selon la revendication 9 interconnectée à une troisième puce électronique de type multi-cœur distincte de ladite première puce électronique, dans lequel ladite première fonction est en outre implémentée sur un premier cœur de ladite troisième puce électronique et ladite seconde fonction est en outre implémentée sur un second cœur de ladite troisième puce électronique.