« Fonctionnement d'un ordinateur/Les architectures dataflow » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 77 :
Pour résoudre les défauts des architectures ''dataflow'' statiques, il faut faire sauter la règle du "un jeton par flèche", ce qui est fait sur les '''architectures ''dataflow'' dynamiques'''. L'idée de ces architectures est d'associer, pour chaque jeton, l'exemplaire d'une fonction ou d'une boucle ils sont destinés. Pour cela, on ajoute des informations à coté de l'opérande, regroupées dans ce qu'on appelle le ''tag''. Dorénavant, une instruction s’exécute une fois que tous ses opérandes ayant le même tag sont disponibles.
 
VuSur qu'uneles instructionarchitectures dansstatiques, uneles bouclejetons ouavaient uneun fonctionemplacement peutpré-reservé s’exécuterdans enles uninstructions nombremêmes. indéterminéMais d'exemplairessur les architectures dynamiques, on ne peut réserver de la place pour les opérandes à l'avance, vu qu'une instruction dans une boucle ou une fonction peut s’exécuter en un nombre indéterminé d'exemplaires. C'est maintenant aux opérandesjetons d'indiquer quelle est l'instruction qui doit les manipuler, en mémorisant son adresse. Les opérandes sont mémorisés à part des instructions, dans une mémoire séparée de la mémoire d'instructions (en clair, les architectures dynamiques sont de type Harvard). Les opérandes sont mis en attente dans une file d'attente. À chaque ajout d'un opérande dans la file d'attente, le processeur vérifie quels sont les opérandes de la file qui possèdent le même tag et la même adresse d'instruction.
 
La gestion des jetons change du tout au tout. Sur les architectures statiques, lesLes jetons avaient un emplacement pré-reservé dans les instructions mêmes. Mais maintenant, c'est aux jetons d'indiquer quelle estcontiennent l'instruction qui doit les manipuler. Ceux-ci contiennent donc 'opérande, leur ''tag'', et l'adresse de l'instruction de destination, ainsi que le nombre d'opérandes de cette instruction (afin de faciliter la détection de la disponibilité des opérandes de celle-ci). Dès qu'un jeton a été calculé par l'ALU, il est stocké dans la file d'attente des jetons disponibles. Reste à vérifier la disponibilité des opérandes. Si l'instruction a toutes ses opérandes disponibles dans cette file d'attente, il y a juste à les récupérer et à lancer l'instruction. Ainsi, à chaque ajout d'un jeton dans la file d'attente des jetons, on va vérifier quelles sont les jetons présents dans cette file qui possèdent le même Tag, afin de charger celle-ci le cas échéant.
 
[[File:Architecture dataflow dynamique.jpg|centre|vignette|upright=1.5|Architecture dataflow dynamique.]]