Résumé
J. Cortadella a d’abord présenté les circuits asynchrones. L’idée est de remplacer la synchronisation globale que réalise l’horloge par une synchronisation locale et conjointe des données et du contrôle. Il y en a deux variantes, décrites brièvement ici.
Le dual-rail encoding code toute donnée sur deux fils, les paires de valeurs <0,1>, <1,0> et <0,0> codant respectivement les valeurs 0, 1 et espace, la paire <1,1> étant inutilisée. Toute suite de deux valeurs doit être séparée par un espace. Une porte spéciale dite Müller C-element permet de synchroniser les calculs parallèles. Le dual rail garantit un fonctionnement logique indépendant des délais des fils et portes : il est plus rapide en moyenne que le synchrone, car on peut signaler la fin du calcul dès qu’elle est advenue au lieu d’attendre toujours le pire cas. On peut ainsi additionner des nombres de n bits en temps moyen log2(log2(n)) au lieu de log2(n). Mais ce gain se fait au prix d’un doublement de la surface et de l’énergie, ce qui limite cette technique à des cas spécifiques.