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

Contenu supprimé Contenu ajouté
Ligne 139 :
Utiliser une mémoire multi-ports reliée à autant de filtres d'adresse est clairement un challenge quand le nombre de ports de sortie est trop grand. De plus, ce n'est utile que quand tous les paquets reçus sur les ports d'entrée doivent être routés sur un seul port de sortie. Dans la majorité des cas, seule une faible quantité de ports d'entrée veulent router un paquet sur le même port de sortie. Dans ces conditions, certains switchs ne permettent de router qu'un nombre limité de paquets sur le même port en même temps pour économiser du circuit. On obtient alors un '''Knockout switch'''. Le principe est très simple : les filtres d'adresse associés à un port de sortie sont suivis par un concentrateur, qui sélectionne L paquets parmi les N filtres d'adresse. Seuls ces N paquets sont envoyés dans les tampons FIFO du port de sortie. Si jamais le nombre de paquets destinés au port de sortie dépasse la limite L, seuls L paquets seront conservés et les autres seront perdus.
 
Certains switchs remplacent le bus interne par une mémoire RAM : ce sont les '''switchs à mémoire partagée'''. Ces switchs permettent de gérer l'arbitrage directement dans la switch fabric : la mémoire centrale stocke les données des tampons FIFO d'arbitrage des ports d'entrée. Le switch présenté dans le schéma ci-dessous peut être transformé en switch sans partage de temps avec une mémoire multiport : il suffit d'avoir autant de ports d'écriture que de ports d'entrée, et d'adapter les circuits de gestion de la mémoire. Dans ce qui va suivre, mes schémas utiliseront un switch à partage de temps. Reste que ces tampons FIFO peuvent s'implémenter de différentes manières.
* Une première méthode mémorise les données dans des '''listes doublement chaînées''' dans la RAM. Les circuits qui gèrent la mémoire partagée doivent gérer eux-mêmes les listes chaînées, ce qui fait qu'ils contiennent deux registres par liste : un pour l'adresse en tête de liste et un pour le dernier élément. Il y a un circuit pour l'ajout et un autre pour le retrait des paquets. En plus de cela, les circuits de gestion de la mémoire doivent allouer dynamiquement les nœuds de la liste et libérer la mémoire. La mémoire utilise des Bytes démesurément grands, capables de mémoriser un paquet de plusieurs centaines de bits sans problèmes. Ainsi, le switch a juste besoin de mémoriser quels sont les Bytes libres et les Bytes occupés dans une mémoire annexe : la free list, souvent implémentée avec une mémoire FIFO.
* La deuxième méthode réserve la mémoire centrale pour le stockage des paquets et maintient l'ordre d'envoi des paquets dans des '''tampons FIFO''', qui mémorisent les adresses des paquets dans la mémoire centrale. La taille fixe des mémoires FIFO ne permet pas d'allouer toute la mémoire pour seulement quelques ports. Mais cette organisation permet de gérer facilement le multicast et le broadcast : on peut facilement ajouter un paquet dans toutes les mémoires FIFO, simultanément avec un circuit d'ajout conçu pour.
* Une autre solution, nettement plus simple, consiste à remplacer la mémoire RAM du switch par un cache (une mémoire associative, plus précisément).
 
<gallery widths=450px heights=200px>
[[File:Switch à mémoire partagée.png|thumb|Switch à mémoire partagée]].
Linked-list switch.png|Linked-list switch
FIFO switch.png|FIFO switch
</gallery>
 
===Arbitrage===