« Fonctionnement d'un ordinateur/Les périphériques et les cartes d'extension » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 147 :
 
Le '''switch crossbar''' utilise un réseau d'interconnexion dont les fils sont organisés en lignes et en colonnes. À l'intersection de chaque ligne et de colonne, on trouve soit un interrupteur qui relie la ligne et la colonne, soit des tampons FIFO d'arbitrage pour gérer l'Head-Of-Line Blocking. Le nombre d'interrupteurs/tampons FIFO est de N * M pour un switch à N ports d'entrée et M ports de sortie : pour les switchs qui ont un grand nombre de ports d'entrée et de sortie, cela devient rapidement impraticable. Pour éviter cela, les switchs à haute performance réduisent la taille des mémoires FIFO intégrées dans le crossbar, mais rajoutent de grosses mémoires FIFO sur les ports d'entrée : les simulations montrent que le rapport entre performance et nombre de portes logiques utilisées est meilleur avec cette technique. On peut utiliser plusieurs switchs crossbar pour former un switch plus gros, les différentes manières donnant respectivement un '''réseau CLOS''', un '''réseau de Benes''', un '''réseau de banyan''', les '''Switch Sunshine''', et bien d'autres.
 
[[File:Switch Crossbar avec arbitrage intégré.png|centre|thumb|Switch Crossbar avec arbitrage intégré]]
 
===Arbitrage===
 
La switch fabric est relativement lente comparée au temps d'envoi et de réception d'un paquet, ce qui fait qu'il est nécessaire de mettre ceux-ci en attente tant que la switch fabric est occupée avec le paquet précédent. De même, il faut gérer le cas où plusieurs paquets veulent accéder au même port de sortie, ce qui impose d'envoyer les paquets les uns après les autres, certains étant mis en attente (il arrive cependant que certains paquets soient perdus). Dans tous les cas, qui dit mise en attente dit : utilisation de mémoires tampons de type FIFO. Si les tampons sont remplies, les paquets en trop sont perdus et n'arrivent pas à destination : on laisse la situation entre les « mains » du logiciel. Si une requête est en attente via input buffering, elle va bloquer les requêtes suivantes sur le port d'entrée, même si celles-ci ont un port de sortie différent : on parle d''''head of line blocking'''. Pour l'éliminer, certains switchs utilisent le Virtual output queing, à savoir découper chaque tampon FIFO en sous-tampons, chacun prenant en charge les paquets destinés à un port de sortie précis. Avec cette technique, on peut traiter les requêtes dans le désordre, afin de profiter au maximum des ports libres. Certains tampons FIFO sont placés entre la switch fabric et l'interface réseau de sortie, au cas où celle-ci soit plus lente que la switch fabric : on parle d''''output buffering'''. D'autres sont placés en entrée de la switch fabric, celle-ci pouvant mettre du temps à traiter les paquets qui lui arrivent : on parle d''''input buffering'''. Il est parfaitement possible d'utiliser les deux en même temps, ce qui porte le nom d''''input-output buffering'''. Enfin, certains switchs intégrent l'arbitrage directement dans la switch fabric, en intégrant les tampons FIFO dans celle-ci. C'est notamment possible avec les switch crossbar.
 
<gallery widths=400px heights=200px>
Ligne 159 ⟶ 157 :
Output-buffering.png|Output-buffering
Input-output-buffering.png|Input-output-buffering
[[File:Switch Crossbar avec arbitrage intégré.png|centre|thumb|Switch Crossbar avec arbitrage intégré]]
</gallery>