Structure d'un processeur: Unité de traitement Eduardo Sanchez EPFL Les processeurs • Un processeur est une machine réalisant un traitement d’information • Exemple: Réaliser la somme de 100 nombres 100 somme = xi i =1 • Deux choses sont nécessaires pour réaliser le processeur: • un algorithme • les ressources pour exécuter l’algorithme (éléments de stockage et de traitement de l’information) Eduardo Sanchez 2 • L’algorithme pourrait être: loop: somme = 0 for i=1 to 100 somme = somme + xi end loop Eduardo Sanchez 3 • Les ressources nécessaires pourraient être: Xi 0 CK • 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 4 • Un processeur peut toujours être décomposé en deux parties: • l’unité de contrôle (chargée du séquencement de l’algorithme) • 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 reset CK unité de contrôle unité de traitement signaux de status sorties de contrôle reset CK sorties de données • 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 5 Exemple • Concevoir un processeur capable de compter le nombre de 1 • présents dans un mot d’entrée 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 6 • L’unité de traitement a besoin de 4 éléments de stockage, un par • variable de l’algorithme (data, mask, ocount, temp) La structure genérale du processeur serait donc: inport start signaux de contrôle unité de contrôle CK reset unité de traitement data≠0 done outport Eduardo Sanchez 7 Unité de traitement • Pour stocker les 4 variables de l’algorithme, on utilise un dispositif avec 8 registres à double accès: 3 WA WEN reset 8 registres CK 3 RAA RAB A 3 B Deux des 8 registres peuvent être lus en même temps, en donnant leurs adresses (RAA et RAB). 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 8 • Pour les opérations sur les données nous utilisons une ALU et un shifter: 2 S 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 A M S B shifter ALU A A and B A B A or B A - 1 A + B A - B A + 1 S2 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 shifter shift left rotate left shift right rotate right NOP NOP NOP NOP Eduardo Sanchez 9 inport 1 IE WA WEN 3 reset CK RAA 8 registres 3 3 M S SH 0 A B A B RAB 2 shifter 3 0 OE comparateur outport data≠0 Eduardo Sanchez 10 • Dix-huit bits sont nécessaires pour contrôler cette unité de traitement: 17 16 IE sélection de l’entrée 0 résultat 1 inport adresse d’écriture 14 WA 13 12 WEN 10 RAA 9 7 6 RAB 4 M S 3 1 SH 0 OE output enable enable d’écriture adresse du registre A adresse du registre B opérations de l’ALU A ces 18 bits, il faut ajouter le signal done, actif lorsque le calcul est terminé 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 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