5 / 20 · Concept
Le contrat à un front montant
Fixez la numérotation des fronts, la transmission enregistrée, l’accumulation et la priorité d’initialisation.
Les leçons sont gratuites. Inscrivez-vous pour enregistrer vos progrès.
La convention temporelle utilisée dans tout ce cours
La réinitialisation et l’effacement se terminent avant E0, premier front montant consommant des données. Les entrées sont stables immédiatement avant E_t. À ce front, un PE accumule le produit de ses entrées d’avant le front et stocke ces mêmes entrées dans ses registres de transmission vers la droite et vers le bas. Les nouvelles valeurs d’accumulateur et de transmission sont observables immédiatement après E_t. Un voisin consomme les valeurs enregistrées à E_(t+1).
Cette base ne comporte ni registre d’entrée distinct, ni multiplicateur pipeliné, ni étage de sérialisation des sorties. En ajouter un impose de revoir l’ordonnancement et la latence du résultat. « Un résultat au front zéro » désigne l’accumulateur mis à jour après E0, et non avant. Les fronts d’initialisation sont exclus du nombre de fronts de calcul. Clear est prioritaire sur MAC : activer clear avec la première paire de données abandonne donc cette paire ; effacez d’abord, puis fournissez les données au front suivant.
Deux responsabilités dans un PE
Avec A=1 et B=5 à E0, PE(0, 0) met son accumulateur à cinq et transmet les opérandes dans les registres. À E1, les opérandes de frontière 2 et 7 ajoutent quatorze, donnant dix-neuf. Au même front, les PE voisins peuvent consommer les premiers opérandes enregistrés. Permettre à un jeton de traverser deux PE en un seul front invaliderait les équations de décalage suivantes.
Les affectations non bloquantes expriment ce comportement de lecture avant le front et d’écriture après le front. Un banc de test doit aussi échantillonner de manière cohérente après la mise à jour de l’état, à l’aide d’un bloc d’horloge adapté ou d’une région d’échantillonnage du simulateur. Ne dépendez pas de l’ordre accidentel des processus dans la région active.
Priorité et pause globale
La priorité est reset, puis clear, puis advance. Reset et clear vident les accumulateurs et l’état de validité. Lorsque advance=0, chaque PE conserve son accumulateur, ses valeurs de transmission, ses drapeaux valid et ses étiquettes. L’ordonnanceur de frontière se fige également. Un front advance effectue une étape logique. Un zéro valide est un véritable opérande ; un jeton invalide est ignoré quels que soient ses bits de données.
Si un accumulateur vaut cinq et que le réseau fait une pause de deux fronts physiques, il reste à cinq. Le prochain front advance effectue l’étape logique suivante. Indiquez séparément les fronts d’horloge physiques et les étapes logiques advance. L’initialisation reste active pendant une pause, empêchant d’anciens jetons de passer dans le traitement suivant.
Essayez vous-même
L’effacement se termine à E−1. Consommez (1, 5) à E0, faites une pause à E1 et consommez (2, 7) à E2. Donnez l’accumulateur après chaque front et les numéros des étapes logiques.
Lire l’explication
Après E0, acc=5 et l’étape logique zéro est terminée. E1 conserve acc=5. Après E2, acc=19 et l’étape logique un est terminée. Il y a eu trois fronts physiques et deux fronts advance.