Réseaux sur puce
L’évolution des architectures des SoC a fait que le nombre de coeurs qui y sont intégrés est en augmentation. Cette tendance rend l’utilisation des bus partagés inadéquate pour ce type d’architectures. En effet, la bande passante globale du bus partagé répartie sur l’ensemble des coeurs n’est plus en mesure d’assurer l’interconnexion du SoC. A partir de ce constat, les réseaux sur puce sont apparus pour pallier ce problème. L’architecture des NoC est très semblable à celle des macro-réseaux de façon générale tels que les réseaux de capteurs, avec des contraintes plus ou moins équivalentes mais souvent à des niveaux plus poussés. Le NoC doit être à la fois à très basse consommation d’énergie et réduire au minimum la latence de communication ainsi que le coût en surface de Silicium de l’électronique qui lui est dédiée. L’architecture des NoC est à la fois évolutive (scalable, mais pas indéfiniment) et permet d’assurer les performances nécessaires pour le fonctionnement des MPSoC. Dans les réseaux sur puce, il n’y a plus la notion de maître et d’esclave, tous les blocs fonctionnels peuvent être à la fois initiateurs et cibles. Contrairement aux bus partagés, le réseau sur puce transmet des messages sous forme de paquets de données. Ces paquets sont acheminés de l’initiateur vers une ou plusieurs cibles.
Cet acheminement est effectué avec des aiguillages dans les routeurs et des transferts via des bus reliant les routeurs. La topologie la plus connue des réseaux sur puce est le réseau en grille. La figure 1.4 représente un réseau sur puce en grille qui sert d’interconnexion pour un ensemble de noeuds, appelé aussi des « processing elements ». Ces noeuds sont constitués de processeurs, de mémoires, d’IP ou encore d’une combinaison de plusieurs de ces éléments. Chaque noeud est connecté à son propre routeur à travers une interface réseau (NI 4) qui empaquette tout message provenant du noeud avant de le transmettre au routeur. Le routeur est doté de buffers sur ses entrées afin de recevoir les paquets de son propre noeud ou de l’un des routeurs voisins cardinaux. Ensuite, selon l’adresse de destination contenue dans l’entête du paquet, celui-ci est aiguillé vers l’une des sorties appropriée en utilisant un crossbar. Un bloc d’arbitrage accorde la priorité en cas de plusieurs paquets, de sources différentes et à diriger vers la même sortie du routeur. Ainsi, les paquets traversent plusieurs liens d’interconnexions et transitent sur plusieurs routeurs afin de parcourir le chemin reliant leurs sources et leurs destinations. Tous les réseaux sur puce ne fonctionnent pas de la même manière et le fonctionnement du réseau décrit ci-dessus permet juste de mettre l’accent sur sa différence par rapport aux bus partagés. A ce jour, plusieurs architectures de réseaux sont proposées. Il existe des caractéristiques propres à chaque NoC permettant de le différencier de l’ensemble des autres NoC. Quelques unes de ces caractéristiques sont présentées dans les paragraphes suivants.
Topologie
Un réseau sur puce est caractérisé par sa topologie qui décrit l’organisation des interconnexions physiques du graphe du réseau. Elle désigne le nombre et l’emplacement des liaisons des noeuds (les routeur-commutateurs et les liens d’interconnexion). Il existe deux types de topologies, les topologies directes et les topologies indirectes. Le réseau en topologie directe a la particularité d’associer à chaque routeur, au moins un élément du réseau à interconnecter. Ainsi le nombre de routeurs est inférieur ou égal au nombre d’éléments du réseau à interconnecter. Chaque routeur est connecté directement à un ensemble de routeurs voisins. Cette topologie permet d’augmenter la bande passante globale quand le nombre de noeuds augmente mais cela est couteux en termes de consommation et de surface en silicium. En effet, augmenter le nombre de liens de connexion permet de meilleurs performances en bande passante mais cela s’accompagne par un surcoût en consommation d’énergie et en surface de silicium des liens et des routeurs. La figure 1.5 montre une topologie avec une interconnexion complète, c’est à dire, chacun des noeuds est directement connecté avec l’ensemble des autres noeuds du réseau. Lorsque le nombre de nœuds à interconnecter est élevé, cette approche n’est plus utilisable.
Il existe d’autres configurations de la topologie directe qui offrent un bon compromis entre le coût et les performances du réseau. Dans ces topologies, les connexions physiques directes entre les routeurs ne sont déployées que partiellement. Par conséquent, certains paquets devraient transiter sur un ou plusieurs routeurs intermédiaires avant d’atteindre leurs destinations respectives. L’une des topologies satisfaisant ces conditions est la topologie en octogone (Figure 1.6). La topologie en octogone (Figure 1.6) est constituée de huit noeuds et douze liens physiques de connexion. L’envoi d’un message nécessite deux sauts au maximum. Le regroupement de plusieurs réseaux en octogone permet d’augmenter le nombre de noeuds du SoC. Un des noeuds des réseaux élémentaires en octogone est transformé en pont afin d’assurer la connexion entre ces derniers. La topologie la plus connue est celle en grille avec ses variétés (Figure 1.7) dont la plus utilisée est la topologie de grille en deux dimensions (2D) illustrée sur la figure 1.7.(a). Dans le cas de cette topologie, les liens entre routeurs ont tous la même longueur, ce qui facilite la conception du SoC. Chaque routeur associé à un noeud est connecté à quatre routeurs voisins, à l’exception des routeurs situés aux bordures du SoC. La surface de la grille augmente linéairement avec le nombre de noeuds. Le réseau en grille doit être conçu de façon à éviter l’accumulation des paquets au centre de la grille afin d’éviter une éventuelle dégradation des performances du réseau.
Mécanismes de commutation
Le mécanisme de commutation détermine la façon dont les paquets passent à travers les routeurs du réseau. Les noeuds génèrent les messages à échanger à travers le NoC. Ces messages peuvent être constitués d’un ou plusieurs paquets. Le paquet est divisé en FLIT 6 qui est à son tour constitué d’un ou plusieurs PHIT 7. La PHIT est une donnée transférable sur un lien de connexion en un coup d’horloge, ce qui revient à dire que la taille du PHIT correspond à la largeur en bits du lien de communication. La figure 1.10 montre la structure d’un FLIT, d’un paquet et d’un message. Chaque NoC dispose de sa propre configuration des messages. Le choix sur la taille des messages est déterminant pour le NoC en termes de performances, de coût ainsi que de la consommation en énergie. Il existe deux types principaux de mécanismes de commutation : la commutation du circuit et la commutation de paquets. En commutation de circuit, les communications se font en deux étapes. Le chemin physique de la source jusqu’à la destination est d’abord réservé, ensuite, le message est transmis entièrement. Ce chemin est constitué de liens de connexion, de routeurs et éventuellement de commutateurs.
Le FLIT d’entête du message traverse en premier le chemin de la source vers la destination afin de réserver le chemin et ouvrir la voie pour le reste des FLIT du même message. Il arrive parfois que l’un des liens de connexion ou l’un des routeurs ne soit pas encore disponible, dans ce cas le chemin est mis en attente. L’avantage de cette technique est que, une fois le chemin réservé, une liaison directe de la source à la destination est disponible dont la bande passante est égale à celle des liens de connexion, ce qui mène à une réduction de la latence. Par contre, cette technique devient très vite moins avantageuse dès que le nombre de noeuds augmente. Cela est dû à la non disponibilité de toutes les ressources mises à disposition de la communication en cours pendant toute la durée de cette dernière. La solution pour remédier à ce problème est de multiplier les canaux virtuels sur le même lien physique et d’utiliser les circuits virtuels pour les commutations [Benini 06].
En commutation de paquets, les paquets sont envoyés à travers le réseau sans réservation préalable d’un chemin de l’initiateur à la cible. Ceux-ci définissent leur chemin de manière indépendante au fur et à mesure de leur propagation dans le réseau jusqu’à leur arrivée à la cible. Plusieurs paquets peuvent arriver en même temps à un routeur et solliciter l’emprunt du même lien de connexion. Cela réduit la durée de non disponibilité des ressources en cours d’utilisation, en revanche, cela nécessite une gestion des contentions au niveau des routeurs. Il existe trois types de commutations de paquets. Le premier est le « store and forward » qui consiste à envoyer un paquet d’un routeur à un autre uniquement si le routeur émetteur a fini de recevoir l’intégralité du message qu’il doit transmettre et que le buffer du routeur récepteur a suffisamment de mémoire libre pour recevoir l’intégralité du paquet.
Ce type de commutation de paquets n’est pas très utilisé à cause de la contrainte de la taille des buffers qui doit être au minimum égale à celle des paquets. Le second type de commutation de paquets est le « virtual cut through ». Avant de finir la réception d’un paquet, le routeur émetteur commence à envoyer les premiers FLIT au routeur suivant mais uniquement si le buffer de ce dernier a suffisamment d’espace pour recevoir la totalité du paquet en question. Cette technique aussi n’est pas très utilisée à cause de la taille des buffers qu’elle nécessite. Le troisième type de commutation de paquets est le wormhole. La taille des buffers nécessaires est réduite à celle des FLIT. Dès qu’un FLIT est reçu, il est transmis au prochain routeur dès que l’espace requis se libère. Si le routeur prochain n’a pas suffisamment d’espace pour recevoir le paquet entièrement, celui-ci se retrouvera distribué sur deux routeurs, voire plus. Bien que cette situation puisse provoquer des blocages de ressources, cette technique de commutation est très utilisée dans les NoC, seule ou en combinaison avec d’autres techniques.
Acronymes et notations |