Utilisateur:Topeil/Micropipeline

Je diviserai sans doute cet article, ou je le renommerai à sa publication : soit en "pipeline asynchrone", soit, si je le divise, en des parties destinées à chaque protocole de communication.

Le mot anglais micropipeline désigne un type de pipeline asynchrone utilisant le protocole à deux phases, données groupées. Il a été proposé initialement par Ivan E. Sutherland.

Par extension, ce mot est parfois utilisé pour d'autres pipelines asynchrones utilisant un codage à données groupées, basés sur la même structure à base de portes C pour les signaux de requêtes et d'acquittement. On parle ainsi de micropipelines à quatre phases[1].

Principe des pipelines asynchrones

modifier

Les pipelines asynchrones gèrent le passage de donnée via des "poignées de main" entre les étages. Par nature, ils peuvent contenir une quantité de donnée variable, selon le nombre d'étages vides : ils sont dits élastiques. De plus, la vitesse de progression des données n'est pas limitée par une horloge, mais dépend uniquement de la durée de ces "poignées de main" et du remplissage du pipeline.

Structure de contrôle

modifier
 
La structure de contrôle des micropipelines

La structure de contrôle, aussi appelée pipeline de Muller est commune à tous les micropipelines ; elle fonctionne aussi pour un protocole à 4 phases.

Cette structure permet de propager les signaux de requêtes et d'acquittement en opérant un rendez-vous entre eux., opéré par une porte C.

Fonctionnement du micropipeline de Sutherland

modifier

Le micropipeline utilise un protocole à 2 phases, avec un codage données-groupées. Chaque étage du micropipeline est constitué d'une porte C gérant les signaux de requête et d'acquittement, et de bascules.

Éventuellement, des circuits logiques peuvent être interposés entre deux étages et effectuer des calculs.


Bascules

modifier

Les bascules proposées par Sutherland "capturent" le signal de l'étage précédent, puis le "passent" à l'étage suivant tout en envoyant simultanément un acquittement à l'étage précédent et une requête au suivant.

Calculs intermédiaires

modifier

Les micropipelines permettent d'insérer des circuits combinatoires entre deux étages. Dès lors, on utilise un modèle de délais bornés pour hypothèse temporelle : un délai est ajouté au signal de requête de manière à permettre à ces circuits de renvoyer une valeur avant que la requête n'atteigne l'étage suivant, qui sinon mémoriserait des données invalides.

Cela présente l'avantage de permettre de réutiliser les circuits habituellement utilisés en électronique synchrone, mais ne permet pas, tel quel, de complétion anticipée des calculs comme le font d'autres méthodes de conception. De plus, cela nécessite un contrôle fin des délais dans les portes, et cette conception est donc plus sensible aux variations de technologie de fabrication (type de circuit, finesse de gravure...). Contrairement à un circuit synchrone, où il est possible de modifier la fréquence d'horloge, un délai trop faible ne pourra pas être corrigée.

Utilisation

modifier

Ce type de pipeline est très utilisé pour la conception de circuits asynchrones. Il est en particulier à la base de nombreux processeurs ARM asynchrones, comme la première version de l'AMULET.

Autres implémentations de micropipelines

modifier

La première implémentation du micropipeline n'est ni la plus simple, ni la plus rapide, et d'autres ont été proposées qui la surpassent dans certaines situations.

Micropipelines basés sur des bascules D

modifier

Le micropipeline de Sutherland opère une traduction interne d'un protocole à deux phases vers un protocole à quatre phases. Par conséquent, des micropipelines ont été proposés qui n'utilisent qu'un protocole à quatre phases[1], basés sur des bascules D.

Des bascules D réagissant aux deux fronts d'horloge ont aussi été implémentées pour permettre des micropipelines plus rapide avec un protocole à deux phases [2].

Autres pipelines asynchrones

modifier

D'autres implémentations de pipelines asynchrones existent, y compris pour le protocole deux phases données groupées.

Double rail, 4 phases

modifier

Données groupées, 4 phases

modifier

Pipelines particuliers

modifier

Références

modifier
  1. a et b Stephen B. Furber et Paul Day, Four-Phase Micropipeline Latch Control Circuit (lire en ligne)
  2. Asynchronous Micropipeline Using an Effective Double Edge Trigerred D Flipflop

Bibliographie

modifier
  • L'article de Sutherland : (en) Ivan E. Sutherland, Micropipelines (lire en ligne)
  • (en) Nigel Charles Paver, The design and implementation of an asynchronous microprocessor, (lire en ligne)