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.
Les leçons sont gratuites. Inscrivez-vous pour enregistrer vos progrès.
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.
| Front | Ancien état | Action | Nouvel acc |
|---|---|---|---|
| 0 | IDLE | Capturer 3, 5, 7, 9 et remettre acc à zéro | 0 |
| 1 | ADD0 | Ajouter 3 | 3 |
| 2 | ADD1 | Ajouter 5 | 8 |
| 3 | ADD2 | Ajouter 7 | 15 |
| 4 | ADD3 | Ajouter 9, passer à DONE | 24 |
| 5 | DONE | Le consommateur accepte le résultat | 24 |
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.
- IDLE: Accepter et capturer les quatre valeurs
- ADD0..ADD3: Réutiliser un additionneur sur quatre fronts
- 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.