Circuit asynchrone - Asynchronous circuit

En électronique numérique , un circuit asynchrone , sans horloge , ou circuit auto-synchronisé , est un circuit logique numérique séquentiel qui n'est pas régi par un circuit d'horloge ou un signal d'horloge global . Au lieu de cela, il utilise souvent des signaux qui indiquent l'achèvement d'instructions et d'opérations, spécifiés par de simples protocoles de transfert de données . Ce type de circuit s'oppose aux circuits synchrones , dans lesquels les modifications des valeurs de signal dans le circuit sont déclenchées par des impulsions répétitives appelées signal d' horloge . La plupart des appareils numériques utilisent aujourd'hui des circuits synchrones. Cependant, les circuits asynchrones ont le potentiel d'être plus rapides et peuvent également présenter des avantages en termes de consommation d'énergie inférieure, d'interférences électromagnétiques inférieures et d'une meilleure modularité dans les grands systèmes. Les circuits asynchrones sont un domaine de recherche actif en conception logique numérique .

Logique synchrone vs logique asynchrone

Les circuits logiques numériques peuvent être divisés en logique combinatoire , dans laquelle les signaux de sortie ne dépendent que des signaux d'entrée actuels, et en logique séquentielle , dans laquelle la sortie dépend à la fois de l'entrée actuelle et des entrées passées. En d'autres termes, la logique séquentielle est une logique combinatoire avec mémoire . Pratiquement tous les appareils numériques pratiques nécessitent une logique séquentielle. La logique séquentielle peut être divisée en deux types, la logique synchrone et la logique asynchrone.

  • Dans les circuits logiques synchrones, un oscillateur électronique génère une série répétitive d'impulsions également espacées appelée signal d'horloge . Le signal d'horloge est appliqué à tous les éléments mémoire du circuit, appelés bascules . La sortie des bascules ne change que lorsqu'elle est déclenchée par le front de l'impulsion d'horloge, de sorte que les modifications des signaux logiques dans tout le circuit commencent toutes en même temps, à intervalles réguliers synchronisés par l'horloge. La sortie de tous les éléments de mémoire dans un circuit est appelée l' état du circuit. L'état d'un circuit synchrone ne change que sur l'impulsion d'horloge. Les changements de signal nécessitent un certain temps pour se propager à travers les portes logiques combinatoires du circuit. C'est ce qu'on appelle le délai de propagation . La période du signal d'horloge est suffisamment longue pour que la sortie de toutes les portes logiques ait le temps de se stabiliser à des valeurs stables avant la prochaine impulsion d'horloge. Tant que cette condition est remplie, les circuits synchrones fonctionneront de manière stable, ils sont donc faciles à concevoir.
Cependant, un inconvénient des circuits synchrones est qu'ils peuvent être lents. La fréquence d'horloge maximale possible est déterminée par le chemin logique avec le plus long délai de propagation, appelé chemin critique . Ainsi, les chemins logiques qui terminent leurs opérations rapidement sont inactifs la plupart du temps. Un autre problème est que le signal d'horloge largement distribué consomme beaucoup d'énergie et doit fonctionner que le circuit reçoive ou non des entrées.
  • Dans les circuits asynchrones, il n'y a pas de signal d'horloge et l'état du circuit change dès que les entrées changent. Étant donné que les circuits asynchrones n'ont pas à attendre une impulsion d'horloge pour commencer à traiter les entrées, ils peuvent être plus rapides que les circuits synchrones et leur vitesse n'est théoriquement limitée que par les délais de propagation des portes logiques. Cependant, les circuits asynchrones sont plus difficiles à concevoir et sujets à des problèmes que l'on ne trouve pas dans les circuits synchrones. En effet, l'état résultant d'un circuit asynchrone peut être sensible aux temps d'arrivée relatifs des entrées aux portes. Si les transitions sur deux entrées arrivent presque en même temps, le circuit peut passer dans le mauvais état en fonction de légères différences dans les délais de propagation des portes. C'est ce qu'on appelle une condition de course . Dans les circuits synchrones, ce problème est moins grave car les conditions de concurrence ne peuvent se produire qu'en raison d'entrées extérieures au système synchrone, appelées entrées asynchrones . Bien que certains systèmes numériques entièrement asynchrones aient été construits (voir ci-dessous), les circuits asynchrones sont aujourd'hui généralement utilisés dans quelques parties critiques de systèmes autrement synchrones où la vitesse est primordiale, tels que les circuits de traitement du signal.

Fondement théorique

La théorie originale des circuits asynchrones a été créée par David E. Muller au milieu des années 1950. Cette théorie a été présentée plus tard dans le livre bien connu "Switching Theory" de Raymond Miller.

Le terme logique asynchrone est utilisé pour décrire une variété de styles de conception, qui utilisent différentes hypothèses sur les propriétés des circuits. Ceux-ci varient du modèle de retard groupé - qui utilise des éléments de traitement de données "classiques" avec achèvement indiqué par un modèle de retard généré localement - à une conception insensible au retard - où des retards arbitraires à travers des éléments de circuit peuvent être pris en charge. Ce dernier style a tendance à produire des circuits qui sont plus gros que les implémentations de données groupées, mais qui sont insensibles à la disposition et aux variations paramétriques et sont donc "corrects par conception".

La logique asynchrone est la logique requise pour la conception de systèmes numériques asynchrones. Ceux-ci fonctionnent sans signal d'horloge et on ne peut donc pas compter sur des éléments logiques individuels pour avoir un état vrai/faux discret à un moment donné. La logique booléenne (à deux valeurs) est inadéquate pour cela et des extensions sont donc nécessaires. Karl Fant a développé un traitement théorique de cela dans son travail Conception logiquement déterminée en 2005 qui utilisait une logique à quatre valeurs avec null et intermédiaire étant les valeurs supplémentaires. Cette architecture est importante car elle est quasi insensible au délai . Scott Smith et Jia Di ont développé une variante ultra-basse consommation de la logique de convention nulle de Fant qui intègre le CMOS à seuils multiples . Cette variation est appelée logique de convention nulle à plusieurs seuils (MTNCL), ou encore logique de convention de sommeil (SCL). Vadim Vasyukevich a développé une approche différente basée sur une nouvelle opération logique qu'il a appelée venjonction . Cela prend en compte non seulement la valeur actuelle d'un élément, mais aussi son historique.

Les réseaux de Petri sont un modèle attrayant et puissant pour raisonner sur les circuits asynchrones (voir Réseau de Petri : Modèles ultérieurs de concurrence ). Un type particulièrement utile de réseaux de Petri interprétés, appelés Signal Transition Graphs (STG), a été proposé indépendamment en 1985 par Leonid Rosenblum et Alex Yakovlev et Tam-Anh Chu. Depuis lors, les STG ont été largement étudiés en théorie et en pratique, ce qui a conduit au développement d'outils logiciels populaires pour l'analyse et la synthèse de circuits de commande asynchrones, tels que Petrify et Workcraft.

À la suite des réseaux de Petri, d'autres modèles de concurrence ont été développés qui peuvent modéliser des circuits asynchrones, y compris le modèle d'acteur et les calculs de processus .

Avantages

Une variété d'avantages ont été démontrés par les circuits asynchrones, y compris les circuits quasi insensibles au retard (QDI) (généralement reconnus comme la forme la plus « pure » de logique asynchrone qui conserve l'universalité de calcul) et les formes moins pures de circuits asynchrones qui utilisent contraintes de synchronisation pour des performances supérieures et une surface et une puissance inférieures :

  • Traitement robuste de la métastabilité des arbitres .
  • Unités fonctionnelles plus performantes, qui fournissent un achèvement dans le cas moyen (c'est-à-dire en fonction des données) plutôt que dans le pire des cas. Les exemples incluent la complétion spéculative qui a été appliquée pour concevoir des additionneurs de préfixes parallèles plus rapidement que les additionneurs synchrones, et un additionneur à virgule flottante double précision hautes performances qui surpasse les principales conceptions synchrones.
  • Achèvement précoce d'un circuit lorsqu'on sait que les entrées qui ne sont pas encore arrivées ne sont pas pertinentes.
  • Consommation d'énergie réduite car aucun transistor ne passe jamais à moins qu'il n'effectue un calcul utile. Epson a signalé une consommation d'énergie inférieure de 70 % par rapport à la conception synchrone. En outre, les pilotes d'horloge peuvent être supprimés, ce qui peut réduire considérablement la consommation d'énergie. Cependant, lors de l'utilisation de certains codages, les circuits asynchrones peuvent nécessiter plus de surface, ce qui peut entraîner une augmentation de la consommation d'énergie si le processus sous-jacent présente de mauvaises propriétés de fuite (par exemple, des processus submicrométriques profonds utilisés avant l'introduction de diélectriques à élevé ).
  • Pipelines « élastiques » , qui atteignent des performances élevées tout en gérant avec élégance des débits d'entrée et de sortie variables et des retards d'étape de pipeline incompatibles.
  • La liberté des difficultés en constante aggravation de la distribution d' une haute fan-out , le signal d'horloge sensible à la synchronisation.
  • Meilleure modularité et composabilité.
  • Beaucoup moins d'hypothèses sur le processus de fabrication sont nécessaires (la plupart des hypothèses sont des hypothèses de calendrier).
  • La vitesse du circuit s'adapte aux conditions changeantes de température et de tension plutôt que d'être verrouillée à la vitesse imposée par les hypothèses les plus défavorables.
  • Immunité à la variabilité transistor à transistor dans le processus de fabrication, qui est l'un des problèmes les plus graves auxquels l'industrie des semi-conducteurs est confrontée à mesure que les matrices rétrécissent.
  • Interférences électromagnétiques (EMI) moins graves . Les circuits synchrones créent beaucoup d'interférences électromagnétiques dans la bande de fréquences à (ou très près) de leur fréquence d'horloge et de ses harmoniques ; les circuits asynchrones génèrent des motifs EMI qui sont beaucoup plus uniformément répartis sur le spectre.
  • Dans les circuits asynchrones, la signalisation locale élimine le besoin d'une synchronisation globale qui exploite certains avantages potentiels par rapport aux synchrones. Ils ont montré des spécifications potentielles en termes de faible consommation d'énergie, de réutilisation de conception, d'immunité au bruit améliorée et de compatibilité électromagnétique. Les circuits asynchrones sont plus tolérants aux variations de traitement et aux fluctuations de tension externes.
  • Moins de stress sur le réseau de distribution électrique. Les circuits synchrones ont tendance à tirer une grande quantité de courant juste au bord de l'horloge et peu de temps après. Le nombre de nœuds commutant (et donc la quantité de courant consommé) diminue rapidement après le front d'horloge, atteignant zéro juste avant le front d'horloge suivant. Dans un circuit asynchrone, les temps de commutation des nœuds ne sont pas corrélés de cette manière, de sorte que l'appel de courant a tendance à être plus uniforme et moins salves.

Désavantages

  • Surdébit de surface causé par une augmentation du nombre d'éléments de circuit (transistors). Dans certains cas, une conception asynchrone peut nécessiter jusqu'à doubler les ressources d'une conception synchrone, en raison de l'ajout de circuits de détection d'achèvement et de conception pour test.
  • Moins de personnes sont formées dans ce style par rapport à la conception synchrone.
  • Les conceptions synchrones sont intrinsèquement plus faciles à tester et à déboguer que les conceptions asynchrones. Cependant, cette position est contestée par Fant, qui prétend que la simplicité apparente de la logique synchrone est un artefact des modèles mathématiques utilisés par les approches de conception commune.
  • La synchronisation d' horloge dans les conceptions synchrones plus conventionnelles est une approximation de l'idéal asynchrone, et dans certains cas, sa simplicité peut l'emporter sur les avantages d'une conception entièrement asynchrone.
  • Les performances (vitesse) des circuits asynchrones peuvent être réduites dans les architectures qui nécessitent une entrée complète (chemin de données plus complexe).
  • Manque d' outils d' EDA commerciaux dédiés et asynchrones axés sur la conception .

la communication

Il existe plusieurs façons de créer des canaux de communication asynchrones qui peuvent être classés par leur protocole et leur codage de données.

Protocoles

Il existe deux familles de protocoles largement utilisées qui diffèrent par la manière dont les communications sont codées :

  • poignée de main à deux phases ( aka protocole à deux phases, de non-retour à zéro (NRZ) codant, ou la signalisation de transition): Communications sont représentés par une transition de fil; les transitions de 0 à 1 et de 1 à 0 comptent toutes deux comme des communications.
  • poignée de main à quatre phases (aka protocole à quatre phases, ou codage Return-to-Zero (RZ)) : les communications sont représentées par une transition filaire suivie d'une réinitialisation ; une séquence de transition de 0 à 1 et retour à 0 compte comme une communication unique.
Illustration de poignées de main biphasées et quadriphasées. En haut : un expéditeur et un destinataire communiquent avec de simples signaux de demande et d'accusé de réception. L'expéditeur pilote la ligne de demande et le destinataire pilote la ligne d'accusé de réception. Au milieu : chronogramme de deux communications biphasées. En bas : chronogramme d'une communication à quatre phases.

Bien qu'ils impliquent plus de transitions par communication, les circuits mettant en œuvre des protocoles à quatre phases sont généralement plus rapides et plus simples que les protocoles à deux phases car les lignes de signal reviennent à leur état d'origine à la fin de chaque communication. Dans les protocoles à deux phases, les implémentations de circuit devraient stocker l'état de la ligne de signal en interne.

Notez que ces distinctions de base ne tiennent pas compte de la grande variété de protocoles. Ces protocoles peuvent coder uniquement les demandes et les accusés de réception ou également coder les données, ce qui conduit au codage de données multifilaire populaire. De nombreux autres protocoles moins courants ont été proposés, notamment l'utilisation d'un seul fil pour la demande et l'accusé de réception, l'utilisation de plusieurs tensions significatives, l'utilisation uniquement d'impulsions ou de synchronisations d'équilibrage afin de supprimer les verrous.

Encodage des données

Il existe deux codages de données largement utilisés dans les circuits asynchrones : le codage de données groupées et le codage multirail

Une autre façon courante d'encoder les données consiste à utiliser plusieurs fils pour coder un seul chiffre : la valeur est déterminée par le fil sur lequel l'événement se produit. Cela évite certaines des hypothèses de retard nécessaires avec l'encodage de données groupées, puisque la demande et les données ne sont plus séparées.

Encodage de données groupées

L'encodage des données groupées utilise un fil par bit de données avec une demande et un signal d'accusé de réception ; c'est le même codage utilisé dans les circuits synchrones sans la restriction que les transitions se produisent sur un front d'horloge. La demande et l'accusé de réception sont envoyés sur des fils séparés avec l'un des protocoles ci-dessus. Ces circuits supposent généralement un modèle de retard limité avec les signaux d'achèvement retardés suffisamment longtemps pour que les calculs aient lieu.

En fonctionnement, l'expéditeur signale la disponibilité et la validité des données avec une demande. Le récepteur indique alors l'achèvement par un accusé de réception, indiquant qu'il est en mesure de traiter de nouvelles demandes. C'est-à-dire que la demande est regroupée avec les données, d'où le nom "bundled-data".

Les circuits de données groupées sont souvent appelés micropipelines , qu'ils utilisent un protocole biphasé ou quadriphasé, même si le terme a été initialement introduit pour des données groupées biphasées.

Une communication de données groupées en 4 phases. En haut : un expéditeur et un destinataire sont connectés par des lignes de données, une ligne de demande et une ligne d'accusé de réception. En bas : chronogramme d'une communication de données groupée. Lorsque la ligne de demande est basse, les données doivent être considérées comme invalides et susceptibles de changer à tout moment.

Encodage multi-rails

L'encodage multirail utilise plusieurs fils sans relation un à un entre les bits et les fils et un signal d'accusé de réception séparé. La disponibilité des données est indiquée par les transitions elles-mêmes sur un ou plusieurs des fils de données (selon le type de codage multirail) au lieu d'un signal de demande comme dans le codage de données groupées. Cela offre l'avantage que la communication de données est insensible au retard. Deux encodages multi-rails courants sont un rail chaud et un rail double. L'encodage one-hot (alias 1-of-n) représente un nombre en base n avec une communication sur l'un des n fils. L'encodage double rail utilise des paires de fils pour représenter chaque bit des données, d'où le nom « double rail » ; un fil de la paire représente la valeur de bit de 0 et l'autre représente la valeur de bit de 1. Par exemple, un nombre de deux bits codé à double rail sera représenté avec deux paires de fils pour quatre fils au total. Lors d'une communication de données, les communications se produisent sur l'un de chaque paire de fils pour indiquer les bits de données. Dans le cas général, un codage m n représente les données sous forme de m mots de base n.

Schéma des communications à double rail et 1 sur 4. En haut : un émetteur et un récepteur sont connectés par des lignes de données et une ligne d'accusé de réception. Milieu : Chronogramme de l'émetteur communiquant les valeurs 0, 1, 2, puis 3 au récepteur avec le codage 1 sur 4. En bas : Chronogramme de l'émetteur communiquant les mêmes valeurs au récepteur avec le codage double rail. Pour cette taille de données particulière, le codage à double rail est le même qu'un codage 2x1-of-2.

Le codage à double rail avec un protocole à quatre phases est le plus courant et est également appelé codage à trois états , car il a deux états valides (10 et 01, après une transition) et un état de réinitialisation (00). Un autre codage courant, qui conduit à une mise en œuvre plus simple qu'un rail double à un point chaud et biphasé, est le codage à quatre états , ou rail double à codage de niveau, et utilise un bit de données et un bit de parité pour obtenir un codage biphasé. protocole.

CPU asynchrone

Les processeurs asynchrones sont l'une des nombreuses idées pour changer radicalement la conception des processeurs .

Contrairement à un processeur conventionnel, un processeur sans horloge (processeur asynchrone) n'a pas d'horloge centrale pour coordonner la progression des données dans le pipeline. Au lieu de cela, les étages de la CPU sont coordonnés à l'aide de dispositifs logiques appelés « contrôles de pipeline » ou « séquenceurs FIFO ». Fondamentalement, le contrôleur de pipeline synchronise l'étape suivante de la logique lorsque l'étape existante est terminée. De cette façon, une horloge centrale est inutile. Il peut en fait être encore plus facile d'implémenter des périphériques hautes performances dans une logique asynchrone, par opposition à une logique cadencée :

  • les composants peuvent s'exécuter à des vitesses différentes sur un processeur asynchrone ; tous les composants principaux d'un processeur cadencé doivent rester synchronisés avec l'horloge centrale ;
  • un processeur traditionnel ne peut pas "aller plus vite" que les performances attendues dans le pire des cas de l'étape/instruction/composant le plus lent. Lorsqu'une CPU asynchrone termine une opération plus rapidement que prévu, l'étape suivante peut immédiatement commencer à traiter les résultats, plutôt que d'attendre la synchronisation avec une horloge centrale. Une opération peut se terminer plus rapidement que la normale en raison des attributs des données en cours de traitement (par exemple, la multiplication peut être très rapide lors de la multiplication par 0 ou 1, même lors de l'exécution du code produit par un compilateur naïf), ou en raison de la présence d'une tension plus élevée ou le réglage de la vitesse du bus, ou une température ambiante plus basse que « normale » ou prévue.

Les partisans de la logique asynchrone pensent que ces capacités auraient les avantages suivants :

  • une dissipation de puissance plus faible pour un niveau de performance donné, et
  • vitesses d'exécution les plus élevées possibles.

Le plus gros inconvénient du CPU sans horloge est que la plupart des outils de conception de CPU supposent un CPU cadencé (c'est-à-dire un circuit synchrone ). De nombreux outils « appliquent des pratiques de conception synchrones ». Faire un CPU sans horloge (concevoir un circuit asynchrone) implique de modifier les outils de conception pour gérer la logique sans horloge et de faire des tests supplémentaires pour s'assurer que la conception évite les problèmes métastables . Le groupe qui a conçu l' AMULET , par exemple, a développé un outil appelé LARD pour faire face à la conception complexe d'AMULET3.

Malgré la difficulté de le faire, de nombreux processeurs asynchrones ont été construits, notamment :

  • l' ORDVAC et l' (identique) ILLIAC I (1951)
  • le Johnniac (1953)
  • le WEIZAC (1955)
  • le Kiev (1958). Une machine soviétique utilisant le langage de programmation avec des pointeurs bien avant le langage PL/1.

  • l' ILLIAC II (1962)
  • L' Université Victoria de Manchester a construit Atlas (1964)
  • Les ordinateurs centraux ICL 1906A et 1906S, faisant partie de la série 1900 et vendus à partir de 1964 pendant plus d'une décennie par ICL
  • Ordinateurs polonais KAR-65 et K-202 (1965 et 1970 respectivement)
  • Les processeurs Honeywell 6180 (1972) et Series 60 Level 68 (1981) sur lesquels Multics fonctionnait de manière asynchrone
  • Modules de microprocesseur soviétiques bit-slice (fin des années 1970) produits sous les noms К587, К588 et К1883 (U83x en Allemagne de l'Est)
  • Le microprocesseur asynchrone Caltech, le premier microprocesseur asynchrone au monde (1988);
  • l' ARM -Mise en oeuvre AMULETTE (1993 et 2000);
  • l'implémentation asynchrone de MIPS R3000, baptisée MiniMIPS (1998) ;
  • plusieurs versions du processeur XAP ont expérimenté différents styles de conception asynchrones : un XAP de données groupées, un XAP 1-of-4 et un XAP 1-of-2 (double rail) (2003 ?) ;
  • un processeur compatible ARM (2003 ?) conçu par ZC Yu, SB Furber et LA Plana ; « conçu spécifiquement pour explorer les avantages de la conception asynchrone pour les applications sensibles à la sécurité » ;
  • le processeur « Network-based Asynchronous Architecture » (2005) qui exécute un sous-ensemble du jeu d' instructions de l' architecture MIPS ;
  • le processeur ARM996HS (2006) de Handshake Solutions
  • le processeur HT80C51 (2007 ?) de Handshake Solutions
  • le SEAFORTH multi-core processeur (2008) de Charles H. Moore .
  • le GA144 multi-core processeur (2010) de Charles H. Moore .
  • TAM16 : cœur IP de microcontrôleur asynchrone 16 bits (Tiempo)
  • le cœur asynchrone DLX Aspida Le processeur DLX asynchrone open source (ASPIDA) a été implémenté avec succès à la fois dans les versions ASIC et FPGA.

L' ILLIAC II a été le premier processeur entièrement asynchrone et indépendant de la vitesse jamais construit ; c'était l'ordinateur le plus puissant à l'époque.

Les modules de transfert de registre DEC PDP-16 (vers 1973) ont permis à l'expérimentateur de construire des éléments de traitement asynchrones à 16 bits. Les retards pour chaque module ont été fixés et basés sur le pire timing du module.

Le microprocesseur asynchrone Caltech (1988) a été le premier microprocesseur asynchrone (1988). Caltech a conçu et fabriqué le premier processeur au monde entièrement quasi insensible au délai . Au cours des démonstrations, les chercheurs ont chargé un programme simple qui s'exécutait en boucle serrée, pulsant l'une des lignes de sortie après chaque instruction. Cette ligne de sortie était connectée à un oscilloscope. Lorsqu'une tasse de café chaud était placée sur la puce, la fréquence du pouls (la « fréquence d'horloge » effective ») ralentissait naturellement pour s'adapter à la détérioration des performances des transistors chauffés. Lorsque de l'azote liquide a été versé sur la puce, le taux d'instruction a augmenté sans intervention supplémentaire. De plus, à des températures plus basses, la tension fournie à la puce pouvait être augmentée en toute sécurité, ce qui a également amélioré le taux d'instruction - encore une fois, sans configuration supplémentaire.

En 2004, Epson a fabriqué le premier microprocesseur pliable au monde appelé ACT11, une puce asynchrone 8 bits. Les processeurs flexibles synchrones sont plus lents, car plier le matériau sur lequel une puce est fabriquée provoque des variations sauvages et imprévisibles dans les délais de divers transistors, pour lesquels les pires scénarios doivent être supposés partout et tout doit être cadencé à la vitesse la plus défavorable. Le processeur est destiné à être utilisé dans les cartes à puce , dont les puces sont actuellement limitées en taille à celles suffisamment petites pour qu'elles puissent rester parfaitement rigides.

En 2014, IBM a annoncé une puce développée par SyNAPSE qui fonctionne de manière asynchrone, avec l'un des nombres de transistors les plus élevés de toutes les puces jamais produites. La puce d'IBM consomme des ordres de grandeur moins d'énergie que les systèmes informatiques traditionnels sur les références de reconnaissance de formes.

Voir également

Les références

Lectures complémentaires