thumb|upright=1.2|Principe du pipeline synchrone, en haut, où les données avancent au rythme de l'horloge, et du pipeline asynchrone, en bas, où les étages communiquent localement.
Un circuit asynchrone est un circuit électronique numérique qui n'utilise pas de signal d'horloge global pour synchroniser ses différents éléments. À la place, ces derniers communiquent souvent localement en indiquant l'envoi et la réception de données. On parle parfois de « circuit auto-séquencé ».
Ils sont envisagés comme une alternative possible aux circuits synchrones, plus répandus, particulièrement pour diminuer la consommation d'énergie, puisqu'une horloge reste active en permanence. L'absence d'horloge peut apporter d'autres avantages, comme une vitesse accrue, une conception facilitée et une plus grande fiabilité.
En 2012, malgré ces nombreux atouts et bien qu'ils aient vu le jour presque en même temps que les circuits synchrones, de tels circuits restent minoritaires. Par exemple, la plupart des processeurs fabriqués sont synchronisés par une ou plusieurs horloges, tant sur le marché embarqué que pour les processeurs les plus performants, bien que l'on commence à voir apparaître des microcontrôleurs asynchrones.
Histoire L'histoire des circuits asynchrones est jalonnée de nombreuses réalisations majeures, la création d'ordinateurs ou de processeurs complets constituant une étape marquante. Elles ne doivent pas faire oublier néanmoins les avancées théoriques et, récemment, le développement d'outils de synthèse et de vérification qu'elles ont permis.
Tout comme dans les autres branches de l'électronique numérique, la recherche continue encore bien que le concept ait été exprimé dès les années 1950. Certains chercheurs présagent l'utilisation généralisée de techniques asynchronesPar exemple, Alain Martin écrit en 2007 : dans Asynchronous Logic : Results and Prospects, mais de telles prédictions n'ont pas été réalisées par le passé.
Les débuts : circuits indépendants de la vitesse et automates finis La théorie des circuits asynchrones débute avec les travaux de David A. Huffman sur l'implémentation d'automates finis en 1953 . Le concept de « circuit asynchrone » tel qu'il est aujourd'hui, construit de manière modulaire en utilisant un protocole de communication entre les éléments, remonte à la fin des années 1950, quand les circuits « indépendants de la vitesse » reposant sur un protocole double-rail trois états sont introduits par David Muller : son équipe construit l'ILLIAC I en 1952 et l'ILLIAC II en 1962 . Cependant, l'utilisation de ce type de circuits est alors jugée complexe : il n'y a pas de méthode simple permettant de réaliser de tels circuits, alors que les automates finis fournissent un modèle adapté.
Durant les années 1960 et 1970, quelques circuits asynchrones voient le jour, dont les « macromodules », composants asynchrones qui sont assemblés pour créer des systèmes complexes : l'interface asynchrone permet de ne se soucier que de problèmes logiques.
L'essor des micropipelines et les premiers microprocesseurs La fin des années 1980 et le début des années 1990 connaissent un regain d'intérêt pour les techniques asynchrones, attribuable sans doute aux travaux d'Ivan Sutherland et d'Alain Martin .
En 1989, Ivan Sutherland introduit le concept de Dans l'article , implémentationPrésentation d'un article sur le site de l'IEEE du . Celui-ci est ensuite sans cesse amélioré, grâce à d'autres implémentations ou à l'utilisation de protocoles à quatre phases.
Cette période voit également l'apparition du premier microprocesseur asynchrone, le conçu à Caltech par l'équipe d'Alain Martin en 1989. Il utilise des circuits quasi-insensibles aux délais () générés à partir de code Proche du langage CSP mais adapté à la description matérielle et possède une architecture RISC .
Il est suivi par les différentes versions de l'AMULET, basées sur les , qui reprennent l'architecture ARM. La deuxième version introduit les à quatre phases. Un autre microprocesseur QDI de Caltech, le MiniMIPS, considéré comme particulièrement performant, est conçu et testé à la fin des années 1990. D'autres sont conçus dans des universités de par le monde comme le TITAC 1 en 1994, le TITAC 2 en 1997 (architecture RISC, modèle proche du modèle QDI) ou l'Aspro (RISC et QDI), en 2001 à GrenobleSujet de la thèse : .
En parallèle, de nouvelles méthodes apparaissent : le codage quatre-états, plus efficace que les autres codages double-rail deux-phases, est inventé indépendamment par deux équipes en 1991 et 1992 ; les différents pipelines QDI apparaissent et sont utilisés dans les microprocesseurs ; des pipelines potentiellement plus efficaces, faisant des hypothèses temporelles, sont proposés.
Les premières recherches en entreprise et les exploitations commerciales thumb|L'entreprise Philips a utilisé très tôt des circuits asynchrones pour les télécommunications. Ici, un . À la fin des années 1990, des applications commerciales recommencent à voir le jour : de nombreuses entreprises commencent à utiliser des circuits basés sur une approche asynchrone ou à faire des recherches en ce sens.
Parmi elles, Philips fait figure de précurseur en mettant en œuvre des outils de synthèse de circuits asynchrones utilisant le langage Tangram dès 1995, et ce grâce aux outils de l'entreprise ; la société dispose de microcontrôleurs 80C51 asynchrones dès 1998 , qui sont utilisés dans plusieurs systèmes, dont des et des cartes à puces.
Des chercheurs de Sun Microsystems, Intel et IBM prennent aussi part à cet engouement : de 1995 à 1999, Intel conduit des recherches pour créer un décodeur pour le jeu d'instruction x86, , tandis que les laboratoires de Sun sont à l'origine de plusieurs techniques, dont les pipelines de type GasP et une architecture pour processeur asynchrone, le , qui n'a jamais été implémentée.
Enfin, de nombreuses start-ups exploitent les avantages de ces circuits, comme dès 1996Issue en 1996 de Theseus Research Incorporated, elle-même fondée en 1990 selon la page web de l'entreprise, Fulcrum en 2000, ou plus tard TiempoPage de présentation de l'entreprise, ou encore .
Les méthodes de synthèse et d'optimisation se sont aussi beaucoup améliorées, en particulier la synthèse à partir d'une spécification sous forme de réseau de Petri, menant à des outils comme . D'autres pistes sont explorées : outre la compilation à partir de langages comme CHP ou Tangram citée plus haut, des outils visent la synthèse pour des modèles de délais bornés, comme .
Des avancées récentes La recherche autour des circuits asynchrones se poursuit durant les années 2000 : de nouvelles implémentations de pipelines sont proposées tant multi-rails, comme LP2/1 en 2000 , qu'à données groupées, comme en 2000 ou MOUSETRAP en 2007 ; les protocoles dits « », utilisant un même fil pour la requête et l'acquittement, apparaissentApparemment présenté pour la première fois (en interprétant ) dans , avec des implémentations comme et GasP .
En 2004, Epson crée un microcontrôleur flexible, qui est le premier du genre à être asynchroneArticle en français et annonce de presse d'origine.
Caractéristiques Les circuits asynchrones possèdent plusieurs propriétés potentiellement intéressantesCes avantages sont décrits dans de nombreux articles relatifs à l'électronique asynchrone, comme , et : ils sont particulièrement prometteurs dans des domaines où la fiabilité est requise et pour des circuits à basse consommation, voire pour leur vitesse, bien qu'aucune méthode de conception ne possède tous ces avantages simultanément : il existe de très nombreuses façons de les concevoir, chacune avec ses avantages et ses problèmes.
Consommation d'énergie Un signal d'horloge change d'état en permanenceUne optimisation pour les circuits synchrones, appelée « », consiste à l'arrêter ou à le ralentir lorsque le circuit est inactif pour une « longue période ». : il peut représenter une part importante de la consommation d'un circuit. A contrario, les circuits asynchrones ne sont actifs que lorsque des données sont disponibles. Dans le cas contraire, aucun transistor ne commute et la seule puissance consommée est due à leurs courants de fuiteIl s'agit de la distinction entre consommation dite « dynamique » et « statique » : la première, consommation d'un circuit qui change d'état, est due au chargement des fils, aux fuites et aux courts-circuits lors des commutations ; la seconde, consommation d'un circuit stable, n'est due qu'au fait que les transistors ne sont pas parfaits et présentent des fuites, et est généralement bien plus faible, ce qui en fait des candidats crédibles pour des circuits à basse consommation, ou lorsque la charge de travail évolue rapidement. Cependant, pour assurer la communication entre les éléments, ils utilisent aussi plus de transistors et plus de fils pour une même quantité de données que leurs équivalents synchrones, ce qui peut diminuer les gains énergétiques et augmenter la taille des puces.
Certains circuits ont néanmoins montré des gains substantiels, avec une efficacité énergétique quatre fois supérieure à un équivalent synchrone pour une implémentation de microcontrôleur 80C51, ou proche des autres processeurs ARM du moment pour les processeurs AMULET.
Fiabilité Selon la méthodologie de conception employée, il est possible de créer des circuits utilisant peu d'hypothèses temporelles (insensibles ou quasi-insensibles aux délais par exemple) : ces circuits ont un comportement correct même si les propriétés physiques du circuit évoluent (à cause de la températureLa vitesse des circuits asynchrones varie avec la température sans nécessiter de réglage, puisque les délais des portes, et non la fréquence d'une horloge, déterminent leur vitesse ; des circuits insensibles ou quasi-insensibles aux délais toléreront mieux ces variations., de la tension d'alimentationComme démontré avec humour sur le premier microprocesseur asynchrone ou d'un changement de technologie de fabrication) et .
Les circuits asynchrones sont sensibles à tous les changements d'états des fils, et non à des signaux stabilisés échantillonnés lors de commutations de l'horloge : on parle d'« aléas » pour désigner les variations indésirables des signauxOn classe souvent les aléas selon ce qui les provoque : ils peuvent être combinatoires ou séquentiels, logiques ou dynamiques. De tels problèmes sont à prendre en compte à la conception. Cela leur donne aussi des comportements différents des circuits synchrones en cas d'erreurs ou de parasites. qui peuvent être infirmées par exemple par des variations de taille et de performance des transistors .
La conception d'un circuit synchrone demande quant à elle une connaissance précise des délais des portes, mais un délai trop élevé peut être compensé par une diminution de la fréquence d'horloge, au prix d'une baisse de la vitesse globale du circuit toutefois. Un autre problème récurrent est le phénomène de gigue d'horloge, et en général le problème de la distribution du signal d'horloge dans les circuits, qui compliquent la montée en fréquence et dont la correction nécessite l'utilisation de techniques complexes, parfois énergivores.
Vitesse