• Aucun résultat trouvé

Structure pour micropipelines linéaires

3. Modèle de circuit cible micropipeline

3.3 M ODELE ET STRUCTURES DE CIRCUIT CIBLE

3.3.1 Structure pour micropipelines linéaires

La figure 3.12 représente un « demi-buffer » agrémenté d’un bloc fonction « F ». Nous utilisons cet exemple pour discuter l’implémentation des structures linéaires selon le protocole de communication sélectionné.

3.3.1.1 Structure séquentielle

Le protocole séquentiel est utilisé pour implémenter des blocs fonctionnels logiques qui n’ont pas besoin de synchronisation type « poignée de main » entre l’entrée et la sortie. La communication entre l’entrée et la sortie est transparente.

La figure 3.13 montre l’implémentation en protocole séquentiel du circuit de la figure 3.12. Le bloc fonctionnel se charge du calcul de la sortie. Le signal de requête de la sortie est directement relié au signal de requête d’entrée via un élément de retard qui représente le délai nécessaire au calcul de la sortie S.

Le signal d’acquittement de l’entrée est directement relié au signal d’acquittement de la sortie.

Ce protocole est le plus séquentiel. La donnée sur le canal E est transmise de l’entrée vers la sortie, puis n’est acquittée que quand la sortie a été acquittée. Cette séquence est valable aussi bien pour la phase de calcul que pour la phase de remise à zéro. Par conséquent, le protocole séquentiel est le protocole le plus lent en temps de cycle puisque tout est séquentiel.

COMPONENT linéaire_F PORT (e : IN DR ; s : OUT DR) BEGIN PROCESS lineaire_F_proc PORT (e : IN DR ; s : OUT DR) VARIABLE x : DR; BEGIN [ e?x ; s!F(x ); LOOP]; END; END; E S

Fig. 3.12 : Schéma et Code CHP descriptif d’un circuit asynchrone linéaire

E_req S_ack S_req E ack F E S Delay_S

Fig. 3.13 : Micropipeline séquentiel d’une structure linéaire

3.3.1.2 Structure WCHB (« Weak Condition Half-Buffer »)

Le protocole WCHB (avec les protocoles PCHB et PCFB que l’on voit plus loin) est issu de solutions de ré-ordonnancement

des étapes d’une communication entre un canal de sortie et un canal d’entrée. Ces solutions reposent sur l’expansion des communications dans les canaux conformément à un protocole quatre phases [LINE95].

Dans le protocole WCHB, il y a synchronisation des phases montantes (mise à un) et descendantes (remise à zéro) entre les canaux d’entrée et de sortie. La figure 3.14 montre l’implémentation en protocole

WCHB du circuit 3.12. Notons que les signaux d’acquittement

E_ack et S_ack sont actifs au niveau bas. Au départ après le signal de reset, les signaux de requêtes E_req et S_req sont au niveau bas et les signaux d’acquittement E_ack et S_ack sont au niveau haut. Puis lors de l’arrivée de la donnée, E_req passe au niveau haut. Le signal à la sortie de la porte de Muller passe alors au niveau haut puis est retardé par un délai équivalent au temps nécessaire au calcul de la sortie S. Après cela et de façon concurrente, le signal d’acquittement d’entrée E_ack descend grâce à l’inverseur, le signal de requête de la sortie S_req monte après avoir été retardé d’un délai correspondant au passage des données au travers du latch L, et le signal de commande de latch déclenche le fonctionnement de ce dernier. Ensuite l’environnement côté sortie acquitte la donnée reçue en faisant descendre le signal S_ack, et l’environnement côté entrée réagit à la descente du signal E_ack en remettant à zéro le signal E_req. Cela provoque le retour à zéro du signal S_req (auquel l’environnement côté sortie réagit en faisant passer S_ack au niveau haut), et le retour à un du signal E_ack. Nous retrouvons ainsi l’état initial du circuit.

Selon [LINE98], puisque les canaux E et S ne peuvent contenir simultanément deux données distinctes, le circuit de la figure 3.12 (avec F fonction unité) s’appelle « demi-buffer » (ou Half Buffer). On remarque que le protocole WCHB assure la symétrie des signaux E_req et S_ack dans les phases montante et descendante de la sortie de ce demi-buffer. Cela permet d’avoir une implémentation régulière de la partie contrôle d’un circuit asynchrone.

3.3.1.3 Structure PCHB (« PreCharge Half-Buffer »)

La phase montante du protocole PCHB est identique à celle du protocole WCHB. Par contre, il y a désynchronisation au niveau des remises à ‘0’ des signaux de requête et d’acquittement, pour autoriser la communication au niveau de la sortie indépendam- -ment des entrées et ainsi gagner en vitesse dans le pipeline. En effet, il y a d’abord remise à zéro du canal de sortie, puis remise à zéro du canal d’entrée. En d’autres termes, il n’est plus obligatoire d’attendre la remise à zéro des requêtes d’entrée pour terminer les autres protocoles en sortie. De la sorte, le gain de vitesse devient significatif lorsque le nombre de canaux d’entrée est important.

Fig. 3.14 : Micropipeline WCHB d’une structure linéaire E_req S_ack S_req E_ack C Resetb Cmd_S F E S L Delay_S Delay_Latch S_ack E_req S_req E_ack Delay_S Delay_Latch C_R + - Resetb F E S L Cmd_S

Fig. 3.15 : Micropipeline PCHB d’une C

-

La figure 3.15 montre l’implémentation en protocole PCHB du demi-buffer de la figure 3.12. Au départ après le signal de reset, les signaux de requêtes E_req et S_req sont au niveau bas et les signaux d’acquittement E_ack et S_ack sont au niveau haut. Puis lors de l’arrivée de la donnée, E_req passe au niveau haut. Le signal à la sortie de la porte de Muller dissymétrique C_R passe alors au niveau haut puis est retardé par un délai équivalent au temps nécessaire au calcul de la sortie S. Après cela et de façon concurrente, le signal d’acquittement d’entrée E_ack descend grâce à la Muller dissymétrique inversée C, le signal de requête de la sortie S_req monte après avoir été retardé d’un délai correspondant au passage des données au travers du latch L, et le signal de commande de latch déclenche le fonctionnement de ce dernier. Ensuite l’environnement côté sortie acquitte la donnée reçue en faisant descendre le signal S_ack, ce qui a pour effet de faire passer la sortie S_req au niveau bas (auquel l’environnement côté sortie réagit en faisant passer S_ack au niveau haut). Enfin, l’environnement côté entrée réagit à la descente du signal E_ack en remettant à zéro le signal E_req. Cela provoque le retour à « 1 » du signal E_ack. Nous retrouvons de la sorte l’état initial du circuit.

3.3.1.4 Structure PCFB (« PreCharge Full-Buffer »)

La phase montante du protocole PCFB est identique à celle du protocole WCHB. Par contre dans la phase de remise à zéro, on découple totalement les canaux d’entrée et de sortie. Les deux communications sur les entrées et les sorties se font de façons totalement concurrentes. Ce découplage offre de meilleures performances au niveau vitesse mais l’implémentation de ce protocole devient plus coûteuse, car pour respecter les conditions de codage complet il faut insérer une variable d’état (En) afin de pouvoir distinguer dans quelle partie du protocole on se trouve.

La figure 3.16 montre l’implémentation en protocole PCFB du demi-buffer de la figure 3.12.

Au départ après le signal de reset, les signaux de requêtes

E_req et S_req sont au niveau bas, les signaux d’acquittement E_ack et S_ack ainsi que le signal en sortie de la porte de Muller C2 (En) sont au niveau haut. Puis lors de l’arrivée de la donnée, E_req passe au niveau haut. Le signal à la sortie de la porte de Muller dissymétrique C_R passe alors au niveau haut puis est retardé par un délai équivalent au temps nécessaire au calcul de la sortie S. Après cela et de façon concurrente, le signal d’acquittement d’entrée E_ack descend grâce à la Muller dissymétrique inversée C_S, le signal de requête de la sortie S_req monte après avoir été retardé d’un délai correspondant au passage des données au travers du latch L, le signal en sortie de la Muller C2 passe à « 0 », et le signal de commande de latch déclenche le fonctionnement de ce dernier. Ensuite l’environnement côté sortie acquitte la donnée reçue en faisant descendre le signal S_ack, ce qui a pour effet de faire passer la sortie S_req au niveau bas (auquel l’environnement côté sortie réagit en faisant passer S_ack au niveau haut). De façon concurrente à l’action de l’environnement en sortie, l’environnement côté entrée réagit à la descente du signal E_ack en remettant à zéro le signal E_req. Cela provoque le retour à « 1 » du signal E_ack et du signal en sortie de C2 (En). Nous retrouvons de la sorte l’état initial du circuit.

E_req S_req E_ack Delay_S Delay_Latch C2 En C_S + - Set Resetb + C_R Sk_ack En C1 F E S L

Fig. 3.16 : Micropipeline PCFB d’une structure linéaire