• Aucun résultat trouvé

Concepts de base des circuits asynchrones

6.1 Méthode de conception asynchrone

6.1.1 Concepts de base des circuits asynchrones

Les circuits intégrés synchrones numériques se basent sur deux hypothèses : les signaux manipulés sont binaires et le temps est discrétisé. La binarisation permet une implémenta- tion électrique simple grâce à l’algèbre de Boole, et la discrétisation du temps grâce à une horloge permet de s’affranchir des boucles combinatoires, ainsi que des transitions élec- triques. Les circuits intégrés asynchrones ne se basent pas sur la discrétisation du temps à un pas contraint par le pire cas de traitement de données mais sur des synchronisations locales ce qui permet à des évènements d’être traités dès leur arrivée à la vitesse maximale de l’opérateur qui les traite.

En asynchrone les niveaux des signaux ne sont plus échantillonnés, ce sont leurs transi- tions qui sont détectées. L’information est donc codée dans les transitions qui permettent de synchroniser le fonctionnement du circuit.

6.1.1.1 Synchronisation locale entre les modules de contrôle

Comme présenté précédemment, le transfert de données entre deux opérateurs asyn- chrones sont basés sur une synchronisation locale. Chaque opérateur doit donc remplir les fonctions suivantes :

1. écouter les communications entrantes,

2. signaler aux opérateurs émetteurs que les données ont bien été reçues,

3. réaliser le traitement des données quand toutes les informations sont disponibles, 4. attendre que l’opérateur suivant soit prêt à recevoir les données,

5. produire et transmettre les données à l’opérateur suivant.

Ainsi pour permettre un fonctionnement indépendamment du temps entre deux opé- rateurs, le contrôle local doit s’effectuer de manière bidirectionnelle. Cette communication est implémentée sous forme de canal et est dite à poignée de mains2 car celui-ci contient

les données/requêtes allant de l’émetteur vers le récepteur et un autre signal d’acquitte- ment allant du récepteur vers l’émetteur pour confirmer la bonne réception des données. Ce signal d’acquittement permet la synchronisation des données entre les opérateurs et la causalité des évènements au niveau local et donc la cohérence fonctionnelle du système dans son ensemble. Ce mécanisme de communication bidirectionnel sous forme de canaux est illustré figure 6.1.

Figure 6.1 – Mécanisme de synchronisation locale entre opérateurs asynchrones grâce aux com- munications de types requêtes/acquittements

• Protocole de communication asynchrone

Ces canaux de communication peuvent être implémentés de deux manières différentes : le protocole deux phases appelé aussi NRZ3 et le protocole quatre phases appelé aussi

2. Handshake en anglais 3. Non Retour à Zéro

Méthode de conception asynchrone 87 RTZ4. Ces protocoles de communication sont illustrés figure 6.2.

Figure6.2 – Protocole de communication asynchrone 2 et 4 phases

Le protocole deux phases fonctionne de la manière suivante :

— Phase 1 : le récepteur détecte la présence de nouvelles données, effectue le traitement et bascule le signal d’acquittement ;

— Phase 2 : l’émetteur détecte la transition sur le signal d’acquittement et émet de nouvelles données si disponibles.

Pour faciliter l’implémentation, le protocole quatre phases ajoute une phase d’inva- lidation sur les données et sur l’acquittement pour retourner toujours dans un état de référence. Ainsi pour le protocole quatre phases, les phases suivantes sont observées :

— Phase 1 : Le signal d’acquittement généré par le récepteur est dans sont état initial, l’émetteur génère des données et le récepteur génère une transition sur le signal d’acquittement ;

— Phase 2 : l’émetteur détecte l’acquittement et invalide les données (retour à zéro) ; — Phase 3 : le récepteur détecte que les données sont passées dans un état invalide et

place le signal d’acquittement dans son état initial ;

— Phase 4 : l’émetteur détecte que l’acquittement est dans son état initial et est autorisé à émettre une nouvelle donnée si disponible.

Le protocole deux phases requière un matériel souvent plus important que le protocole quatre phases car il doit détecter des transitions pures et non des transitions entre un état connu et un état de données valides. Ainsi le protocole quatre phases est majoritairement utilisé dans la conception de circuits asynchrones et va être utilisé dans cette thèse.

• Codage des données

La détection des données au seins du protocole réside dans le codage des données elles- mêmes. Afin de détecter la valeur d’un bit, un seul fil de signal ne suffit pas sinon deux mêmes valeurs consécutives de ce bit ne seraient pas détectées. C’est pourquoi il existe deux types de solutions pour détecter l’arrivée d’une nouvelle donnée : la création d’un signal de requête associé aux données encodé en binaire normal (appelé codage de données groupées5ou l’utilisation d’un codage insensible aux délais bifilaire ou double-rail6par bit

de donnée. L’encodage par données groupées rajoute par contre une hypothèse temporelle [149]. Il existe deux types de codage insensibles aux délais, le codage à 3 états et le codage à 4 états comme présentés figure 6.3.

Dans le codage trois états, un fil encode la valeur ’0’ et l’autre fil encode la valeur ’1’. Lorsque les deux fils sont à zéro, cela encode l’état invalide. Cet encodage est par conséquent utilisé pour le protocole quatre phases. L’état 11 est interdit, ainsi chaque changement de valeur implique un passage par l’état invalide 00.

4. Retour à Zéro 5. Bundled Data 6. dual rail

Figure6.3 – Codage 3 états et 4 états double-rail ainsi que leur diagramme de transition

Le codage quatre états code la donnée avec un état pair et un état impair. Á chaque donnée émise, la parité est changée. Ce codage permet de ne pas repasser par l’état invalide, ce qui est parfaitement adapté au protocole deux phases.

Plusieurs bits peuvent être encodés dans un canal, c’est ce qui est appelé le codage

multi-rail m-of-n. Le codage le plus intéressant en terme de réduction de la consommation

est l’encodage 1-of-4 (en one-hot encoding) dont l’encodage est présenté ci-dessous car il lui suffit que deux transitions pour deux bits d’information contrairement à quatre transitions pour deux bits d’information en double-rail [40].

• 0000 = invalide • 0001 = ’00’ • 0010 = ’01’ • 0100 = ’10’ • 1000 = ’11’

Un canal asynchrone peut aussi transporter une information purement évènementielle encodée avec juste un fil de donnée et un fil d’acquittement. Ce type d’évènement a été présenté précédemment dans la section 5.5.5 figure 5.8 avec le signal Continue qui trans- porte juste un évènement pour permettre le calcul du nouveau PC par exemple. Les outils de Tiempo définissent ce genre de signal un SREVENT pour Single-Rail Event.

6.1.1.2 Caractéristiques des opérateurs asynchrones

Les opérateurs asynchrones étant indépendants les uns des autres et fonctionnant à leur vitesse maximale sans être cadencés par une horloge globale calée sur le chemin com- binatoire le plus long, ceux-ci ont une sémantique de synchronisation plus riche que les opérateurs synchrone. Ils sont caractérisés par quatre paramètres : leur latence, leurs temps de cycle, leur profondeur de pipeline et leur protocole de communication.

• Latence

Le temps de latence correspond à la chaine combinatoire la plus longue pour qu’une sortie soit l’image fonctionnelle d’une entrée comme présenté figure 6.4. Le temps de traversée peut être variable en fonction des données d’entrée et dépend de l’algorithme et de l’im- plémentation. La latence est indépendante du fait que l’opérateur soit combinatoire ou à mémoire. En asynchrone, un opérateur de mémorisation se comporte comme un opérateur combinatoire, la donnée ne fait que la traverser. C’est pourquoi la vitesse maximale d’un opérateur est mesurée à vide, lorsque toutes les ressources de mémorisation sont inoccu-

Méthode de conception asynchrone 89 pées. Comme montré figure 6.4, les chaines combinatoires peuvent être différentes suivant les données d’entrées, ce qui engendre des latences différentes. Ainsi, des latences mini- males, moyennes et maximales peuvent être déterminées pour un opérateur asynchrone.

Figure6.4 – Définition de la latence, temps de cycle, profondeur de pipeline d’un opérateur asyn- chrone

• Temps de cycle

Le temps de cycle correspond au temps minimum qui sépare l’acceptation de deux infor- mations en entrée de l’opérateur. Ainsi dans l’exemple de la figure 6.4, si sur le chemin qui sépare chaque chaine combinatoire, un opérateur de mémorisation est présent, alors le temps de cycle est égal au temps de traversé de la logique C1 et de l’élément de mé- morisation. En général cela correspond au temps pour échanger une donnée entre deux ressources de mémorisation successives et caractérise la bande passante de l’opérateur. Le temps de cycle vu de l’entrée de l’opérateur peut varier et est au minimum égal au temps de cycle de l’étage d’entrée et au maximum égal au temps cycle de l’étage le plus lent de l’opérateur. Le temps de cycle dépend de l’occupation des ressources interne, car s’il est utilisé de temps en temps, le temps de cycle est égal au temps de cycle de l’entrée et s’il est utilisé en continu, le temps de cycle est égal au temps de cycle le plus lent en interne.

• Profondeur de pipeline

La profondeur de pipeline d’un opérateur asynchrone caractérise le nombre maximal de données que l’opérateur peut mémoriser. Cela correspond à la différence maximale entre l’indice de la donnée présente en sortie et l’indice de la donnée présente à l’entrée lorsque toutes les ressources de mémorisation sont occupées. Dans la figure 6.4, si sur chaque che- min entre deux opérateurs combinatoires il y a un élément de mémorisation, alors la pro- fondeur de pipeline est de 4. Dans un opérateur asynchrone, contrairement au synchrone, le nombre de données présentes dans le pipeline n’est pas imposé et varie dynamiquement au cours de l’exécution.

• Protocole de communications

Les protocoles de communications caractérisent les interfaces des opérateurs asynchrones afin qu’ils puissent se synchroniser entre eux et échanger des données. Plusieurs protocoles peuvent être utilisés dans un même circuit. Il faut néanmoins qu’ils assurent la détection des données en entrée, la signalisation comme quoi la donnée a été consommée en entrée et qu’une information est disponible en sortie. Une telle implémentation de circuit est qualifiée de flot de données.