FR2990535A1 - Procede de transmission de donnees dans un systeme sur puce - Google Patents

Procede de transmission de donnees dans un systeme sur puce Download PDF

Info

Publication number
FR2990535A1
FR2990535A1 FR1254401A FR1254401A FR2990535A1 FR 2990535 A1 FR2990535 A1 FR 2990535A1 FR 1254401 A FR1254401 A FR 1254401A FR 1254401 A FR1254401 A FR 1254401A FR 2990535 A1 FR2990535 A1 FR 2990535A1
Authority
FR
France
Prior art keywords
module
flit
elementary
message
received
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
FR1254401A
Other languages
English (en)
Inventor
Michael Soulie
Riccardo Locatelli
Antonio-Marcello Coppola
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Grenoble 2 SAS
Original Assignee
STMicroelectronics Grenoble 2 SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by STMicroelectronics Grenoble 2 SAS filed Critical STMicroelectronics Grenoble 2 SAS
Priority to FR1254401A priority Critical patent/FR2990535A1/fr
Priority to US13/894,093 priority patent/US9461913B2/en
Publication of FR2990535A1 publication Critical patent/FR2990535A1/fr
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/72Routing based on the source address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • G06F13/4018Coupling between buses with data restructuring with data-width conversion

Abstract

L'invention concerne un procédé de transmission d'un message dans un chemin de données d'un réseau, le procédé comprenant des étapes de : transmission d'un message (DT) sur un bus d'entrée (IB1) d'un module d'interface d'entrée (Nlj), le message étant reçu par flits de taille correspondant à la largeur du bus d'entrée, génération d'un indicateur de validité pour chaque flit élémentaire constituant chaque flit reçu, transmission du message reçu sur un bus de sortie (OB1) du module d'interface d'entrée vers un module d'interface destinataire (Nlk), le message étant transmis par flits de taille correspondant à la largeur du bus de sortie, transmission vers le module d'interface destinataire, de chaque indicateur de validité généré, en association avec le flit élémentaire correspondant, réception par le module d'interface destinataire des flits constituant le message et des indicateurs de validité associés, et rejet d'un flit reçu si chaque flit élémentaire du flit est associé à un indicateur de validité à l'état invalide.

Description

PROCEDE DE TRANSMISSION DE DONNEES DANS UN SYSTEME SUR PUCE La présente invention concerne la transmission de données dans un réseau comportant des bus de différentes largeurs. La présente invention s'applique notamment aux systèmes sur puce SoC (System on Chip), et en particulier aux réseaux sur puce NoC (Network on Chip).
Les systèmes sur puce résultent de l'intégration dans une même puce de plusieurs modules pouvant comprendre plusieurs processeurs, sélectionnés dans une bibliothèque de modules. Les modules d'un système sur puce ne sont pas nécessairement compatibles entre eux notamment en termes de signal d'horloge, de protocole de communication et largeur de bus d'interface. Généralement, des passerelles (bridge) assurant une conversion de protocole de communication et/ou de largeur de bus et/ou de fréquence d'horloge, sont mises en oeuvre pour interconnecter deux bus d'interface non compatibles entre eux. Toutefois, lorsque le nombre de modules à interconnecter ayant des interfaces incompatibles est élevé, le nombre de passerelles nécessaires devient excessif. En effet, la prévision d'un nombre élevé de passerelles induit des coûts importants en terme de surface de silicium, de latence et de consommation énergétique. Pour faciliter la conception de systèmes sur puce et en particulier l'interconnexion des modules de tels systèmes, des réseaux ont été développés. Ces réseaux, appelés "réseaux sur puce" mettent généralement en oeuvre des moyens de communication distribués et sont basés sur une communication par commutation de paquets et par trou de vers (wormhole). Certains de ces réseaux comprennent trois types de composants de communication, à savoir des interfaces de réseau assurant la connexion d'un module avec le réseau, des routeurs assurant la transmission de paquets entre les interfaces de réseau et d'autres routeurs, et des liaisons entre les routeurs et entre les interfaces réseau et les routeurs. Chaque interface de réseau assure notamment une conversion de protocole, et/ou de fréquence d'horloge, et/ou de largeur de bus de donnée, entre un bus d'interface d'un module auquel elle est connectée et un bus interne au réseau. Par ailleurs, certains modules comportent leur propre réseau qui doit alors être relié au réseau sur puce. En outre, pour des raisons d'optimisation notamment de surface de puce occupée par le système, il peut être utile de prévoir des largeurs de bus de donnée différentes en fonction des besoins de débit de transmission des modules à interconnecter. Il en résulte qu'une conversion de largeur de bus de donnée doit également pouvoir être effectuée dans certaines liaisons entre routeurs. Par conséquent, plusieurs conversions de largeur de bus de donnée peuvent être appliquées à un message durant l'acheminement de celui-ci entre un module émetteur et un module destinataire.
Deux types de problèmes peuvent survenir lors d'une telle conversion de largeur de bus de donnée. Lors d'une conversion d'un bus d'une certaine largeur vers un bus de largeur inférieure, des données supplémentaires invalides peuvent être générées et transmises dans le réseau. En effet, un message transmis par un bus de donnée ne présente pas nécessairement une taille correspondant à un nombre entier de fois la largeur du bus. Il en résulte qu'un ou plusieurs des derniers mots du message transmis par le bus de donnée contiennent des données non valides. Si ce message est converti pour être transmis par un bus de donnée de largeur inférieure, les données non valides transmises peuvent se retrouver seules dans un mot transmis par le bus de donnée de largeur inférieure. Il en résulte une consommation inutile de bande passante. Lors d'une conversion vers un bus de donnée de largeur supérieure, des données valides peuvent être placées sur de mauvaises lignes de donnée du bus de donnée de largeur supérieure. Une telle conversion peut donc conduire à des erreurs de reconstruction de messages transmis par le réseau. Il est donc souhaitable d'assurer des conversions de largeur de bus de donnée de manière à éviter ces problèmes. Il est également souhaitable d'assurer de telles conversions en mettant en oeuvre des mécanismes 30 simples et occupant une surface minimum sur la puce. Des modes de réalisation concernent un procédé de transmission d'un message dans un chemin de données d'un réseau, comportant des bus de largeurs différentes, le procédé comprenant des étapes consistant à : 35 transmettre un message sur un bus d'entrée d'un module d'interface d'entrée du réseau, le message étant reçu par le module d'interface, divisé en flits correspondant à la largeur du bus d'entrée, et transmettre le message reçu sur un bus de sortie du module d'interface vers un module d'interface destinataire, le message transmis sur le bus de sortie étant divisé en flits ayant une taille correspondant à la largeur du bus de sortie du module d'interface d'entrée. Selon un mode de réalisation, le procédé comprend des étapes consistant à: générer un indicateur de validité pour chaque flit élémentaire constituant chaque flit reçu par le module d'interface d'entrée, chaque flit élémentaire ayant une taille correspondant ou inférieure à la plus petite largeur de bus du réseau, chaque indicateur de validité indiquant si le flit élémentaire correspondant est valide, transmettre vers le module d'interface destinataire, chaque indicateur de validité généré, en association avec le flit élémentaire correspondant, et recevoir par le module d'interface destinataire, des flits constituant le message et les indicateurs de validité associés, et rejeter un flit reçu si chaque flit élémentaire du flit est associé à un indicateur de validité à l'état invalide. Selon un mode de réalisation, le procédé comprend l'application d'une permutation circulaire aux flits élémentaires FLT1 d'un flit d'un message reçu par le module d'interface destinataire, en fonction d'une adresse de destination du message reçu, lorsque la taille du message reçu est inférieure à la moitié de la largeur d'un bus de sortie du module d'interface destinataire. Selon un mode de réalisation, les indicateurs de validité sont générés par le module d'interface d'entrée en fonction de la taille du message, de la largeur du bus d'entrée par lequel le message est reçu et d'une adresse de destination du message. Selon un mode de réalisation, le procédé comprend, dans le module d'interface d'entrée, et/ou dans le module d'interface destinataire, des étapes de mémorisation des flits reçus dans une première mémoire tampon, et de mémorisation des indicateurs de validité générés ou reçus dans une seconde mémoire tampon. Selon un mode de réalisation, le message présente une taille inférieure ou égale à celle d'un flit élémentaire, et est reçu dans un flit comportant plusieurs flits élémentaires, l'adresse de destination du message étant utilisée pour déterminer la position du flit élémentaire contenant le message dans le flit reçu, les indicateurs de validité des flits élémentaires du flit reçu étant déterminés en fonction de cette position. Selon un mode de réalisation, le message présente une taille inférieure ou égale à la moitié d'un flit reçu comportant plusieurs flits élémentaires, l'adresse de destination du message étant utilisée pour déterminer la position de chaque flit élémentaire contenant une partie du message dans le flit reçu, les indicateurs de validité des flits élémentaires du flit reçu étant déterminés en fonction de cette position. Selon un mode de réalisation, le procédé comprend des étapes consistant à: recevoir des flits constituant le message par un module de liaison du réseau situé dans le chemin de donnée, et des indicateurs de validité associés aux flits reçus, diviser le message reçu en flits correspondant à la largeur d'un bus de sortie du module de liaison, et transmettre vers le module d'interface destinataire chaque flit obtenu à l'étape de division, si chaque flit élémentaire contenu dans le flit est associé à un indicateur de validité à l'état invalide, chaque flit transmis par le module de liaison étant transmis en association avec l'indicateur de validité de chaque flit élémentaire contenu dans le flit. Selon un mode de réalisation, le procédé comprend, dans le module de liaison, des étapes de mémorisation des flits reçus dans une première mémoire tampon, et de mémorisation des indicateurs de validité reçus dans une seconde mémoire tampon. Des modes de réalisation concernent également un système comprenant des modules maitres et des modules esclaves, chaque module maitre et esclave étant relié à un réseau par l'intermédiaire d'un module d'interface, les modules d'interface étant configurés pour mettre en oeuvre le procédé tel que défini précédemment. Selon un mode de réalisation, le système comprend des modules de liaison situés dans le réseau sur des chemins de donnée et configurés pour : recevoir des flits constituant un message, et les indicateurs de validité associés aux flits reçus, diviser le message reçu en flits correspondant à la largeur d'un bus de sortie du module de liaison, et transmettre sur le bus de sortie chaque flit obtenu à l'étape de division, si chaque flit élémentaire contenu dans le flit est associé à un indicateur de validité à l'état invalide, chaque flit transmis étant transmis par le module de liaison en association avec l'indicateur de validité de chaque flit élémentaire contenu dans le flit. Selon un mode de réalisation, chaque module de liaison comprend une première mémoire tampon pour mémoriser les flits reçus, et une 5 seconde mémoire tampon pour mémoriser des indicateurs de validité reçus. Selon un mode de réalisation, chaque bus du réseau est associé à une ligne de transmission d'indicateurs de validité par flit élémentaire contenu dans chaque flit susceptible d'être transmis par le bus. Selon un mode de réalisation, le réseau comprend des modules de 10 routage pour acheminer des messages vers un module destinataire, en fonction d'une adresse de destination du message. Des modes de réalisation concernent également un système sur puce, comprenant un système tel que précédemment défini. Selon un mode de réalisation, le système sur puce comprend au 15 moins deux des types de bus appartenant à un ensemble comprenant STBus, AMBA, AXI, AHB, APB, CoreConnect, et Wishbone. Des exemples de réalisation de l'invention seront décrits dans ce qui suit, à titre non limitatif en relation avec les figures jointes parmi lesquelles : 20 la figure 1 représente schématiquement un système sur puce comportant un réseau sur puce, seule une partie du réseau assurant la transmission de requêtes étant représentée, la figure 2 représente schématiquement des composants mis en oeuvre dans un chemin de transmission de données entre deux modules du 25 système sur puce, selon un mode de réalisation, la figure 3 représente schématiquement un module d'interface réseau, selon un mode de réalisation, les figures 4A à 41 représentent schématiquement différents modes de réalisation d'une partie émission d'un module d'interface réseau, selon 30 les largeurs de bus en amont et en aval du module d'interface réseau, les figures 5A à 51 représentent schématiquement différents modes de réalisation d'un module de conversion d'un module de liaison du réseau, selon les largeurs de bus en amont et en aval du module de liaison, les figures 6A à 61 représentent schématiquement différents modes de réalisation d'une partie réception d'un module d'interface réseau, selon les largeurs de bus en amont et en aval du module d'interface réseau, les figures 7 et 8 représentent des tables de valeurs de bits de validité mises en oeuvre par les modules d'interface réseau, en fonction d'un nombre mots à transférer dans le réseau et d'une adresse de destination des mots à transférer, selon un mode de réalisation, les figures 9A et 9B et 10A à 10D représentent schématiquement des matrices de commutation de données transférées dans le réseau, mises en oeuvre par les modules d'interface réseau. La figure 1 représente un système sur puce SS comprenant des modules maîtres IN1 À IN5 et des modules esclaves TG1 à TG6 interconnectés par un réseau sur puce NT. Les modules maîtres IN1-1N5 émettent des requêtes à destination des modules esclaves TG1-TG6, et chacun des modules esclaves émet une réponse à une requête reçue, à destination du module maître émetteur de cette requête. Les requêtes et les réponses sont transmises par le réseau NT. Par souci de clarté, seule une partie du bus NT assurant la transmission des requêtes est représentée, le réseau NT comprenant une partie (non représentée) assurant la transmission des réponses. La partie du réseau assurant la transmission des réponses peut être symétrique de celle assurant la transmission des requêtes ou différente. Le réseau NT assure la transmission de données par exemple sur la base d'une commutation par paquet. Le réseau NT comprend des modules d'interface NI1 à NI5 et NI1 1 à NI16, des routeurs RTR1 à RTR3 et des modules de liaison ALK1, ALK2 entre les modules d'interface et les routeurs et entre les routeurs. Chaque module IN1-1N5, TG1-TG6 est relié au réseau NT par l'intermédiaire d'un module d'interface N11-N15 et NI1 1-NI16. Dans ce qui suit, "bus de donnée" ou "bus" désigne par convention indifféremment une liaison de transmission de donnée à l'extérieur du réseau, connectée à un module d'interface N11-N15 et NI1 1-NI16, ou une liaison de transmission de donnée à l'intérieur du réseau. En émission vers le réseau NT, chaque module d'interface N11-N15, NI1 1-NI16 assure une conversion de protocole de communication entre le protocole utilisé par le module IN1-1N5, TG1-TG6 auquel il est connecté et le réseau, et éventuellement une conversion de fréquence d'horloge, et/ou de largeur de bus, ainsi qu'une encapsulation des données à transmettre. En réception en provenance du réseau NT, chaque module d'interface N11-N15, NII 1-NI16 assure une conversion de protocole de communication entre le protocole utilisé par le module IN1-1N5, TGI-TG6 auquel il est connecté et le réseau, une extraction des données reçues, et éventuellement une conversion de fréquence d'horloge, et/ou de largeur de bus. Le réseau NT comprend des routeurs RTRI , RTR2, RTR3 pour acheminer les données émises par les modules d'interface N11-N15, NII 1-NI16 vers les modules d'interface destinataires, et des modules de liaison ALKI , ALK2 pour assurer notamment des conversions de largeur de bus. Les routeurs RTRI-RTR3 comprennent chacun plusieurs ports d'entrée/sortie, et sélectionnent un port pour acheminer un message reçu, en fonction d'une information de destination du message se trouvant dans l'entête du message.
Dans l'exemple de la figure 1, le routeur RTRI est connecté aux modules d'interface NI1, NI2, NI1 1 et NI12, et est relié au routeur RTR2 par l'intermédiaire du module de liaison ALKI . Le routeur RTR2 est connecté aux modules d'interface NI3, NI13 et NI14, ainsi qu'au routeur RTR3. Le routeur RTR3 est connecté aux modules d'interface NI4, NI5 et NI6 et est relié au module d'interface NI15 par l'intermédiaire du module de liaison ALK2. Les données sont transmises dans le réseau NT encapsulées dans des messages comprenant un entête et éventuellement des données de fin de message. Les messages sont eux-mêmes divisés en unités de contrôle de flux ("flow control units") appelées "flits", comprenant un nombre de bits correspondant à la largeur du bus. Les messages sont transmis dans le réseau NT conformément au mode de routage par "trou de vers" selon lequel un chemin de transmission de données est maintenu ouvert entre un module émetteur et un module récepteur tant que tous les flits composant un message n'ont pas été transmis, le premier flit du message contenant des données de routage du message permettant à chaque routeur RTRI-RTR3 de déterminer à quel module (module d'interface ou routeur) du réseau NT le message doit être transmis. Le réseau NT peut mettre en oeuvre la topologie "Spidergon" 35 développée par le Demandeur, ou une architecture dérivée. Les bus de connexion des modules d'interface N11-N15, NI11-N116 avec les modules maîtres et esclaves IN1-1N5, TG1-TG6 peuvent mettre en oeuvre des protocoles tels que le protocole STBus développé par le Demandeur, les protocoles de la famille AMBA tels que ACE, AXI, AHB, APB développés par la société ARM, ou le protocole CoreConnect développé par la société IBM, ou encore le protocole Wishbone développé en "open source". La figure 2 représente un chemin de transmission de donnée entre un module maître INn émetteur d'une requête ou un module esclave TGm émetteur d'une réponse à une requête, et un module esclave TGp destinataire de la requête ou un module maître INq destinataire de la réponse à la requête. Le chemin de transmission de donnée comprend un module d'interface émetteur N1j, un module de liaison ALK, et un module d'interface récepteur Nlk. Les modules Nlj et Nlk peuvent être n'importe quel module d'interface N11-N15, NI11-N116. Le module ALK peut être situé dans l'un des modules de liaison ALK1, ALK2. Le chemin de transmission de donnée comprend dans le module N1j, un module d'encodage ENC, une mémoire tampon de donnée B1, par exemple de type FIFO (First In, First Out), et un module de décodage DF. Le module ENC est configuré pour découper en flits un message à transmettre DT, en tenant compte des largeurs respectives des bus d'entrée IB1 et de sortie OB1 du module N1j, et des protocoles de communication mis en oeuvre respectivement en amont par le module INn/TGm et en aval du module N1j. La taille des flits générés par le module ENC correspond à la largeur du bus de sortie OB1 du module INj. Les flits générés comprennent un ou plusieurs flits élémentaires dont la taille correspond à la largeur du bus le moins large du système SS. Par exemple, le système SS comprend des bus de 32, 64 et 128 bits. Les flits élémentaires comprennent donc 32 bits, et les flits générés par le module ENC comprennent un, deux ou quatre flits élémentaires. La mémoire B1 est prévue pour mémoriser plusieurs des flits générés par le module ENC. Le module DF est configuré pour lire les flits dans la mémoire B1 et les envoyer sur le bus de sortie OB1 du module N1j. Selon un mode de réalisation, le module Nlj comprend une mémoire tampon de bit de validité BEI, par exemple de type FIFO. La mémoire EB1 est organisée et dimensionnée pour mémoriser un bit de validité par flit élémentaire constituant les flits stockés dans la mémoire B1. Chacun des bits stockés dans la mémoire EB1 indique si le flit élémentaire correspondant dans la mémoire B1 est valide ou non. Le module DF est configuré pour transférer un flit sur le bus de sortie OB1 du module Nlj seulement si le flit comprend au moins un flit élémentaire valide tel qu'indiqué par les bits de validité dans la mémoire EB1 correspondant aux flits élémentaires constituant le flit. Le module DF est également configuré pour envoyer les bits de validité lus dans la mémoire EB1 sur une sortie du module N1j. Le chemin de transmission de donnée comprend dans le module ALK une mémoire tampon B2, un module de chargement LD1 pour charger la mémoire B2 avec des flits reçu par un bus d'entrée IB2, et un module de lecture DF1 pour lire les flits dans la mémoire B2. La mémoire B2 qui peut également être de type FIFO, reçoit du module LD1 les flits d'un message transmis par le réseau NT et reçus par le bus d'entrée IB2 du module ALK.
Le module DF1 est configuré pour transmettre dans le réseau par un bus de sortie 0B2 du module ALK les flits lus dans la mémoire B2. Selon un mode de réalisation, le module ALK comprend une mémoire tampon EB2, par exemple de type FIFO, pour mémoriser des bits de validité de flits élémentaires stockés dans la mémoire B2, transmis par le réseau NT.
Le module LD1 comprend une entrée pour recevoir les bits de validité correspondant aux flits élémentaires reçus. Le module LD1 est configuré pour charger les bits de validité reçus dans la mémoire EB2. Chacun des bits stockés dans la mémoire EB2 indique si le flit élémentaire correspondant dans la mémoire B2 contient une donnée valide ou non. Le module DF1 est configuré lire les mémoires B2 et EB2 et pour transmettre dans le réseau NT seulement les flits lus dans la mémoire B2 qui contiennent au moins un flit élémentaire valide, tel qu'indiqué par le bit de validité correspondant dans la mémoire EB2. Le module DF1 est également configuré pour transmettre dans le réseau les bits de validité lus correspondant aux flits élémentaires transmis. Le chemin de transmission de donnée comprend dans le module Nlk une mémoire tampon B3, un module de chargement LD de la mémoire B3 et un module de décodage DEC. La mémoire B3 qui peut également être de type FIFO, est chargée avec les flits d'un message reçu du réseau par le module LD par un bus d'entrée IB3 du module N lk. Le module DEC est configuré pour transmettre les flits lus dans la mémoire B3 sur un bus de sortie 0B3 du module Nlk vers le module TGp, INq destinataire du message. Le module DEC effectue le cas échéant, une conversion de protocole de communication, et/ou de fréquence d'horloge, et/ou de largeur de bus de donnée. Selon un mode de réalisation, le module Nlk comprend une mémoire tampon EB3 pour mémoriser des bits de validité des flits élémentaires stockés dans la mémoire B3. Le module LD comprend une entrée pour recevoir les bits de validité correspondant aux flits élémentaires reçus et est configuré pour charger les bits de validité reçus dans la mémoire EB3. Le module DEC est configuré pour transmettre vers le module destinataire TGp, INq seulement les flits lus dans la mémoire B3 qui contiennent au moins un flit élémentaire valide, c'est-à-dire correspondant à un bit de validité dans la mémoire EB3 à l'état valide. Le module DEC peut également être configuré pour assurer le chargement de chaque flit élémentaire valide sur une partie correcte du bus de sortie 0B3. Il est à noter que le module ALK peut ne pas être nécessaire et donc peut être omis du chemin de transmission représenté sur la figure 2. La figure 3 représente un module d'interface NI tel que le module Nlj 20 ou Nlk. Le module NI comprend un circuit d'émission de donnée comprenant les éléments du module Nlj représenté sur la figure 2 et un circuit de réception de donnée comprenant les éléments du module Nlk de la figure 2. Les figures 4A à 41, 5A à 51 et 6A à 61 représentent en particulier des circuits de conversion de largeur de bus. 25 Les figures 4A à 41 représentent plus en détail différents modes de réalisation de circuits d'émission de donnée du module d'interface N1j, selon la largeur de chacun des bus d'entrée IB1 et de sortie OB1 du module N1j. La figure 4A illustre le cas où les bus d'entrée IB1 et de sortie de donnée OB1 du module Nlj présentent une largeur correspondant à la taille d'un flit 30 élémentaire, par exemple 32 bits. Le module Nlj comprend un module d'encodage ENC1, des mémoires tampon de donnée B11 et de bit de validité EB11 et un module de lecture DF11. Le module ENC1 comprend un module d'adressage BW11 pour adresser simultanément les mémoires tampon B11 et EB11, et un module de génération de bits de validité EBC1 35 qui écrit dans la mémoire EB11 à une position sélectionnée par le module BW11. La mémoire B11 est dimensionnée pour stocker quelques flits élémentaires et peut être adressée par mot de la taille d'un flit élémentaire. La mémoire EB11 est prévue pour stocker des bits de validité fournis par le module EBC1, et qui peuvent par exemple être adressés individuellement.
La mémoire EB11 est dimensionnée pour stocker un bit de validité par flit élémentaire susceptible d'être stocké dans la mémoire B11. Le module BW11 est configuré pour sélectionner successivement chaque emplacement libre de 32 bits de la mémoire B11 et chaque emplacement libre de 1 bit de la mémoire EB11. Le module ENC1 charge chaque flit FLT1 de 32 bits d'un message DT1 à émettre, dans la mémoire B11 à une position sélectionnée par le module BW11. A chaque chargement d'un flit FLT1 dans la mémoire B11, le module EBC1 génère un bit de validité BE1 à l'état valide (par exemple à un) qui est chargé dans la mémoire EB11 à une position correspondante sélectionnée par le module BW11. Le module DF11 comprend un module d'adressage BR11 qui adresse simultanément les mémoires B11 et EB11 pour transférer successivement chaque flit FLT1 dans la mémoire B11 en sortie du module N1j, si le flit est associé dans la mémoire EB11 à un bit de validité BE1 à l'état valide. Chaque bit BE1 lu dans la mémoire EB11 et correspondant à un flit valide, est également fourni en sortie du module DF11. La figure 4B illustre le cas où le bus d'entrée IB1 du module Nlj présente une largeur correspondant à la taille d'un flit élémentaire, par exemple 32 bits, et le bus de sortie OB1 présente une largeur correspondant à la taille de deux flits élémentaires, soit par exemple 64 bits. Le module Nlj comprend un module d'encodage ENC3, des mémoires tampon de donnée B12 et de bit de validité EB12 et un module de lecture DF12. Le module d'encodage ENC3 comprend un module d'adressage BW13 pour adresser simultanément les mémoires B12 et EB12, et le module de génération de bits de validité EBC1 (figure 4A) qui écrit dans la mémoire EB12. Le module d'encodage ENC3 comprend également des démultiplexeurs D13, ED13 commandés par le module BW13. Le démultiplexeur D13 est commandé par le module BW13 pour pouvoir charger un flit FLT1 de 32 bits d'un message DT1 à transmettre dans chaque emplacement de 32 bits de la mémoire B12. Le démultiplexeur ED13 est commandé par le module BW13 pour pouvoir charger un bit de validité BE1 de 1 bit fourni par le module EBC1 dans chaque emplacement de 1 bit de la mémoire EB12. La mémoire tampon B12 est dimensionnée pour stocker quelques flits FLT2 et peut être adressée par exemple par mot de 64 bits par le module BW13. La mémoire tampon EB12 est prévue pour stocker quelques bits de validité qui peuvent par exemple être adressés par paire par le module BW13. La mémoire EB12 est dimensionnée pour stocker un bit de validité par flit élémentaire susceptible d'être stocké dans la mémoire B12. Le module BW13 est configuré pour sélectionner successivement, à l'aide des multiplexeurs D13 et ED13, chaque emplacement libre de 32 bits de la mémoire B12 et chaque emplacement libre de 1 bit de la mémoire EB12. Le module ENC3 charge chaque flit FLT1 de 32 bits du message DT1 à émettre dans la mémoire B12 à une position sélectionnée par le module BW13 et un emplacement de 32 bits sélectionné par le démultiplexeur D13. A chaque chargement d'un flit dans la mémoire B12, le module EBC1 génère un bit de validité 4BE1 à l'état valide qui est chargé dans la mémoire EB12 à une position correspondante, sélectionnée par le module BW13 et un emplacement de 1 bit sélectionné par le démultiplexeur ED13. Les emplacements de 1 bit non sélectionnés dans la mémoire EB12 sont mis à l'état invalide (par exemple à 0). Le module D F12 comprend un module d'adressage BR12 qui adresse simultanément chaque emplacement de 64 bits de la mémoire B12 et chaque emplacement correspondant de paire de bits BE2 de la mémoire EB12 pour transférer un flit FLT2 de 64 bits en sortie du module N1j, si ce flit est associé à une paire de bits de validité BE2 qui ne sont pas simultanément à l'état invalide. Chaque paire de bits BE2 correspondant à un flit transféré en sortie du module N1j, est également fournie en sortie du module DF12. La figure 4C illustre le cas où le bus d'entrée IB1 du module Nlj présente une largeur correspondant à la taille d'un flit élémentaire, par exemple 32 bits, et où le bus de sortie OB1 présente une largeur correspondant à la taille de quatre flits élémentaires, soit par exemple 128 bits. Le module Nlj comprend un module d'encodage ENC5, des mémoires tampon de donnée B14 et de bit de validité EB14 et un module de lecture DF14. Le module ENC5 comprend un module d'adressage BW15 et le module de génération de bits de validité EBC1 (figure 4A). Le module BW15 adresse les mémoires B14 et EB14, ainsi que le module de génération de bits de validité EBC1 qui écrit dans la mémoire EB14. Le module ENC5 comprend également des démultiplexeurs D15, ED15 commandés par le module BW15. Le démultiplexeur D15 permet de stocker un flit FLT1 de 32 bits d'un message DT1 à transmettre dans chaque emplacement de 32 bits de la mémoire B14. Le démultiplexeur ED15 permet de stocker un bit de validité BE1 de 1 bit fourni par le module EBC1 dans chaque emplacement de 1 bit de la mémoire EB14. La mémoire tampon B14 est dimensionnée pour stocker quelques mots de 128 bits et peut être adressée par exemple par mot de 128 bits par le module BW15. La mémoire tampon EB14 est prévue pour stocker quelques bits de validité qui peuvent par exemple être adressés par groupes de 4 bits par le module BW15. La mémoire EB14 est dimensionnée pour stocker un bit de validité par flit élémentaire susceptible d'être stocké dans la mémoire B14. Le module BW15 est configuré pour sélectionner successivement, à l'aide des démultiplexeurs D15 et ED15, chaque emplacement libre de 32 bits de la mémoire B14 et chaque emplacement libre de 1 bit de la mémoire EB14. Le module ENC5 charge chaque flit FLT1 de 32 bits du message DT1 à émettre dans la mémoire B14 à un emplacement sélectionné par le module BW15. A chaque chargement d'un flit dans la mémoire B14, le module EBC1 génère un bit de validité BE1 à l'état valide qui est chargé dans la mémoire EB14 à une position correspondante, sélectionnée par le module BW15. Les emplacements de 1 bit non sélectionnés dans la mémoire EB14 sont mis à l'état invalide. Le module DF14 comprend un module d'adressage BR14 qui adresse successivement chaque emplacement de 128 bits de la mémoire B14 et chaque emplacement de quatre bits BE4 de la mémoire EB14 correspondant à l'emplacement adressé dans la mémoire B14, pour transférer un flit FLT4 de 128 bits en sortie du module N1j, si ce flit est associé à un groupe de quatre bits de validité BE4 qui ne sont pas simultanément à l'état invalide. Chaque groupe de quatre bits BE4 correspondant à un flit transféré en sortie du module N1j, est également fourni en sortie du module DF14. La figure 4D illustre le cas où le bus d'entrée IB1 du module Nlj présente une largeur correspondant à la taille de deux flits élémentaires, soit par exemple 64 bits, et où le bus de sortie OB1 présente une largeur correspondant à la taille d'un flit élémentaire, soit par exemple 32 bits. Le module Nlj comprend un module d'encodage ENC2, les mémoires tampon de donnée B12 et de bit de validité EB12 (figure 4B) et un module de lecture DF13. Le module d'encodage ENC2 comprend un module d'adressage BW12 des mémoires B12 et EB12, et un module de génération de paires de bits de validité EBC2 qui écrit dans la mémoire EB12. Le module BW12 est configuré pour sélectionner successivement chaque emplacement libre de 64 bits de la mémoire B12 et chaque emplacement correspondant de 2 bit de la mémoire EB12. Le module ENC2 charge chaque flit FLT2 de 64 bits d'un message DT2 à émettre, dans la mémoire B12 à une position sélectionnée par le module BW12. A chaque chargement d'un flit dans la mémoire B12, le module EBC2 génère une paire de bits de validité BE2, comprenant au moins un bit à l'état valide. Chaque paire de bits de validité générée BE2 est chargée dans la mémoire EB12 à une position correspondante sélectionnée par le module BW12. Le module DF13 comprend un module d'adressage BR13 et des multiplexeurs X13, EX13 commandés par le module BR13. Le module BR13 adresse successivement chaque emplacement de 64 bits de la mémoire B12 et chaque paire de bits de validité stockée dans la mémoire EB12, et commande les multiplexeurs X13, EX13 pour transférer en sortie du module N1j, un flit FLT1 de 32 bits sélectionné dans le flit FLT2 de 64 bits adressé par le module BR13, si ce flit est associé à un bit de validité BE1 sélectionné par le multiplexeur EX13, à l'état valide. Au contraire, si le bit de validité du flit FLT1 adressé dans la mémoire B12 et sélectionné par le multiplexeur X13 est nul, c'est-à-dire si le flit est invalide, le flit n'est pas transmis et est supprimé de la mémoire B12. Chaque bit BE1 correspondant à un flit transféré en sortie du module N1j, est également fourni en sortie du module DF13. La figure 4E illustre le cas où les bus d'entrée IB1 et de sortie OB1 du module Nlj présentent une largeur correspondant à la taille de deux flits élémentaires, soit par exemple 64 bits. Le module Nlj comprend le module d'encodage ENC2 (figure 4D), les mémoires tampon de donnée B12 et de bit de validité EB12 (figure 4B), et le module de lecture DF12 (figure 4B). La figure 4F illustre le cas où le bus d'entrée IB1 du module Nlj présente une largeur correspondant à la taille de deux flits élémentaires, soit par exemple 64 bits, et où le bus de sortie OB1 présente une largeur correspondant à la taille de quatre flits élémentaires, soit par exemple 128 bits. Le module Nlj comprend un module d'encodage ENC6, les mémoires tampon de donnée B14 et de bit de validité EB14 (figure 4C) et le module de lecture DF14 (figure 4C). Le module d'encodage ENC6 comprend un module d'adressage BW16 des mémoires B14 et EB14, le module de génération de bits de validité EBC2 (figure 4D) qui écrit dans la mémoire tampon de bit de validité EB14. Le module ENC6 comprend également des démultiplexeurs D16, ED16 commandés par le module BW16. Le démultiplexeur D16 est commandé par le module BW16 pour pouvoir charger un flit FLT2 de 64 bits d'un message DT2 à transmettre dans chaque emplacement de 64 bits de la mémoire B14. Le démultiplexeur ED16 est commandé par le module BW16 pour pouvoir charger deux bits de validité BE2 fournis par le module EBC2 dans chaque emplacement de 2 bits de la mémoire EB14. Le module BW16 est configuré pour sélectionner successivement, à l'aide des démultiplexeurs D16 et ED16, chaque emplacement libre de 64 bits de la mémoire B14 et chaque emplacement libre de 2 bits de la mémoire EB14. Le module ENC6 charge chaque flit FLT2 de 64 bits du message DT2 à émettre dans la mémoire B14 à une position sélectionnée par le module BW16 et par le démultiplexeur D16 commandé par le module BW16. A chaque chargement d'un flit FLT2 de 64 bits dans la mémoire B14, le module EBC2 génère une paire de bits de validité BE2 à l'état valide. La paire de bits de validité générée est chargée dans la mémoire EB14 à une position correspondante, sélectionnée par le module BW16. Les emplacements de 2 bits non sélectionnés dans la mémoire EB14 sont mis à l'état invalide. La figure 4G illustre le cas où le bus d'entrée IB1 du module Nlj présente une largeur correspondant à la taille de quatre flits élémentaires, soit par exemple 128 bits, et où le bus de sortie OB1 présente une largeur correspondant à la taille d'un flit élémentaire, soit par exemple 32 bits. Le module Nlj comprend un module d'encodage ENC4, les mémoires tampon de donnée B14 et de bit de validité EB14 (figure 4C) et un module de lecture DF15. Le module d'encodage ENC4 comprend un module d'adressage BW14 des mémoires B14 et EB14, et un module de génération de bits de validité EBC4 qui écrit dans la mémoire EB14. Le module BW14 est configuré pour sélectionner successivement chaque emplacement libre de 128 bits de la mémoire B14 et chaque emplacement correspondant de 4 bits de la mémoire EB14. Le module ENC4 charge chaque flit FLT4 de 128 bits d'un message DT4 à émettre dans la mémoire B14 à une position sélectionnée par le module BW14. A chaque chargement d'un flit FLT4 de 128 bits dans la mémoire B14, le module EBC4 génère un groupe de quatre bits de validité BE4 comprenant au moins un bit à l'état valide. Le groupe de bits de validité généré est chargé dans la mémoire EB14 à une position sélectionnée par le module BW14. Le module DF15 comprend un module d'adressage BR15 et des multiplexeurs X15, EX15 commandés par le module BR15. Le module d'adressage BR15 adresse successivement chaque emplacement de 128 bits de la mémoire B14 et chaque emplacement de quatre bits BE4 de la mémoire EB14, et commande les multiplexeurs X15, EX15 pour transférer un flit FLT1 de 32 bits sélectionné dans le flit FLT4 de 128 bits adressé par le module BR15, en sortie du module N1j, si ce flit correspond à un bit de validité BE1 sélectionné par le multiplexeur EX15 à l'état valide. Au contraire, si le flit FLT1 adressé dans la mémoire B14 et sélectionné par le multiplexeur X15 est invalide, le flit n'est pas transmis et est supprimé de la mémoire B14. Chaque bit BE1 correspondant à un flit transféré en sortie du module N1j, est également transféré en sortie du module N1j. La figure 4H illustre le cas où le bus d'entrée IB1 du module Nlj présente une largeur correspondant à la taille de quatre flits élémentaires, soit par exemple 128 bits, et où le bus de sortie OB1 présente une largeur correspondant à la taille de deux flits élémentaires, soit par exemple 64 bits. Le module Nlj comprend le module d'encodage ENC4 (figure 4G), les mémoires tampon de donnée B14 et de bit de validité EB14 (figure 4C), et un module de lecture DF1 6. Le module DF16 comprend un module d'adressage BR16 et des multiplexeurs X16, EX16 commandés par le module BR16. Le module d'adressage BR16 adresse successivement chaque emplacement de 128 bits de la mémoire B14 et chaque emplacement correspondant de quatre bits BE4 de la mémoire EB14, et commande les multiplexeurs X16, EX16 pour transférer un flit FLT2 de 64 bits sélectionné dans le flit FLT4 de 128 bits adressé par le module BR16, en sortie du module N1j, si ce flit est associé à une paire de bits de validité BE2 sélectionnée dans la mémoire EB14 par le multiplexeur EX16, dont au moins un bit est à l'état valide. Au contraire, si le flit FLT2 adressé dans la mémoire B14 et sélectionné par le multiplexeur X16 est invalide, il n'est pas transmis et est supprimé de la mémoire B14. Chaque paire de bits BE2 correspondant à un flit transféré en sortie du module N1j, est également transférée en sortie du module N1j. La figure 41 illustre le cas où les bus d'entrée IB1 et de sortie OB1 du module Nlj présentent une largeur correspondant à la taille de quatre flits élémentaires, soit par exemple 128 bits. Le module Nlj comprend le module d'encodage ENC4 (figure 4G), les mémoires tampon de donnée B14 et de bit de validité EB14 (figure 4C), et le module de lecture DF14 (figure 4C). Les modules d'interface Nlj des figures 4A, 4E et 41 n'effectuent aucune conversion de largeur de bus vers une largeur de lien différente (conversion de taille locale), mais peuvent être nécessaires pour effectuer une conversion de protocole de communication et/ou de fréquence d'horloge. Les figures 5A à 51 représentent plus en détail différents modes de réalisation de circuits de transmission de donnée du module de liaison ALK, selon la largeur des bus d'entrée IB2 et de sortie 0B2 du module ALK. La figure 5A illustre le cas où les bus d'entrée IB2 et de sortie 0B2 du module ALK présentent une largeur correspondant à la taille d'un flit élémentaire, soit par exemple 32 bits. Le module ALK comprend un module de chargement LD21, des mémoires tampon de donnée B21 et de bit de validité EB21 et un module de lecture DF21. Le module LD21 comprend un module d'adressage BW21 des mémoires tampon B21 et EB21. La mémoire tampon B21 est dimensionnée pour stocker quelques mots de 32 bits et peut être adressée par mot de 32 bits. La mémoire tampon EB21 est prévue pour stocker quelques bits de validité BE1 reçus par le module LD21, qui peuvent par exemple être adressés individuellement. La mémoire EB21 est dimensionnée pour stocker un bit de validité par flit élémentaire susceptible d'être stocké dans la mémoire B21. Le module BW21 est configuré pour sélectionner successivement chaque emplacement libre de 32 bits de la mémoire B21 et chaque emplacement correspondant de 1 bit de la mémoire EB21. Le module LD21 charge chaque flit FLT1 de 32 bits reçu dans la mémoire B21 à une position sélectionnée par le module BW21. A chaque chargement d'un flit FLT1 dans la mémoire B21, le bit de validité BE1 correspondant est chargé dans la mémoire EB21 à une position correspondante sélectionnée par le module BW21. Le module DF21 comprend un module d'adressage BR21 qui adresse successivement chaque emplacement des mémoires B21 et EB21 pour transférer un flit FLT1 en sortie du module ALK, si ce flit est associé dans la mémoire EB21 à un bit de validité BE1 à l'état valide. Chaque bit BE1 lu dans la mémoire EB21 et correspondant à un flit valide, est également fourni en sortie du module DF21. La figure 5B illustre le cas où le bus d'entrée IB2 du module ALK présente une largeur correspondant à la taille d'un flit élémentaire, soit par exemple 32 bits, et où le bus de sortie 0B2 présente une largeur correspondant à la taille de deux flits élémentaires, soit par exemple 64 bits.
Le module ALK comprend un module de chargement LD23, des mémoires tampon de donnée B22 et de bit de validité EB22 et un module de lecture DF22. Le module d'encodage LD23 comprend un module d'adressage BW23 des mémoires B22 et EB22. Le module LD23 comprend également des démultiplexeurs D23, ED23 commandés par le module BW23. Le démultiplexeur D23 permet de stocker un flit FLT1 de 32 bits reçu par le module LD23 dans chaque emplacement de 32 bits de la mémoire B22. Le démultiplexeur ED23 permet de stocker un bit de validité BE1 de 1 bit reçu par le module LD23 dans chaque emplacement de 1 bit de la mémoire EB22. La mémoire tampon B22 est dimensionnée pour stocker quelques mots de 64 bits et peut être adressée par exemple par mot de 64 bits. La mémoire tampon EB22 est prévue pour stocker quelques bits qui peuvent par exemple être adressés par paire. La mémoire EB22 est dimensionnée pour stocker un bit de validité par flit élémentaire susceptible d'être stocké dans la mémoire B22. Le module BW23 est configuré pour sélectionner successivement, à l'aide des multiplexeurs D23 et ED23, chaque emplacement libre de 32 bits de la mémoire B22 et chaque emplacement correspondant de 1 bit de la mémoire EB22. Le module LD23 charge chaque flit FLT1 de 32 bits reçu dans la mémoire B22 à une position sélectionnée par le module BW23. A chaque chargement d'un flit dans la mémoire B22, un bit de validité BE1 est chargé dans la mémoire EB22 à une position correspondante, sélectionnée par le module BW23. Les emplacements de 1 bit non sélectionnés dans la mémoire EB22 sont mis à l'état invalide. Le module DF22 comprend un module d'adressage BR22 qui adresse successivement chaque emplacement de 64 bits de la mémoire B22 et chaque emplacement de deux bits BE2 de la mémoire EB22 pour transférer un flit FLT2 de 64 bits en sortie du module ALK, si ce flit est associé à une paire de bits de validité BE2 qui ne sont pas simultanément à l'état invalide. Chaque paire de bits BE2 lue dans la mémoire EB22 et correspondant à un flit transféré en sortie du module N lj, est également fournie en sortie du module DF22. La figure 5C illustre le cas où le bus d'entrée IB2 du module ALK présente une largeur correspondant à la taille d'un flit élémentaire, soit par exemple 32 bits, et où le bus de sortie 0B2 présente une largeur correspondant à la taille de quatre flits élémentaires, soit par exemple 128 bits. Le module ALK comprend un module de chargement LD25, des mémoires tampon de donnée B24 et de bit de validité EB24 et un module de lecture DF24. Le module LD25 comprend un module d'adressage BW25. Le module BW25 adresse les mémoires B24 et EB24. Le module LD25 comprend également des démultiplexeurs D25, ED25 commandés par le module BW25. Le démultiplexeur D25 permet de stocker un flit FLT1 de 32 bits reçu par le module LD25 dans chaque emplacement de 32 bits de la mémoire B24. Le démultiplexeur ED25 permet de stocker un bit de validité BE1 reçu par le module LD25 dans chaque emplacement de 1 bit de la mémoire EB24. La mémoire tampon B24 est dimensionnée pour stocker quelques mots de 128 bits et peut être adressée par exemple par mot de 128 bits. La mémoire tampon EB24 est prévue pour stocker quelques bits qui peuvent par exemple être adressés par groupes de 4 bits. La mémoire EB24 est dimensionnée pour stocker un bit de validité par flit élémentaire susceptible d'être stocké dans la mémoire B24. Le module BW25 est configuré pour sélectionner successivement, à l'aide des multiplexeurs D25 et ED25, chaque emplacement libre de 32 bits de la mémoire B24 et chaque emplacement correspondant de 1 bit de la mémoire EB24. Le module LD25 charge chaque flit FLT1 de 32 bits reçu dans la mémoire B24 à une position sélectionnée par le module BW25. A chaque chargement d'un flit dans la mémoire B14, un bit de validité BE1 reçu, correspondant est chargé dans la mémoire EB24 à une position correspondante, sélectionnée par le module BW25. Les emplacements de 1 bit non sélectionnés dans la mémoire EB24 sont mis à l'état invalide. Le module DF24 comprend un module d'adressage BR24 qui adresse successivement chaque emplacement de 128 bits de la mémoire B24 et chaque emplacement de quatre bits BE4 de la mémoire EB24 pour transférer un flit FLT4 de 128 bits en sortie du module ALK, si ce flit est associé à un groupe de quatre bits de validité BE4 qui ne sont pas simultanément à l'état invalide. Chaque groupe de quatre bits BE4 lu dans la mémoire EB24 et correspondant à un flit transféré en sortie du module ALK, est également fourni en sortie du module DF24. La figure 5D illustre le cas où le bus d'entrée IB2 du module ALK présente une largeur correspondant à la taille de deux flits élémentaires, soit par exemple 64 bits, et où le bus de sortie 0B2 présente une largeur correspondant à la taille d'un flit élémentaire, soit par exemple 32 bits. Le module ALK comprend un module de chargement LD22, les mémoires tampon de donnée B22 et de bit de validité EB22 (figure 5B) et un module de lecture DF23. Le module LD22 comprend un module d'adressage BW22 des mémoires B22 et EB22. Le module BW22 est configuré pour sélectionner successivement chaque emplacement libre de 64 bits de la mémoire B22 et chaque emplacement correspondant de 2 bit de la mémoire EB22. Le module LD22 charge chaque flit FLT2 de 64 bits reçu par le module LD22, dans la mémoire B22 à une position sélectionnée par le module BW22. A chaque chargement d'un flit dans la mémoire B22, une paire de bits de validité BE2 reçue par le module LD22 est chargée dans la mémoire EB22 à une position correspondante sélectionnée par le module BW22. Le module DF23 comprend un module d'adressage BR23 et des multiplexeurs X23, EX23. Le module BR23 adresse successivement chaque emplacement de 64 bits de la mémoire B22 et chaque paire de bits de validité stockée dans la mémoire EB22, et commande les multiplexeurs X23, EX23 pour transférer en sortie du module ALK, un flit FLT1 de 32 bits sélectionné dans le flit FLT2 de 64 bits adressé par le module BR23, si ce flit est associé à un bit de validité BE1 sélectionné dans la mémoire EB22 par le multiplexeur EX23 à l'état valide. Au contraire, si le flit FLT1 adressé dans la mémoire B22 et sélectionné par le multiplexeur X23 est invalide, il n'est pas transmis et est supprimé de la mémoire B22. Chaque bit BE1 lu dans la mémoire EB22 et correspondant à un flit FLT1 transféré en sortie du module ALK, est également fourni en sortie du module DF23. La figure 5E illustre le cas où les bus d'entrée IB2 et de sortie 0B2 du module ALK présentent une largeur correspondant à la taille de deux flits 35 élémentaires, soit par exemple 64 bits. Le module ALK comprend le module de chargement LD22 (figure 5D), les mémoires tampon de donnée B22 et de bit de validité EB22 (figure 5B), et le module de lecture DF22 (figure 5C). La figure 5F illustre le cas où le bus d'entrée IB2 présente une largeur correspondant à la taille de deux flits élémentaires, soit par exemple 64 bits, et où le bus de sortie 0B2 présente une largeur correspondant à la taille de quatre flits élémentaires, soit par exemple 128 bits. Le module ALK comprend un module de chargement LD26, les mémoires tampon de donnée B24 et de bit de validité EB24 (figure 5C) et le module de lecture DF24 (figure 5C). Le module LD26 comprend un module d'adressage BW26 des mémoires B24 et EB24. Le module LD26 comprend également des démultiplexeurs D26, ED26 commandés par le module BW26. Le démultiplexeur D26 permet de stocker un flit FLT2 de 64 bits reçu par le module LD26 dans chaque emplacement de 64 bits de la mémoire B24. Le démultiplexeur ED26 permet de stocker une paire de bits de validité BE2 reçue par le module LD26 dans chaque emplacement de 2 bits de la mémoire EB24. Le module BW26 est configuré pour sélectionner successivement, à l'aide des démultiplexeurs D26 et ED26, chaque emplacement libre de 64 bits de la mémoire B24 et chaque emplacement libre de 2 bits de la mémoire EB24. Le module LD26 charge chaque flit FLT2 de 64 bits reçu dans la mémoire B24 à une position sélectionnée par le module BW26 et par le démultiplexeur D26 commandé par le module BW26. A chaque chargement d'un flit FLT2 de 64 bits dans la mémoire B24, une paire de bits de validité BE2 reçue par le module LD26 est chargée dans la mémoire EB24 à une position correspondante, sélectionnée par le module BW26. Les emplacements de 2 bits non sélectionnés dans la mémoire EB24 sont mis à l'état invalide. La figure 5G illustre le cas où le bus d'entrée IB2 du module ALK présente une largeur correspondant à la taille de quatre flits élémentaires, soit par exemple 128 bits, et où le bus de sortie 0B2 présente une largeur correspondant à la taille d'un flit élémentaire, soit par exemple 32 bits. Le module ALK comprend un module de chargement LD24, les mémoires tampon de donnée B24 et de bit de validité EB24 (figure 5C) et un module de lecture DF25. Le module LD24 comprend un module d'adressage BW24 des mémoires B24 et EB24. Le module BW24 est configuré pour sélectionner successivement chaque emplacement libre de 128 bits de la mémoire B24 et chaque emplacement correspondant de 4 bits de la mémoire EB24. Le module LD24 charge chaque flit FLT4 de 128 bits reçu dans la mémoire B24 à une position sélectionnée par le module BW24. A chaque chargement d'un flit FLT4 de 128 bits dans la mémoire B24, le module LD24 charge un groupe de quatre bits de validité BE4 reçu à une position correspondante, sélectionnée par le module BW24 dans la mémoire EB24. Le module DF25 comprend un module d'adressage BR25 et des multiplexeurs X25, EX25 commandés par le module BW25. Le module d'adressage BR25 adresse successivement chaque emplacement de 128 bits de la mémoire B24 et chaque emplacement de quatre bits BE4 de la mémoire EB24, et commande les multiplexeurs X25, EX25 pour transférer un flit FLT1 de 32 bits sélectionné dans le flit FLT4 de 128 bits adressé par le module BR25, en sortie du module ALK, si ce flit est associé à un bit de validité BE1 à l'état valide, sélectionné par le multiplexeur EX25 dans l'emplacement de quatre bits adressé par le module BR25 dans la mémoire EB24. Au contraire, si le flit FLT1 adressé dans la mémoire B24 et sélectionné par le multiplexeur X25 est invalide, il n'est pas transmis et est supprimé de la mémoire B24. Chaque bit BE1 lu dans la mémoire EB24 et correspondant à un flit valide, est également transféré en sortie du module ALK. La figure 5H illustre le cas où le bus d'entrée IB2 du module ALK présente une largeur correspondant à la taille de quatre flits élémentaires, soit par exemple 128 bits, et où le bus de sortie 0B2 présente une largeur correspondant à la taille de deux flits élémentaires, soit par exemple 64 bits.
Le module ALK comprend le module de chargement LD24 (figure 5G), les mémoires tampon de donnée B24 et de bit de validité EB24 (figure 5C) et un module de lecture DF26. Le module DF26 comprend un module d'adressage BR26 et des multiplexeurs X26, EX26 commandés par le module BW26. Le module d'adressage BR16 adresse successivement chaque emplacement de 128 bits de la mémoire B14 et chaque emplacement correspondant de quatre bits BE4 de la mémoire EB24, et commande les multiplexeurs X26, EX26 pour transférer un flit FLT2 de 64 bits sélectionné dans le flit FLT4 de 128 bits adressé par le module BR26, en sortie du module ALK, si ce flit est associé à une paire de bits de validité BE2 sélectionnée par le multiplexeur EX26 dont au moins un bit est à l'état valide. Au contraire, si le flit FLT2 adressé dans la mémoire B24 et sélectionné par le multiplexeur X26 est invalide, il n'est pas transmis et est supprimé de la mémoire B24. Chaque paire de bits BE2 lue dans la mémoire EB24 et correspondant à un flit transféré en sortie du module N lj, est également transférée en sortie du module ALK. La figure 51 illustre le cas où les bus d'entrée IB2 et de sortie 0B2 du module ALK présentent une largeur correspondant à la taille de quatre flits élémentaires, soit par exemple 128 bits. Le module ALK comprend le module de chargement LD24 (figure 5G), les mémoires tampon de donnée B24 et de bit de validité EB24 (figure 5C), et le module de lecture DF24 (figure 5C). Les modules de liaison ALK des figures 5A, 5E et 51 n'effectuent aucune conversion de largeur de bus, mais peuvent être nécessaires pour effectuer une conversion de fréquence d'horloge, et/ou pour répéter les données transmises lorsque la longueur de liaison sur laquelle se trouve le module de conversion est excessive. Les figures 6A à 61 représentent plus en détail différents modes de réalisation de circuits de réception de donnée du module d'interface N lk, selon la largeur des bus d'entrée IB3 et de sortie 0B3 du module Nlk. La figure 6A illustre le cas où les bus d'entrée IB3 et de sortie 0B3 du module Nlk présentent une largeur correspondant à la taille d'un flit élémentaire, soit par exemple 32 bits. Le module Nlk comprend un module de chargement LD31, des mémoires tampon de donnée B31 et de bit de validité EB31 et un module de décodage DEC1. Le module LD31 comprend un module d'adressage BW31 des mémoires tampon B31 et EB31. La mémoire tampon B31 est dimensionnée pour stocker quelques mots de 32 bits et peut être adressée par mot de 32 bits. La mémoire tampon EB31 est prévue pour stocker quelques bits de validité BE1 reçus par le module LD31 et qui peuvent par exemple être adressés individuellement. La mémoire EB31 est dimensionnée pour stocker un bit de validité par flit élémentaire susceptible d'être stocké dans la mémoire B31. Le module BW31 est configuré pour sélectionner successivement chaque emplacement libre de 32 bits de la mémoire B31 et chaque emplacement correspondant de 1 bit de la mémoire EB31. Le module LD31 charge chaque flit FLT1 de 32 bits reçu dans la mémoire B31 à une position sélectionnée par le module BW31. A chaque chargement d'un flit dans la mémoire B31, le bit de validité BE1 reçu correspondant est chargé dans la mémoire EB31 à une position correspondante sélectionnée par le module BW31. Le module DEC1 comprend un module d'adressage BR31 qui adresse successivement chaque emplacement des mémoires B31 et EB31 pour transférer un flit FLT1 en sortie du module Nlk, si ce flit est associé à un bit de validité BE1 à l'état valide. La figure 6B illustre le cas où le bus d'entrée IB3 du module Nlk présente une largeur correspondant à la taille d'un flit élémentaire, soit par exemple 32 bits, et où le bus de sortie 0B3 présente une largeur correspondant à la taille de deux flits élémentaires, soit par exemple 64 bits. Le module Nlk comprend un module de chargement LD33, des mémoires tampon de donnée B32 et de bit de validité EB32 et un module de décodage DEC2. Le module d'encodage LD33 comprend un module d'adressage BW33 des mémoires B32 et EB32. Le module LD33 comprend également des démultiplexeurs D33, ED33 commandés par le module BW33. Le démultiplexeur D33 permet de stocker un flit de 32 bits reçu par le module LD33 dans chaque emplacement de 32 bits de la mémoire B32. Le démultiplexeur ED33 permet de stocker un bit de validité BE1 de 1 bit reçu par le module LD33 dans chaque emplacement de 1 bit de la mémoire EB32. La mémoire tampon B32 est dimensionnée pour stocker quelques mots de 64 bits et peut être adressée par exemple par mot de 64 bits. La mémoire tampon EB32 est prévue pour stocker quelques bits qui peuvent par exemple être adressés par paire. La mémoire EB32 est dimensionnée pour stocker un bit de validité par flit élémentaire susceptible d'être stocké dans la mémoire B32. Le module BW33 est configuré pour sélectionner successivement, à l'aide des démultiplexeurs D33 et ED33, chaque emplacement libre de 32 bits de la mémoire B32 et chaque emplacement correspondant de 1 bit de la mémoire EB32. Le module LD33 charge chaque flit FLT1 de 32 bits reçu dans la mémoire B32 à une position sélectionnée par le module BW33. A chaque chargement d'un flit dans la mémoire B32, un bit de validité BE1 est chargé dans la mémoire EB32 à une position correspondante, sélectionnée par le module BW33. Les emplacements de 1 bit non sélectionnés dans la mémoire EB32 sont mis à l'état invalide. Le module DEC2 comprend un module d'adressage BR32, et une matrice de commutation BLM2. Le module BR32 adresse successivement chaque emplacement de 64 bits de la mémoire B32 et chaque emplacement de deux bits BE2 de la mémoire EB32 pour transférer un flit FLT2 de 64 bits en sortie du module Nlk, si ce flit est associé à une paire de bits de validité EBE2 qui ne sont pas simultanément à l'état invalide. La matrice BLM2 reçoit les flits FLT2 en sortie de la mémoire B32 et intervertit si nécessaire les flits élémentaires de 32 bits dans les flits FLT2. La figure 6C illustre le cas où le bus d'entrée IB3 du module Nlk présente une largeur correspondant à la taille d'un flit élémentaire, soit par exemple 32 bits, et où le bus de sortie 0B3 présente une largeur correspondant à la taille de quatre flits élémentaires, soit par exemple 128 bits. Le module Nlk comprend un module de chargement LD35, des mémoires tampon de donnée B34 et de bit de validité EB34 et un module de décodage DEC4. Le module LD35 comprend un module d'adressage BW35. Le module BW35 adresse les mémoires B34 et EB34. Le module LD35 comprend également des démultiplexeurs D35, ED35 commandés par le module BW35. Le démultiplexeur D35 permet de stocker un flit FLT1 de 32 bits reçu par le module LD35 dans chaque emplacement de 32 bits de la mémoire B34. Le démultiplexeur ED35 permet de stocker un bit de validité BE1 reçu par le module LD35 dans chaque emplacement de 1 bit de la mémoire EB34. La mémoire tampon B34 est dimensionnée pour stocker quelques mots de 128 bits et peut être adressée par exemple par mot de 128 bits. La mémoire tampon EB34 est prévue pour stocker quelques bits qui peuvent par exemple être adressés par groupes de 4 bits. La mémoire EB34 est dimensionnée pour stocker un bit de validité par flit élémentaire susceptible d'être stocké dans la mémoire B34. Le module BW35 est configuré pour sélectionner successivement, à l'aide des multiplexeurs D35 et ED35, chaque emplacement libre de 32 bits de la mémoire B34 et chaque emplacement correspondant de 1 bit de la mémoire EB34. Le module LD35 charge chaque flit FLT1 de 32 bits reçu dans la mémoire B34 à une position sélectionnée par le module BW35. A chaque chargement d'un flit dans la mémoire B14, un bit de validité BE1 reçu, correspondant est chargé dans la mémoire EB34 à une position correspondante, sélectionnée par le module BW35. Les emplacements de 1 bit non sélectionnés dans la mémoire EB34 sont mis à l'état invalide. Le module DEC4 comprend un module d'adressage BR34, et une matrice de commutation BLM4. Le module BR34 adresse successivement chaque emplacement de 128 bits de la mémoire B34 et chaque emplacement de quatre bits BE4 de la mémoire EB34 pour transférer un flit FLT4 de 128 bits en sortie du module Nlk, si ce flit est associé à un groupe de quatre bits de validité BE4 qui ne sont pas tous à l'état invalide. La matrice BLM4 reçoit les flits FLT4 en sortie de la mémoire B34 et redistribue si nécessaire les flits élémentaires de 32 bits dans les flits FLT4. La figure 6D illustre le cas où le bus d'entrée IB3 du module Nlk présente une largeur correspondant à la taille de deux flits élémentaires, soit par exemple 64 bits, et où le bus de sortie 0B3 présente une largeur correspondant à la taille d'un flit élémentaire, soit par exemple 32 bits. Le module N lk comprend un module de chargement LD32, les mémoires tampon de donnée B32 et de bit de validité EB32 (figure 6B) et un module de décodage DEC3. Le module LD32 comprend un module d'adressage BW32 des mémoires B32 et EB32. Le module BW32 est configuré pour sélectionner successivement chaque emplacement libre de 64 bits de la mémoire B32 et chaque emplacement correspondant de paire de bits de la mémoire EB32. Le module LD32 charge chaque flit FLT2 de 64 bits reçu par le module LD32, dans la mémoire B32 à une position sélectionnée par le module BW32. A chaque chargement d'un flit dans la mémoire B32, une paire de bits de validité BE2 reçue par le module LD32 est chargée dans la mémoire EB32 à une position correspondante sélectionnée par le module BW32. Le module DEC3 comprend un module d'adressage BR13 et des multiplexeurs X33, EX33. Le module BR33 adresse successivement chaque emplacement de 64 bits de la mémoire B32 et chaque paire de bits de validité correspondante stockée dans la mémoire EB32, et commande les multiplexeurs X33, EX33 pour transférer en sortie du module N lk, un flit FLT1 de 32 bits sélectionné dans le flit FLT2 de 64 bits adressé par le module BR33, si ce flit est associé à un bit de validité BE1 sélectionné par le multiplexeur EX33 à l'état valide. Au contraire, si le flit FLT1 adressé dans la mémoire B32 et sélectionné par le multiplexeur X33 est invalide, il n'est pas transmis et est supprimé de la mémoire B32. La figure 6E illustre le cas où les bus d'entrée IB3 et de sortie 0B3 du module N lk présentent une largeur correspondant à la taille de deux flits élémentaires, soit par exemple 64 bits. Le module Nlk comprend le module de chargement LD32 (figure 6D), les mémoires tampon de donnée B32 et de bit de validité EB32 (figure 6B), et le module de lecture DEC2 (figure 6B). La figure 6F illustre le cas où le bus d'entrée IB3 du module Nlk présente une largeur correspondant à la taille de deux flits élémentaires, soit par exemple 64 bits, et où le bus de sortie 0B3 présente une largeur correspondant à la taille de quatre flits élémentaires, soit par exemple 128 bits. Le module N lk comprend un module de chargement LD36, les mémoires tampon de donnée B34 et de bit de validité EB34 (figure 6C) et le module de décodage DEC4 (figure 6C). Le module LD36 comprend un module d'adressage BW36 des mémoires B34 et EB34. Le module LD36 comprend également des démultiplexeurs D36, ED36 commandés par le module BW36. Le démultiplexeur D36 permet de stocker un flit FLT2 de 64 bits reçu par le module LD36 dans chaque emplacement de 64 bits de la mémoire B34. Le démultiplexeur ED36 permet de stocker deux bits de validité BE2 reçus par le module LD36 dans chaque emplacement de 2 bits de la mémoire EB34. Le module BW36 est configuré pour sélectionner successivement, à l'aide des démultiplexeurs D36 et ED36, chaque emplacement libre de 64 bits de la mémoire B34 et chaque emplacement correspondant de 2 bits de la mémoire EB34. Le module LD36 charge chaque flit FLT2 de 64 bits reçu dans la mémoire B34 à une position sélectionnée par le module BW36 et par le démultiplexeur D36 commandé par le module BW36. A chaque chargement d'un flit FLT2 de 64 bits dans la mémoire B34, une paire de bits de validité BE2 reçue par le module LD36 est chargée dans la mémoire EB34 à une position correspondante, sélectionnée par le module BW36. Les emplacements de 2 bits non sélectionnés dans la mémoire EB34 sont mis à l'état invalide. La figure 6G illustre le cas où le bus d'entrée IB3 du module Nlk présente une largeur correspondant à la taille de quatre flits élémentaires, soit par exemple 128 bits, et où le bus de sortie 0B3 présente une largeur correspondant à la taille d'un flit élémentaire, soit par exemple 32 bits. Le module Nlk comprend un module de chargement LD34, les mémoires tampon de donnée B34 et de bit de validité EB34 (figure 6C) et un module de décodage DEC5. Le module LD34 comprend un module d'adressage BW34 des mémoires B34 et EB34. Le module BW34 est configuré pour sélectionner successivement chaque emplacement libre de 128 bits de la mémoire B34 et chaque emplacement correspondant de 4 bits de la mémoire EB34. Le module LD34 charge chaque flit FLT4 de 128 bits reçu dans la mémoire B34 à une position sélectionnée par le module BW34. A chaque chargement d'un flit FLT4 de 128 bits dans la mémoire B34, le module LD34 charge un groupe de quatre bits de validité BE4 reçu à une position correspondante, sélectionnée par le module BW34. Le module DEC5 comprend un module d'adressage BR35 et des multiplexeurs X35, EX35 commandés par le module BW35. Le module d'adressage BR35 adresse successivement chaque emplacement de 128 bits de la mémoire B34 et chaque emplacement de quatre bits BE4 de la mémoire EB34, et commande les multiplexeurs X35, EX35 pour transférer un flit FLT1 de 32 bits sélectionné dans le flit FLT4 de 128 bits adressé par le module BR35, en sortie du module Nlk, si ce flit est associé à un bit de validité BE1 sélectionné par le multiplexeur EX35 à l'état valide. Au contraire, si le flit FLT1 adressé dans la mémoire B34 et sélectionné par le multiplexeur X35 est invalide, il n'est pas transmis et est supprimé de la mémoire B34. La figure 6H illustre le cas où le bus d'entrée IB3 du module Nlk présente une largeur correspondant à la taille de quatre flits élémentaires, soit par exemple 128 bits, et où le bus de sortie 0B3 présente une largeur correspondant à la taille de deux flits élémentaires, soit par exemple 64 bits. Le module Nlk comprend le module de chargement LD34 (figure 6G), les mémoires tampon de donnée B34 et de bit de validité EB34 (figure 6C) et un module de décodage DEC6. Le module DEC6 comprend un module d'adressage BR36, des multiplexeurs X36, EX36 commandés par le module BW36 et la matrice BLM2. Le module d'adressage BR36 adresse successivement chaque emplacement de 128 bits de la mémoire B14 et chaque emplacement de quatre bits BE4 de la mémoire EB34, et commande les multiplexeurs X36, EX36 pour transférer un flit FLT2 de 64 bits sélectionné dans le flit FLT4 de 128 bits adressé par le module BR36, en sortie du module Nlk, si ce flit est associé à une paire de bits de validité BE2 sélectionnée par le multiplexeur EX36 dont au moins un bit est à l'état valide. Au contraire, si le flit FLT2 adressé dans la mémoire B34 et sélectionné par le multiplexeur X36 est invalide, il n'est pas transmis et est supprimé de la mémoire B34. La matrice BLM2 reçoit les flits FLT2 en sortie du multiplexeur X36 et intervertit si nécessaire les flits élémentaires de 32 bits dans les flits FLT2. La figure 61 illustre le cas où les bus d'entrée IB3 et de sortie 0B3 du module Nlk présentent une largeur correspondant à la taille de quatre flits élémentaires, soit par exemple 128 bits. Le module Nlk comprend le module de chargement LD34 (figure 6G), les mémoires tampon de donnée B34 et de bit de validité EB34 (figure 6C), et le module de décodage DEC4 (figure 6C). Les modules d'interface Nlk des figures 6A, 6E et 61 n'effectuent localement aucune conversion de largeur de bus, mais peuvent être 10 nécessaires pour effectuer une conversion de protocole de communication et/ou de fréquence d'horloge. Il va de soi que les multiplexeurs X13, EX13 (figure 4D), X15, EX15 (figure 4G), X16, EX16 (figure 4H), X23, EX23 (figure 5D), X25, EX25 (figure 5G), X26, EX26 (figure 5H), X33, EX33 (figure 6D), X35, EX35 (figure 6G), 15 X36, EX36 (figure 6H), peuvent être placés, non pas en aval, mais en amont des mémoires tampon B12, EB12, B14, EB14, B22, EB22, B24, EB24, B32, EB32, B34, EB34. Dans ce cas, les mémoires tampons B12, EB12, B22, EB22, B32, EB32 peuvent être remplacées par les mémoires B11, EB11, B21, EB21, B31, EB31, et les mémoires B14, EB14, B24, EB24, B34, EB34, 20 remplacées par les mémoires B12, EB12, B22, EB22, B32, EB32. La figure 7 représente une table indiquant la valeur des paires de bits de validité BE2, mise en oeuvre par le module EBC2 (Figures 4D à 4F) lorsque le bus de sortie du module d'interface présente une largeur correspondant à la taille de deux flits élémentaires. Dans cette table, la 25 valeur des paires BE2 dépend du troisième bit de poids faible ADD[2] d'une adresse de destination ADD du message à transmettre DT2, et d'un nombre de mots NBB composant le message DT2, chaque valeur d'adresse permettant de repérer un mot. Pour les messages de requête, les bits d'adresse nécessaires ADD[2,3] et le nombre NBB figurent dans des 30 données d'entête du message. Pour les messages de réponse, l'adresse ADD et le nombre NBB proviennent du module émetteur de la réponse, ou bien se trouvent dans des registres du module d'interface Nlk connecté au module émetteur du message de réponse. Un mot correspond par exemple à un octet. Si le nombre NBB est égal à 1, 2 ou 4, c'est-à-dire si le message 35 présente une taille inférieure ou égale à celle d'un flit élémentaire (32 bits), la paire BE2 vaut "01" si le bit ADD[2] est égal à 0 et "10" si le bit ADD[2] est égal à 1. Lorsque la paire BE2 vaut "01", cela signifie que le flit FLT2 correspondant comprend un flit élémentaire valide en première position et un flit élémentaire invalide en seconde position. Lorsque la paire BE2 vaut "10", cela signifie que le flit FLT2 correspondant comprend un flit élémentaire invalide en première position et un flit élémentaire valide en seconde position. Si le nombre NBB est supérieur ou égal à 8, c'est-à-dire si le message présente une taille supérieure à celle d'un flit élémentaire, la paire BE2 vaut "11" indépendamment de la valeur du bit ADD[2], signifiant que le flit FLT2 correspondant comprend deux flits élémentaires valides. La figure 8 représente une table indiquant la valeur des groupes de quatre bits de validité BE4, mise en oeuvre par le module EBC4 (Figures 4G à 41) lorsque le bus de sortie du module d'interface Nlj présente la largeur correspondant à quatre flits élémentaires. Dans cette table, la valeur des groupes de quatre bits de validité BE4 dépend des quatrième et troisième bit de poids faible ADD[3,2] de l'adresse de destination ADD du message à transmettre DT4 et du nombre de mots NBB composant le message DT4. Si le nom bre NBB est égal à 1, 2 ou 4 (le message présente une taille inférieure ou égale à celle d'un flit élémentaire, soit 32 bits), le groupe BE4 vaut "0001" si les bits ADD[3,2] sont égaux à "00", "0010" si les bits ADD[3,2] sont égaux à "01", "0100" si les bits ADD[3,2] sont égaux à "10", et "1000" si les bits ADD[3,2] sont égaux à "11". Lorsque le groupe BE4 vaut "0001", cela signifie que le flit FLT4 correspondant comprend un flit élémentaire valide en première position et trois flits élémentaires invalides en seconde, troisième et quatrième position. Lorsque le groupe BE4 vaut "0010", cela signifie que le flit FLT4 correspondant comprend un flit élémentaire invalide en première position, un flit élémentaire valide en seconde position et des flits élémentaires invalides en troisième et quatrième position. Plus généralement, chaque bit à 0 du groupe BE4 indique que le flit élémentaire correspondant du flit FLT4 est invalide, et chaque bit à 1 du groupe BE4 indique que le flit élémentaire correspondant est valide. Si le nombre NBB est égal à 8 (le message présente la taille de deux flits élémentaires, soit 64 bits), le groupe BE4 vaut "0011" si le bit ADD[3] est égal à 0 et "1100" si le bit ADD[3] est égal à 1. Si le nombre NBB est supérieur ou égal à 16 (le message présente une taille supérieure ou égale à celle de quatre flits élémentaires, soit 128 bits), le groupe BE4 vaut "1111" indiquant que tous les flits élémentaires du flit FLT correspondant sont valides. Les matrices de commutation BLM2, BLM4 peuvent appliquer à un flit reçu une permutation circulaire des flits élémentaires constituant le flit lorsque la taille NBB du message reçu est inférieure ou égale à la moitié de la taille d'un flit transmis par le bus de sortie du module Nlk. Les figures 9A, 9B représentent la configuration de la matrice de commutation BLM2 (figures 6B, 6E, 6H) lorsque le bus de sortie du module d'interface Nlk présente une largeur correspondant à la taille de deux flits élémentaires. La configuration de la matrice BLM2 dépend du nombre de mots NBB composant le message DT2, et de la valeur du troisième bit de poids faible ADD[2] de l'adresse de destination ADD du message à transmettre DT2. La figure 9A illustre les cas où le bit ADD[2] est égal à 0, et où le bit ADD[2] est égal à 1 lorsque le nombre NBB dans le message DT2 est supérieur ou égal à 8. Dans ces cas, la matrice BLM2 laisse inchangé l'ordre des deux flits élémentaires constituant le flit FLT2. La figure 9B illustre le cas où le bit ADD[2] est égal à 1 lorsque le nombre NBB dans le message DT2 est inférieur ou égal à 4 (le message reçu occupe au plus un seul flit élémentaire et donc au plus la moitié d'un flit transmis par le bus de sortie). Dans ce cas, la matrice BLM2 effectue une inversion des deux flits élémentaires constituant le flit FLT2. Une telle inversion est équivalente à une permutation circulaire d'un rang de flit élémentaire.
Les figures 10A, 10B, 10C et 10D représentent la configuration de la matrice de commutation BLM4 (figures 6C, 6F, 61) lorsque le bus de sortie du module d'interface Nlk présente une largeur correspondant à la taille de quatre flits élémentaires. La configuration de la matrice BLM4 dépend des quatrième et troisième bit de poids faible ADD[3,2] de l'adresse de destination ADD du message à transmettre DT4, lorsque le nombre NBB dans le message DT4 est inférieur ou égal à 8. La figure 10A illustre les cas où les bits ADD[3,2] sont égaux à "00" lorsque le nombre NBB est inférieur ou égal à 8, où les bits ADD[3,2] sont égaux à "01" lorsque le nombre NBB est égal à 8, et où le nombre NBB est supérieur à 8. Dans ces cas, la matrice BLM4 n'effectue pas de redistribution des quatre flits élémentaires constituant le flit FLT4. La figure 10B illustre le cas où les bits ADD[3,2] sont égaux à "01" lorsque le nombre NBB est inférieur ou égal à 4. Le message reçu occupe donc au plus un seul flit élémentaire et donc au plus le quart d'un flit transmis par le bus de sortie. Dans ce cas, la matrice BLM4 effectue une permutation circulaire des flits élémentaires constituant le flit FLT4 en augmentant de un leurs rangs respectifs (de 1 à 4) dans le flit FLT4, le dernier flit élémentaire 1 passant en première position.
La figure 10C illustre les cas où les bits ADD[3,2] sont égaux à "10" lorsque le nombre NBB est inférieur ou égal à 8 et où les bits ADD[3,2] sont égaux à "11" lorsque le nombre NBB est égal à 8. Le message reçu occupe donc au plus deux flits élémentaires et donc au plus la moitié d'un flit transmis par le bus de sortie. Dans ces cas, la matrice BLM4 effectue une inversion des deux paires (1, 2), (3, 4) de flits élémentaires consécutifs constituant le flit FLT4 (permutation circulaire de deux rangs de flits élémentaires). La figure 10D illustre le cas où les bits ADD[3,2] sont égaux à "11" lorsque le nombre NBB est inférieur ou égal à 4. Le message occupe donc au plus un seul flit élémentaire et donc au plus le quart d'un flit transmis par le bus de sortie. Dans ce cas, la matrice BLM4 effectue une permutation circulaire décalage des flits élémentaires constituant le flit FLT4, en diminuant de un leurs rangs respectifs (de 1 à 4) dans le flit FLT4, le premier flit élémentaire 4 passant en dernière position.
Il est à noter que dans les figures 7 à 10D, les bits de l'adresse de destination ADD utilisés dépendent des différentes largeurs des liens et des bus du réseau NT. Si un lien ou un bus présentant d'autres largeurs est mis en oeuvre dans le réseau NT, il est évident que d'autres bits de l'adresse ADD peuvent être utilisés pour déterminer les valeurs des bits de validité, et les configurations des matrices de commutation. Grâce à ces dispositions, les flits élémentaires non valides peuvent être repérés par les bits de validité BEI, BE2, BE4, et ainsi, peuvent ne pas être transmis inutilement dans le cas d'une conversion d'un bus d'une certaine largeur vers un bus de largeur inférieure. Par ailleurs, lors d'une conversion d'un bus d'une certaine largeur vers un bus de largeur supérieure, les matrices de commutation permettent de placer correctement les flits élémentaires valides sur les lignes du bus de largeur supérieure, en tenant compte de l'adresse de destination des données transmises. La mise en oeuvre de ces dispositions ne nécessite d'ajouter que de petites mémoires tampon permettant de stocker les bits de validité BE1, BE2, BE4, et de n'ajouter à chaque bus du réseau qu'une seule ligne de transmission par flit élémentaire composant chaque flit transmis par le bus. Par ailleurs, les circuits logiques générant ou exploitant les bits de validité mettent en oeuvre des mécanismes simples et donc occupent très peu de place sur une puce où serait intégré un système mettant en oeuvre ces dispositions. Il apparaîtra clairement à l'homme de l'art que la présente invention est susceptible de diverses variantes de réalisation et diverses applications. En particulier, l'invention n'est pas limitée à des flits élémentaires de taille 32 bits, et des conversions de largeur entre bus de largeurs correspondant à un, deux ou quatre flits élémentaires. Il va de soi que le principe de l'invention défini par les revendications annexées peut être appliqué à d'autres tailles de flits élémentaires, et à toutes autres largeurs de bus, multiples d'une même largeur de bus correspondant à la taille d'un flit élémentaire. La présente invention ne s'applique pas nécessairement aux systèmes sur puce, mais peut également s'applique à tout système comportant un réseau de transmission de données formé de bus de largeurs différentes.25

Claims (15)

  1. REVENDICATIONS1. Procédé de transmission d'un message dans un chemin de données d'un réseau, comportant des bus de largeurs différentes, le procédé comprenant des étapes consistant à: transmettre un message (DT) sur un bus d'entrée (IB1) d'un module d'interface d'entrée (N1j) du réseau, le message étant reçu par le module d'interface, divisé en flits correspondant à la largeur du bus d'entrée, et transmettre le message reçu sur un bus de sortie (0B1) du module d'interface vers un module d'interface destinataire (Nlk), le message transmis sur le bus de sortie étant divisé en flits (FLT1, FLT2, FLT4) ayant une taille correspondant à la largeur du bus de sortie du module d'interface d'entrée, caractérisé en ce qu'il comprend des étapes consistant à: générer un indicateur de validité (BE1) pour chaque flit élémentaire (FLT1) constituant chaque flit reçu par le module d'interface d'entrée (N1j), chaque flit élémentaire ayant une taille correspondant ou inférieure à la plus petite largeur de bus du réseau, chaque indicateur de validité indiquant si le flit élémentaire correspondant est valide, transmettre vers le module d'interface destinataire (Nlk), chaque indicateur de validité généré, en association avec le flit élémentaire correspondant, et recevoir par le module d'interface destinataire, des flits constituant le message et les indicateurs de validité associés, et rejeter un flit reçu si chaque flit élémentaire du flit est associé à un indicateur de validité à l'état invalide.
  2. 2. Procédé selon la revendication 1, comprenant l'application d'une permutation circulaire aux flits élémentaires FLT1 d'un flit (FLT1, FLT2, FLT4) d'un message reçu (DT) par le module d'interface destinataire (N 1k), en fonction d'une adresse de destination (ADD) du message reçu, lorsque la taille (NBB) du message reçu est inférieure à la moitié de la largeur d'un bus de sortie du module d'interface destinataire.
  3. 3. Procédé selon la revendication 1 ou 2, dans lequel les indicateurs de validité (BE1, BE2, BE4) sont générés par le module d'interface d'entrée (NID en fonction de la taille (NBB) du message (DT), de la largeur du bus d'entrée (IDB) par lequel le message est reçu et d'une adresse de destination (ADD) du message.
  4. 4. Procédé selon l'une des revendications 1 à 3, comprenant dans le module d'interface d'entrée (N1j), et/ou dans le module d'interface destinataire (Nlk), des étapes de mémorisation des flits reçus dans une première mémoire tampon (B11, B12, B14, B31, B32, B34), et de mémorisation des indicateurs de validité générés ou reçus dans une seconde mémoire tampon (EB11, EB12, EB14, EB31, EB32, EB34).
  5. 5. Procédé selon l'une des revendications 1 à 4, dans lequel le message (DT) présente une taille (NBB) inférieure ou égale à celle d'un flit élémentaire (FLT1), et est reçu dans un flit (FLT2, FLT4) comportant plusieurs flits élémentaires, l'adresse de destination (ADD) du message étant utilisée pour déterminer la position du flit élémentaire contenant le message dans le flit reçu, les indicateurs de validité (BE1) des flits élémentaires du flit reçu étant déterminés en fonction de cette position.
  6. 6. Procédé selon l'une des revendications 1 à 5, dans lequel le message (DT) présente une taille (NBB) inférieure ou égale à la moitié d'un flit reçu (FLT2, FLT4) comportant plusieurs flits élémentaires (FLT1), l'adresse de destination (ADD) du message étant utilisée pour déterminer la position de chaque flit élémentaire contenant une partie du message dans le flit reçu, les indicateurs de validité (BE1) des flits élémentaires du flit reçu étant déterminés en fonction de cette position.
  7. 7. Procédé selon l'une des revendications 1 à 6, comprenant des étapes consistant à: recevoir des flits (FLT1, FLT2, FLT4) constituant le message (DT) par un module de liaison (ALK) du réseau situé dans le chemin de donnée, et des indicateurs de validité (BEI, BE2, BE4) associés aux flits reçus,diviser le message reçu en flits correspondant à la largeur d'un bus de sortie (0B2) du module de liaison, et transmettre vers le module d'interface destinataire (N 1k) chaque flit obtenu à l'étape de division, si chaque flit élémentaire contenu dans le flit est associé à un indicateur de validité à l'état invalide, chaque flit transmis par le module de liaison étant transmis en association avec l'indicateur de validité de chaque flit élémentaire contenu dans le flit.
  8. 8. Procédé selon la revendication 7, comprenant dans le module de liaison (ALK), des étapes de mémorisation des flits reçus (FLT1, FLT2, FLT4) dans une première mémoire tampon (B21, B22, B24), et de mémorisation des indicateurs de validité reçus (BE1, BE2, BE4) dans une seconde mémoire tampon (EB21, EB22, EB24).
  9. 9. Système comprenant des modules maitres (IN1-1N5) et des modules esclaves (TG1-TG6), chaque module maitre et esclave étant relié à un réseau (NT) par l'intermédiaire d'un module d'interface (N11-N15, NI11- NI16), caractérisé en ce que les modules d'interface sont configurés pour mettre en oeuvre le procédé selon l'une des revendications 1 à 6.
  10. 10. Système selon la revendication 9, comprenant des modules de liaison (ALK1, ALK2) situés dans le réseau (NT) sur des chemins de donnée et configurés pour : recevoir des flits (FLT1, FLT2, FLT4) constituant un message, et les indicateurs de validité (BE1, BE2, BE4) associés aux flits reçus, diviser le message reçu en flits correspondant à la largeur d'un bus de sortie (0B2) du module de liaison, et transmettre sur le bus de sortie chaque flit obtenu à l'étape de division, si chaque flit élémentaire (FLT1) contenu dans le flit est associé à un indicateur de validité (BE1) à l'état invalide, chaque flit transmis étant transmis par le module de liaison en association avec l'indicateur de validité de chaque flit élémentaire contenu dans le flit.
  11. 11. Système selon la revendication 10, dans lequel chaque module de liaison (ALK) comprend une première mémoire tampon (B21, B22, B24) pour mémoriser les flits reçus, et une seconde mémoire tampon (EB21, EB22, EB24) pour mémoriser des indicateurs de validité reçus (BEI, BE2, BE4).
  12. 12. Système selon l'une des revendications 9 à 11, dans lequel chaque bus du réseau (NT) est associé à une ligne de transmission d'indicateurs de validité (BEI, BE2, BE4) par flit élémentaire (FLT1) contenu dans chaque flit (FLT1, FLT2, FLT4) susceptible d'être transmis par le bus.
  13. 13. Système selon l'une des revendications 9 à 12, dans lequel le réseau (NT) comprend des modules de routage (RTR1-RTR3) pour acheminer des messages vers un module destinataire (Nlk), en fonction 15 d'une adresse de destination (ADD) du message.
  14. 14. Système sur puce, caractérisé en ce qu'il comprend un système (SS) selon l'une des revendications 9 à 13. 20
  15. 15. Système sur puce selon la revendication 14, comprenant au moins deux des types de bus appartenant à un ensemble comprenant STBus, AMBA, AXI, AHB, APB, CoreConnect, et Wishbone.
FR1254401A 2012-05-14 2012-05-14 Procede de transmission de donnees dans un systeme sur puce Pending FR2990535A1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR1254401A FR2990535A1 (fr) 2012-05-14 2012-05-14 Procede de transmission de donnees dans un systeme sur puce
US13/894,093 US9461913B2 (en) 2012-05-14 2013-05-14 Method of data transmission in a system on chip

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1254401A FR2990535A1 (fr) 2012-05-14 2012-05-14 Procede de transmission de donnees dans un systeme sur puce

Publications (1)

Publication Number Publication Date
FR2990535A1 true FR2990535A1 (fr) 2013-11-15

Family

ID=47137796

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1254401A Pending FR2990535A1 (fr) 2012-05-14 2012-05-14 Procede de transmission de donnees dans un systeme sur puce

Country Status (2)

Country Link
US (1) US9461913B2 (fr)
FR (1) FR2990535A1 (fr)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10237008B2 (en) * 2016-06-10 2019-03-19 Apple Inc. Synchronization with different clock transport protocols
US11520722B2 (en) * 2021-04-12 2022-12-06 Microsoft Technology Licensing, Llc On-chip non-power of two data transactions
US20230236992A1 (en) * 2022-01-21 2023-07-27 Arm Limited Data elision
CN117034827B (zh) * 2023-10-08 2023-12-15 华中科技大学 一种用于eFPGA的多路选择器、互连开关及外围接口电路

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2061191A1 (fr) * 2007-11-13 2009-05-20 STMicroelectronics (Grenoble) SAS Architecture de mise en mémoire pour injection de paquet et extraction dans des réseaux intégrés

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2879383A1 (fr) * 2004-12-14 2006-06-16 St Microelectronics Sa Masquage de mots binaires traites par un circuit integre
US20090067343A1 (en) * 2007-06-04 2009-03-12 David Fritz Method for the synthesis of optimal asynchronous on-chip communication networks from system-level constraints
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US8711867B2 (en) * 2011-08-26 2014-04-29 Sonics, Inc. Credit flow control scheme in a router with flexible link widths utilizing minimal storage

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2061191A1 (fr) * 2007-11-13 2009-05-20 STMicroelectronics (Grenoble) SAS Architecture de mise en mémoire pour injection de paquet et extraction dans des réseaux intégrés

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CIPRIAN SEICULESCU ET AL: "A DRAM Centric NoC Architecture and Topology Design Approach", VLSI (ISVLSI), 2011 IEEE COMPUTER SOCIETY ANNUAL SYMPOSIUM ON, IEEE, 4 July 2011 (2011-07-04), pages 54 - 59, XP032037393, ISBN: 978-1-4577-0803-9, DOI: 10.1109/ISVLSI.2011.60 *
HSIANG-NING LIU ET AL: "Memory Built-in Self Test in Multicore Chips with Mesh-Based Networks", IEEE MICRO, IEEE SERVICE CENTER, LOS ALAMITOS, CA, US, vol. 29, no. 5, 1 September 2009 (2009-09-01), pages 46 - 55, XP011279433, ISSN: 0272-1732, DOI: 10.1109/MM.2009.83 *
SAPONARA S ET AL: "Design and coverage-driven verification of a novel network-interface IP macrocell for network-on-chip interconnects", MICROPROCESSORS AND MICROSYSTEMS, vol. 35, no. 6, 8 July 2011 (2011-07-08), pages 579 - 592, XP028255708, ISSN: 0141-9331, [retrieved on 20110708], DOI: 10.1016/J.MICPRO.2011.06.005 *

Also Published As

Publication number Publication date
US20130301643A1 (en) 2013-11-14
US9461913B2 (en) 2016-10-04

Similar Documents

Publication Publication Date Title
EP1949619B1 (fr) Routeur et reseau de routage
EP1701273B1 (fr) Architecture de communication globalement asynchrone pour système sur circuit intégré
US8175095B2 (en) Systems and methods for sending data packets between multiple FPGA devices
FR2951342A1 (fr) Reseau sur puce a latence nulle
US9910816B2 (en) Scalable direct inter-node communication over peripheral component interconnect-express (PCIe)
US9614785B1 (en) I/O data interface for packet processors
US20080320161A1 (en) Method for transferring data from a source target to a destination target, and corresponding network interface
FR2990535A1 (fr) Procede de transmission de donnees dans un systeme sur puce
EP2923461B1 (fr) Dispositif et procédé de retransmission de données dans un commutateur réseau
CN111597141B (zh) 一种面向超高阶互连芯片的分级交换结构及死锁避免方法
EP2507712B1 (fr) Systeme autorisant des transferts directs de donnees entre des memoires de plusieurs elements de ce systeme
EP1845456B1 (fr) Système d'interconnexions de blocs fonctionnels externes sur puce muni d'un unique protocole parametrable de communication
WO2019024759A1 (fr) Procédé de communication de données, et réseau de communication de données
GB2574614A (en) Interconnection network for integrated circuit
EP1950667A1 (fr) Passerelle de communication entre deux entités
US9996468B1 (en) Scalable dynamic memory management in a network device
Wirth et al. Scalable and flexible high-performance in-network processing of hash joins in distributed databases
US7836213B2 (en) Coupling data buffers with memory interfaces
FR3057127A1 (fr) Processeur adapte pour un reseau ethernet commute deterministe
Beckmann et al. Hurdles for a dram-based match-action table
US20130308653A1 (en) Techniques for Connecting an External Network Coprocessor to a Network Processor Packet Parser
US20090074000A1 (en) Packet based switch with destination updating
US20230254253A1 (en) Message split-aggregation for multi-stage electrical interconnection network
US20210112019A1 (en) Method and apparatus for improved data transfer in big data graph analytics
RU2642383C2 (ru) Способ передачи информации