7 / 20 · Concept
Drapeaux de validité, étiquettes et purge
Distinguez le zéro numérique, les bulles et les jetons d’un autre traitement.
Les leçons sont gratuites. Inscrivez-vous pour enregistrer vos progrès.
Un jeton transporte plus qu’un nombre
Notre jeton de référence contient value, valid, job et k. Un jeton invalide est une bulle. Un jeton valide de valeur zéro est un véritable opérande matriciel. Job identifie la transaction ; k identifie le terme de réduction. Le câblage fixe la ligne A et la colonne B de chaque PE, tandis que l’enveloppe de commande mémorise les coordonnées de tuile.
Lorsque les deux entrées sont valides, vérifiez l’égalité des étiquettes job et k avant de multiplier. A(0, 1)=2 associé à B(0, 0)=5 produit dix, mais ce n’est pas un terme légitime. La paire correspondante k=1 est deux et sept, produisant quatorze. Traitez une incohérence d’étiquettes comme une erreur de vérification visible au lieu de l’écarter silencieusement comme une bulle ordinaire.
Compter les termes, et non les horloges
Clear initialise acc=0 et count=0. Pour chaque paire correspondante, exigez k=count, puis incrémentez count. Consommer k=K−1 termine le résultat local immédiatement après ce front. Les bulles et les pauses n’incrémentent pas count. Ce contrôleur simple exige des valeurs k ordonnées. Un ordre arbitraire nécessiterait un bitmap des termes reçus et une détection des doublons.
Pour K=2, consommer un et cinq donne acc=5, count=1. Une bulle laisse les deux inchangés. Consommer deux et sept avec k=1 donne acc=19, count=2 et done. Répéter k=1 est une erreur même si un consommateur en aval a déjà accepté le résultat.
La vidange et l’effacement ont des objectifs différents
Le réseau n’est pas vide lorsque la dernière entrée de frontière entre. Des jetons subsistent dans les registres internes de transmission. Continuez à avancer avec des entrées de frontière invalides jusqu’à ce que le dernier PE consomme son dernier terme. Pendant cette vidange, conservez les accumulateurs terminés jusqu’à la collecte de leurs résultats. Démarrer un nouveau traitement exige en revanche d’effacer ensemble l’accumulateur, count, valid et l’état des étiquettes.
L’enveloppe de commande de ce cours exécute un traitement à la fois. Elle termine, collecte les résultats, efface, puis redémarre. Chevaucher des traitements nécessite des états ou des accumulateurs supplémentaires et un protocole de sortie ; les étiquettes seules ne fournissent pas cette capacité. Les tests doivent inclure des étiquettes incohérentes, des termes manquants et répétés, un état valid résiduel après clear et des opérandes zéro valides qui incrémentent bien le compteur de termes.
Essayez vous-même
Un PE de K=3 consomme la paire k=0 (2, 4), une bulle, la paire k=1 (0, 9) et la paire k=2 (−1, 3). Trouvez acc et count. Que se passe-t-il si la dernière étiquette job ne correspond pas ?
Lire l’explication
Avec des étiquettes correspondantes, acc=5 et count=3 : le résultat est donc terminé. La bulle ne compte pas ; le zéro valide compte. Une étiquette job incohérente doit déclencher une erreur de vérification et ne peut pas être présentée comme une fin réussie.