Les processeurs Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole Polytechnique Fédérale de Lausanne Les processeurs u Un processeur est une machine réalisant un traitement d’information u Exemple: Réaliser la somme de 100 nombres 100 somme = ∑ x i i =1 u Deux choses sont nécessaires pour réaliser le processeur: X un algorithme X les ressources pour exécuter l’algorithme (éléments de stockage et de traitement de l’information) Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne u L’algorithme pourrait être: loop: somme = 0 for i=1 to 100 somme = somme + xi end loop Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne u Les ressources nécessaires pourraient être: Xi 0 CK u Les signaux de contrôle des ressources (en rouge dans la figure) sont générés par l’unité chargée d’exécuter l’algorithme Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne u Un processeur peut toujours être décomposé en deux parties: X l’unité de contrôle (chargée de l’exécution de l’algorithme) X l’unité de traitement (ensemble d’éléments de stockage et de traitement de l’information) entrées de données entrées de contrôle signaux de contrôle CK unité unité de de contrôle contrôle unité unité de de traitement traitement signaux de status sorties de contrôle sorties de données u A chaque cycle d’horloge, l’unité de contrôle doit générer tous les bits qui contrôlent les ressources de l’unité de traitement. L’unité de contrôle est une machine séquentielle Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Exemple u Concevoir un processeur capable de compter le nombre de 1 présent dans un mot d’entrée u Un algorithme possible est: data ← inport ocount ← 0 mask ← 1 while data ≠ 0 repeat temp ← data and mask ocount ← ocount + temp data ← data >> 1 end while outport ← ocount Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne u L’unité de traitement a besoin de 4 éléments de stockage, un par variable de l’algorithme (data, mask, ocount, temp) u La structure genérale du processeur serait donc: inport start signaux de contrôle CK unité unité de de contrôle contrôle data≠0 done unité unité de de traitement traitement outport Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne CK Exemple: unité de traitement u Pour stocker les 4 variables de l’algorithme, on utilise un dispositif avec 8 registres à double accès: 3 WA WEN 8 8 registres registres CK 3 RAA RENA A B RAB RENB 3 Deux des 8 registres peuvent être lus en même temps, en donnant leurs adresses (RAA et RAB) et l’enable correspondant (RENA et RENB). On peut écrire sur le registre WA, en envoyant l’enable correspondant (WEN). Les registres utilisés sont R1 (data), R2 (mask), R3 (ocount), R4 (temp) et R0 pour stocker la constante 0 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne u Pour les opérations sur les données nous utilisons une ALU et un shifter: A B M S 2 3 M 0 0 0 0 1 1 1 1 S1 0 0 1 1 0 0 1 1 S0 0 1 0 1 0 1 0 1 ALU A A and B A ⊕ B A or B A - 1 A + B A - B A + 1 S shifter shifter S2 0 0 0 0 1 1 1 1 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne S1 0 0 1 1 0 0 1 1 S0 0 1 0 1 0 1 0 1 shifter shift left rotate left shift right rotate right NOP NOP NOP NOP u Une unité de traitement possible serait: inport 1 IE 0 3 WA WEN CK RAA RENA 8 8 registres registres 3 A B A B 3 RAB RENB M S SH 2 shifter shifter 3 0 OE comparateur comparateur outport Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne data≠0 u Vingt bits sont nécessaires pour contrôler cette unité de traitement: 19 18 IE sélection de l’entrée 0 ⇒ résultat 1 ⇒ inport adresse d’écriture 17 WA 16 15 WEN 14 13 RAA enable d’écriture adresse du registre A 12 11 RENA 10 9 RAB enable de lecture A 8 7 6 RENB 5 4 M S 2 1 0 SH OE output enable enable de lecture B adresse du registre B opérations de l’ALU A ces 20 bits, il faut ajouter le signal done, actif lorsque le calcul est terminé 3 M 0 0 0 0 1 1 1 1 S1 0 0 1 1 0 0 1 1 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne S0 0 1 0 1 0 1 0 1 ALU A A and B A ⊕ B A or B A - 1 A + B A - B A + 1 opérations du shifter SH2 0 0 0 0 1 1 1 1 SH1 0 0 1 1 0 0 1 1 SH0 0 1 0 1 0 1 0 1 shifter shift left rotate left shift right rotate right NOP NOP NOP NOP Exemple: unité de contrôle data≠0 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne outport ← ocount done ← 1 S7 S7 data=0 data ← data >> 1 temp ← data and mask S4 S4 S6 S6 mask ← 1 S3 S3 ocount ← ocount + temp ocount ← 0 S2 S2 S5 S5 data ← inport S1 S1 start=1 S0 S0 start=0 u L’unité de contrôle est une machine séquentielle, chargée de séquencer l’algorithme et de générer les signaux de contrôle. Son graphe des états découle directement de l’algorithme: u Une implémentation, sous forme de machine de Moore, de l’unité de contrôle serait: D2 Q2 y2 D1 Q1 y1 start data≠0 SLC unité de traitement D0 Q0 signaux de contrôle y0 20 SLC CK done Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne u Une table d’états possible est: start,data=0 00 01 11 S0 S1 S3 S2 S4 S5 S7 S6 000 001 011 010 100 101 111 110 y2y1y0 000 010 100 011 101 110 000 100 000 010 100 011 101 110 000 111 001 010 100 011 101 110 000 111 10 001 010 100 011 101 110 000 100 nop data ← inport mask ← 1 ocount ← 0 temp ← data and mask ocount ← ocount + temp outport ← ocount data ← data >> 1 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne SH2 SH1 SH0 OE done nop data ← inport mask ← 1 ocount ← 0 temp ← data and mask ocount ← ocount + temp outport ← ocount data ← data >> 1 S2 S1 S0 000 001 011 010 100 101 111 110 y2y1y0 WA2 WA1 WA0 WEN RAA2 RAA1 RAA0 RENA RAB2 RAB1 RAB0 RENB S0 S1 S3 S2 S4 S5 S7 S6 IE Le détail des signaux de sortie est: 0 1 0 0 0 0 0 0 ø 0 0 0 1 0 ø 0 ø ø 1 1 0 1 1 1 ø ø 1 1 1 1 1 0 ø 0 1 1 0 1 ø 0 ø 1 0 1 0 1 ø 1 0 1 1 1 1 1 0 1 ø ø 0 0 0 0 0 0 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne ø ø 0 0 0 1 1 0 ø ø 0 0 1 1 1 1 0 0 1 1 1 1 1 1 ø ø ø 0 0 1 0 0 ø ø ø 0 1 0 0 0 ø ø ø 0 0 0 0 0 0 0 0 1 1 1 1 1 ø ø 1 0 0 0 0 0 ø ø 1 1 1 1 1 1 ø ø ø ø ø ø ø 1 ø ø ø ø ø ø ø 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 Le calcul des variables d’état est: y2 start start 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 y0 y1 0 0 0 0 1 data=0 1 1 data=0 y2 + = y2 y1 + y2 y 0 + y2y1y 0 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne 1 y2 start start 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 y0 y1 1 1 1 1 0 data=0 1 1 data=0 y1+ = y1y 0 + y2y1y 0 + ( data = 0) y1y 0 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne 0 y2 start start 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y0 y1 1 1 1 1 0 data=0 1 1 0 data=0 y 0 + = y2y1y 0 + y2 y1y 0 + ( data = 0) y2 y 0 + ( start ) y2 y 0 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Le calcul des signaux de sortie est: IE = y2 y1y 0 WA2 = y1y 0 WA1 = y2y1 + y2 y 0 WA0 = y1y 0 + y1y 0 = y1 ⊕ y 0 WEN = y1y2 + y1y 0 + y2 y 0 RAA2 = 0 RAA1 = y2 y 0 RAA0 = y2 RENA = y2 + y1 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne RAB2 = y1y 0 RAB1 = y1y 0 RAB0 = 0 RENB = y2 + y1y 0 M = y1 + y 0 S1 = y2y 0 S0 = 1 SH 2 = y2 + y 0 + y1 SH1 = 1 SH 0 = 0 OE = y2 y1y 0 done = y2 y1y 0 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Variations sur l’unité de traitement u Pour augmenter la performance, il est courant de trouver des unités de traitement capables de réaliser plusieurs opérations en parallèle u Problèmes: X nombre élevé de bus X nombre élevé de ports pour les registres X parallélisme nécessaire dans l’application Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne u Exemple: entrée 1 entrée 1 registres registres bus 1 bus 2 bus 3 bus 4 shifter shifter multiplicateur multiplicateur bus résultat 1 diviseur diviseur bus résultat 1 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Variations sur l’unité de contrôle u La réalisation câblée d’une unité de contrôle utilise les méthodes classiques de synthèse d’une machine séquentielle. Cette méthodologie est donc très peu aisée à utiliser lorsque le nombre d’états et/ou de sorties est très élevé entrées de contrôle SLC SLC calcul calcul de de l’état l’état futur futur signaux de status bb aa ss cc uu ll ee ss CK SLC SLC calcul calcul des des sorties sorties sorties de contrôle Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne signaux de contrôle u Une première simplification vient du remplacement des systèmes logiques combinatoires (SLC) de la figure précédente par des mémoires u Ensuite, si l’on observe que la plupart des états se suivent en séquence, on peut encore simplifier l’unité de contrôle en remplaçant le registre d’états par un compteur. Pour les cas où l’état futur n’est pas l’état présent plus un, il faut prévoir un moyen de charger le compteur avec la valeur de cet état futur Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne mémoire mémoire état état futur futur nouvelle branche branche externe compteur compteur mémoire mémoire sorties sorties signaux de contrôle CK entrées de contrôle signaux de status Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne u Une nouvelle simplification peut intervenir si l’algorithme utilise plusieurs fois une même séquence, à des endroits différents: ces séquences peuvent être remplacées par des sous-routines. Pour cela, il est nécessaire d’ajouter une pile (stack), capable de stocker l’état de retour à la fin de la sous-routine u Ces derniers modèles d’unités de contrôle s’appellent unités de contrôle microprogrammées Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne La microprogrammation u L’unité de traitement d’un processeur réalise toujours des opérations de type transfert de registres: RRjj RRkk ••• ••• opérateurs opérateurs RRjj Ri ← ƒ(Ri,Rj,...,Rn) Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne RRnn u Une micro-opération est une opération exécutée en un cycle d’horloge u Un micro-ordre est le signal de contrôle d’une micro-opération u Une micro-instruction est l’ensemble de micro-opérations exécutées dans le même cycle d’horloge u Un processeur est microprogrammée si les informations générées par son unité de contrôle (les micro-ordres notamment) sont stockées dans une mémoire: la mémoire de microprogramme ou micromémoire. Chaque mot de la micromémoire contient une micro-instruction u Un microprogramme est une suite ordonnée de micro-instructions Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne u Une unité de contrôle microprogrammée est donc composée de deux parties: X la micromémoire, chargée de stocker les micro-instructions et de générer donc à chaque cycle d’horloge les micro-ordres contrôlant les micro-opérations du processeur X un séquenceur, chargée de générer à chaque cycle d’horloge l’adresse de la micro-instruction à chercher dans la micromémoire CK signaux de contrôle séquenceur séquenceur signaux de status micromémoire micromémoire micro-ordres unité de de traitement traitement unité Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Exemple (version microprogrammée) CK start data≠0 séquenceur séquenceur 0 1 2 3 4 5 6 7 if start then 1 continue continue continue continue continue if data≠0 then 4 jump 0 nop data ← inport ocount ← 0 mask ← 1 temp ← data and mask ocount ← ocount + temp data ← data >> 1 outport ← ocount, done ← 1 micro-ordres unité de de traitement traitement unité Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne u Le séquenceur serait: séquenceur CK start SLC SLC data≠0 unité de de traitement traitement unité Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne micro-ordres variable à tester adresse de saut registre +1 type de séquence micromémoire