Altifigence Academy

6 / 24 · Concept

Ordonnancer des ressources partagées avec une machine à états

Accumulez quatre valeurs avec un seul additionneur en définissant les transitions d’état et la capture.

L’état de commande exprime l’ordonnancement des opérations

Une ressource partagée exige d’ordonnancer les opérations dans le temps. Considérons la somme de x0 à x3 avec un additionneur et un accumulateur sur dix bits. Capturez les quatre opérandes lorsqu’une requête est acceptée. Les changements externes ultérieurs ne doivent pas modifier une requête en cours. Le contrôleur sélectionne un opérande, active l’accumulation et détermine quand le résultat devient valide.

Utilisez les états IDLE, ADD0, ADD1, ADD2, ADD3 et DONE. Le front d’acceptation dans IDLE capture les entrées et remet acc à zéro. Les quatre fronts suivants ajoutent chacun un opérande stocké. Immédiatement après le front ADD3, la somme finale est stockée et l’état devient DONE. DONE conserve le résultat jusqu’à son acceptation par le consommateur. Cette version simple revient à IDLE à ce front et n’accepte pas simultanément une nouvelle requête.

FrontAncien étatActionNouvel acc
0IDLECapturer 3, 5, 7, 9 et remettre acc à zéro0
1ADD0Ajouter 33
2ADD1Ajouter 58
3ADD2Ajouter 715
4ADD3Ajouter 9, passer à DONE24
5DONELe consommateur accepte le résultat24

Distinguez la disponibilité après le front 4 du transfert au front 5. Les blocages du consommateur peuvent prolonger DONE indéfiniment. Réutiliser la ressource réduit le matériel arithmétique, mais limite le débit par rapport à un pipeline acceptant une entrée à chaque cycle. Prendre en charge simultanément une fin de traitement et une nouvelle requête nécessite une priorité explicite entre la livraison de l’ancien résultat et l’initialisation de la nouvelle requête.

Accumulateur de quatre valeurs
  1. IDLE: Accepter et capturer les quatre valeurs
  2. ADD0..ADD3: Réutiliser un additionneur sur quatre fronts
  3. DONE: Conserver le résultat jusqu’à sa consommation

Déduisez les commandes de l’état : activation de l’accumulateur dans les états ADD, sélection de l’opérande correspondant à l’état et résultat valide dans DONE. Donnez des valeurs par défaut aux sorties de commande combinatoires. Définissez l’acceptation pour qu’une requête maintenue active ne se répète pas accidentellement. La réinitialisation revient à IDLE et abandonne le travail en cours. Une implémentation à compteur peut réduire le codage des états, mais nécessite le même ordonnancement front par front.

Essayez vous-même

Que vaut acc après ADD0 à ADD3 pour quatre entrées égales à 255 ? Que doit-il se passer lorsque ready de sortie vaut zéro au front 5 ?

Lire l’explication

Les valeurs sont 255, 510, 765 et 1020, toutes représentables sur dix bits. Avec ready=0, aucune livraison n’a lieu ; conservez DONE, acc=1020 et valid=1.

Votre choix s’applique à ce navigateur. Modifiez-le à tout moment en bas de page.