# Système asynchrone

Cet article traite principalement du contrôle asynchrone dans les systèmes électroniques numériques$^,$. Dans un système synchrone, les opérations (instructions, calculs, logique, etc.) sont coordonnées par un ou plusieurs signaux d'horloge centralisés. Un système numérique asynchrone, en revanche, n'a pas d'horloge globale. Les systèmes asynchrones ne dépendent pas d'heures d'arrivée strictes des signaux ou des messages pour un fonctionnement fiable. La coordination est obtenue via des événements tels que: arrivée de paquets, changements (transitions) de signaux, protocoles de négociation et autres méthodes.

## Modularité

Les systèmes asynchrones - un peu comme les logiciels orientés objet - sont généralement construits à partir d '"objets matériels" modulaires, chacun avec des interfaces de communication bien définies. Ces modules peuvent fonctionner à des vitesses variables, que ce soit en raison d'un traitement dépendant des données, d'une mise à l'échelle dynamique de la tension ou d'une variation du processus . Les modules peuvent ensuite être combinés pour former un système fonctionnant correctement, sans référence à un signal d'horloge global. Généralement, une faible puissance est obtenue car les composants ne sont activés que sur demande. En outre, il a été démontré que plusieurs styles asynchrones étaient compatibles avec les interfaces synchronisées et prenaient ainsi en charge la conception à temps mixte. Par conséquent, les systèmes asynchrones répondent bien au besoin de méthodologies correctes par construction pour assembler des systèmes hétérogènes et évolutifs à grande échelle.

## Styles de design

Il existe un large éventail de styles de design asynchrones, avec des compromis entre robustesse et performances (et d'autres paramètres tels que la puissance). Le choix du style de design dépend de la cible de l'application: fiabilité / facilité de conception par rapport à la vitesse. Les conceptions les plus robustes utilisent des « circuits insensibles au délai », dont le fonctionnement est correct quels que soient les délais de la porte et du fil ; toutefois, seuls des systèmes utiles limités peuvent être conçus avec ce style. Un peu moins robustes, mais beaucoup plus utiles, sont les circuits quasi insensibles au retard (également appelés circuits indépendants de la vitesse), qui fonctionnent correctement quels que soient les délais de la porte ; Cependant, les fils à chaque point de sortie doivent être réglés pour des retards à peu près égaux. Des circuits moins robustes mais plus rapides, nécessitant de simples contraintes de synchronisation unilatérales localisées, incluent des contrôleurs utilisant le mode fondamental (c'est-à-dire avec des exigences de configuration / maintien activées lorsque de nouvelles entrées peuvent être reçues) et des chemins de données groupés utilisant des délais adaptés (voir ci-dessous). À l'extrême, des "circuits temporisés" hautes performances ont été proposés, lesquels utilisent des contraintes de synchronisation strictes des deux côtés, où l'horloge peut toujours être évitée mais un réglage physique minutieux du retard est requis, comme pour certaines applications de pipeline à grande vitesse.

## Communication asynchrone

La communication asynchrone est généralement effectuée sur des canaux. La communication est utilisée à la fois pour synchroniser les opérations du système et pour transmettre des données. Un canal simple consiste généralement en deux files: une demande et un accusé de réception. Dans un « protocole d'établissement de liaison en 4 phases» (ou remise à zéro), la demande est revendiquée par le composant émetteur et le destinataire répond en confirmant l'accusé de réception. les deux signaux sont ensuite désaffectés. Dans un « protocole de négociation en deux phases» (ou signalisation de transition), le demandeur bascule simplement la valeur sur la file de requête (une fois) et le récepteur répond en basculant la valeur sur la file d'accusé de réception. Les canaux peuvent également être étendus pour communiquer des données.

## Chemins de données asynchrones

Les chemins de données asynchrones sont généralement codés selon plusieurs schémas. Les schémas robustes utilisent deux files ou «rails» pour chaque bit, appelés «codage double rail». Dans ce cas, le premier rail est censé transmettre une valeur 0 ou le second rail est censé transmettre une valeur 1. Le rail revendiqué est ensuite réinitialisé à zéro avant la transmission de la valeur de données suivante, indiquant ainsi «pas de données» ou un état «spacer». Un schéma moins robuste, mais largement utilisé et pratique, est appelé «données groupées mono- rail ». Ici, un bloc fonctionnel mono-rail (style synchrone) peut être utilisé, avec un retard correspondant dans le cas le plus défavorable . Une fois que les entrées de données valides sont arrivées, un signal de demande est activé comme entrée du délai adapté. Lorsque le retard apparié produit une sortie "terminé", le bloc garantit la fin du calcul. Bien que ce schéma ait des contraintes de temps, elles sont simples, localisées (contrairement aux systèmes synchrones) et unilatérales, elles sont donc généralement faciles à valider.

## Littérature

La littérature dans ce domaine existe dans une variété de comptes rendus de conférences et de journaux. Le symposium principal est le symposium IEEE Async (Symposium international sur les circuits et systèmes asynchrones), fondé en 1994. Divers documents ont également été publiés depuis le milieu des années 1980 lors de conférences telles que la conférence IEEE / ACM Design Automation , la conférence internationale IEEE sur la conception informatique , la Conférence internationale IEEE / ACM sur la conception assistée par ordinateur , la Conférence internationale sur les circuits à l'état solide , et recherche avancée dans VLSI, ainsi que dans des revues de premier plan telles que Transactions IEEE sur systèmes VLSI, Transactions IEEE sur la conception assistée par ordinateur de circuits et systèmes intégrés et Transactions sur calcul distribué.