La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Circuite numerice şi microcalculatoare II

Présentations similaires


Présentation au sujet: "Circuite numerice şi microcalculatoare II"— Transcription de la présentation:

1 Circuite numerice şi microcalculatoare II
Circuite numerice şi microcalculatoare II ONIGA ŞTEFAN North University of Baia Mare Curs anul V Electromecanică

2 Arhitectura sistemelor cu microprocesoare
ONIGA ŞTEFAN North University of Baia Mare Curs anul II Informatică Tehnică

3 Obiectivele cursului de ASM/CNM
Obiectivele cursului de ASM/CNM Înţelegerea structurii unui sistem cu microprocesor Înţelegerea structurii interne a unui microprocesor din familia X86 Înţelegerea structurii interne a unui microcontroler din familia 8051 Elemente de limbaj de asamblare in cadrul celor 2x14 ore de lucrări de laborator Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

4 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Bibliografie Thomas L. Floyd, Digital Fundamentals - ediţia 7, Prentice Hall PTR, 2000. John F. Wakerly, Digital Design; Principles & Practices, Prentice Hall PTR, 1998. M. Morris Mano, Charles R. Kime, Logic and Computer Design Fundamentals - ediţia 2, Prentice Hall PTR, 1997. Edward Karalis, Digital Design principles and Computer Arhitecture, Prentice Hall PTR, 1999. Sztojanov, I. ş.a. - De la poarta TTL la microprocesor, Editura Tehnică, Bucureşti, 1987. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

5 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
1| Istoric Dans ce premier chapitre nous allons présenter les différentes générations d'ordinateurs. Les diverses technologies permettront de classer les ordinateurs par générations en partant de la préhistoire pour arriver aux ordinateurs actuels. Ceci permettra de voir que les concepts qui sont utilisés actuellement ne sont pas des trouvailles récentes. Nous ébaucherons un microprocesseur actuel, puis nous verrons quels sont les défis pour les architectes des futures générations d'ordinateurs. Un historique plus complet est disponible à l'adresse suivante ; Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

6 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Preistoria 1642. B. Pascal realizează o maşină de calculat (+,-). La notion d'itérations et d'algorithme n'est pas nouvelle. L'algèbre de Boole va permettre de manipuler des variables et des expressions à deux états (vrai ou faux) et de faire des calculs sur ces valeurs. Cette logique est à la base des ordinateurs actuels. Le composant de la première génération d'ordinateurs apparaît en C'est le tube à vide (interrupteur électrique commandé par un signal électrique) des anciennes TV. Les travaux formels sur la décidabilité des fonctions permettent à Alan Turing de mettre au point la première architecture : la machine de Turing. Shannon à partir de là, définit la quantité d'informations élémentaires (une valeur vraie ou fausse) et les conditions d'association de ces valeurs. Les calculateurs électro-mécaniques apparaissent, ils utilisent des éléments nommés relais (interrupteur mécanique commandé par un signal électrique). Ces machines ont une tâche bien définie (non modifiable, toujours la même), sont lentes et lourdes. 1694. von Leibniz construieşte o maşină de +,- şi x,: 1823. Ch.Babbage proiectează primul calculator cu execuţie automata a programului. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

7 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Prima generaţie 1904 : John Fleming inventează tubul cu vid 1945 : John Von Neumann defineşte arhitectura cunoscută sub numele de Von Neumann utilizată şi în zilele noastre. Maşini electromecanice de calculat, bazate pe relee electromagnetice (Mark I), cu program cablat (fig. 1). 1946 : ENIAC 30 Tonnes / 72 m2/140 K watts/ tuburi, 1500 relee. 350 x /s /s. Programare prin fire (fig. 2). La notion d'itérations et d'algorithme n'est pas nouvelle. L'algèbre de Boole va permettre de manipuler des variables et des expressions à deux états (vrai ou faux) et de faire des calculs sur ces valeurs. Cette logique est à la base des ordinateurs actuels. Le composant de la première génération d'ordinateurs apparaît en C'est le tube à vide (interrupteur électrique commandé par un signal électrique) des anciennes TV. Les travaux formels sur la décidabilité des fonctions permettent à Alan Turing de mettre au point la première architecture : la machine de Turing. Shannon à partir de là, définit la quantité d'informations élémentaires (une valeur vraie ou fausse) et les conditions d'association de ces valeurs. Les calculateurs électro-mécaniques apparaissent, ils utilisent des éléments nommés relais (interrupteur mécanique commandé par un signal électrique). Ces machines ont une tâche bien définie (non modifiable, toujours la même), sont lentes et lourdes. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

8 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
A doua generaţie 1947 : Inventarea tranzistorului, în anul 1947, de către John Bardeen, Walter Brattain şi William Shockley în 1948 la Bell Labs. 1965 : Mini calculatorul PDP 8 1MHz, 790 W, 1m2 Memoire de date de 4096. La guerre nécessitant d'importants besoins de calcul (déchiffrage de message, calcul de trajectoires d'obus), une équipe américaine se met au travail, et définit la machine universelle basée sur l'architecture de Von Neumann. On n'a pas trouvé mieux depuis … La première génération d'ordinateurs basée sur des éléments électriques (tubes à vide appelés aussi lampes) se nomme ENIAC (Electrical Numerical Integrator and Applications Calculator). Elle servait uniquement à faire des calculs numériques. Les chiffres sont impressionnants 30 tonnes (un camion) , 140 Kilo Watts (!) pour 5000 additions par seconde. La programmation était très complexe. Elle se faisait par des fils électriques. Il a fallu attendre 40 ans entre l'invention de la technologie (tubes à vide) et l'application. Cette latence va diminuer, mais sera toujours présente dans la suite de l'histoire. Le transistor va révolutionner l'ordinateur. C'est aussi un interrupteur électronique commandé électroniquement, mais beaucoup plus petit (10 x), et qui consomme beaucoup moins d'électricité (10 x ). Les ordinateurs à tubes évoluent, la programmation va se faire alors par télétype (clavier + imprimante). Apparaissent deux notions "Le langage assembleur" et le "compilateur" qui vont simplifier la programmation de l'ordinateur. La latence diminue, il ne faut plus que 10 ans entre la technologie et l'application. Une constatation s'impose : la vitesse de calcul est proportionnelle à la consommation ( 83000/5000 = 15 et la consommation /10). Toujours d'actualité. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

9 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
A treia generaţie 1961 Fairchild Semiconducteur, circuite integrate 1965 : Legea lui Moore . Complexitatea circuitelor x 2 / 1,5 ani 1971 : Intel a lansat primul microprocesor i4004 (60000 instructiuni /s , frecvenţa 108 KHz, 2300 tranzistoare. 1978 : Intel a lansat microprocesorul instrucţiuni /s 1981 : IBM PC Le système d'exploitation est une interface plus conviviale entre l'homme et la machine. On en avait là seulement une ébauche. Les langages de programmation deviennent de plus en plus simples (langages de haut niveau). Le lisp est encore utilisé de nos jours, le fortran (FORmula TRANslator) beaucoup moins. Le circuit intégré (CI) est un ensemble de transistors connectés sur un même substrat. Les transistors devenant plus petits, ils consomment donc moins d'électricité. Moore affirme que la complexité des circuits est x2 tous les 2 ans, c'est-à-dire que l'on a la technologie pour mettre deux fois plus de transistors dans le même circuit. Il faut attendre 10 ans avant de voir le premier ordinateur entièrement transistorisé. Les systèmes d'exploitations deviennent multitâche, multi-utilisateur (plusieurs programmes pour plusieurs utilisateurs fonctionnent simultanément, c'est la multiprogrammation). Les ordinateurs sont alors assez puissants pour réagir de façon adéquate sur les processus de production (temps réels). Ils sont introduits dans le pilotage de processus industriels. En l'évolution technologique majeure est le microprocesseur lancé par la société Intel. Il se nommait le Intel, fabricant unique, introduit aussi des mémoires sous forme de CI. Tout était prêt pour la nouvelle génération de machine appelée micro-ordinateur. Les circuits intégrés sont nommés alors LSI et VLSI (large, very large scale integration : intégration à grande et très grande échelle) Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

10 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
A patra generaţie 1985 : Intel 80386, 1 milion de instrucţiuni/s, transistoare 1986 : Primele maşini paralele 1990 : Calculatoare multimedia 2000 : Intel a lansat Pentium IV La quatrième génération d'ordinateurs, basée sur des circuits VLSI, ne laisse pas un temps de latence aussi long que la précédente génération. Il faut attendre 1978 pour qu'Intel créer son microprocesseur vedette, le 8086 et IBM le système d'exploitation MS-DOS (Bill Gates). Il suffit de trois ans pour que le premier ordinateur personnel (Personnal Computer) soit développé. Intel a alors un concurrent nommé Motorola qui développe les microprocesseurs des Apple (famille 68x) La suite n'est qu'innovation technologique; microprocesseur de plus en plus complexe (donc plus rapide). Le développement des réseaux de communications et des machines virtuelles (un programme unique peut fonctionner sur n'importe quel type de matériel) en sera la conséquence. Aujourd'hui on intègre 10 millions de transistors dans un circuit, en 2010 il y en aura un 100 millions qui iront dix fois plus vite. Un défi pour les constructeurs de matériel, comment utiliser au mieux ces nouveaux transistors disponibles pour améliorer la vitesse de calcul des ordinateurs ? Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

11 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Legea lui MOORE An 100 Millioane Transistoare 10 Millioane 1 Million 10 000 1000 4004 8086 80286 80386 80486 Pentium Pentium II Pentium III x 2 la 18 luni 1000 MIPS 100 MIPS 10 MIPS 1 MIPS 0,1 MIPS 0,01 MIPS x 2 la 2 ani La loi de Moore (nom d'un des co-fondateurs de la société Intel) a émis l'hypothèse que les capacités technologiques permettraient de multiplier par 2 tous les deux ans environ le nombre de transistors intégrés sur les circuits Un ensemble de corollaires est venu s'ajouter à cette loi: - La capacité mémoire disponible double tous les 3 ou 4 ans - La loi de Rock précise que les investissements pour produire des circuits de plus en plus compacts seront multipliés par deux tous les 4 ans. - La Loi de Machrone prévoit qu'un micro-ordinateur haut de gamme coûtera toujours environ F - La puissance de calcul suivra la capacité d'intégration, c'est-à-dire doublera tous les deux ans. En effet, plus il y a de transistors sur un circuit, plus ils sont petits, moins ils consomment d'énergie. On peut donc les faire fonctionner plus vite. La vitesse de calcul (ou la puissance de calcul) s'exprime en millions d'instructions par seconde (notée souvent MIPS). Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

12 2| Arhitectura microprocesoarelor
2| Arhitectura microprocesoarelor Le but de ce chapitre est de comprendre le fonctionnement d'une machine basique et d'apprendre à la programmer. Nous étudierons deux types de machine : la plus ancienne, celle de Turing, puis celle de Von Neumann. Nous étudierons leur description physique, puis la façon de les programmer. L'architecture de Von Neumann est celle utilisée dans le microprocesseur actuel. Nous terminerons le chapitre par une présentation de l'évolution de la machine de Von Neumann, qui se nomme architecture de Aiken-Harvard. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

13 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
John Von Neumann Matematician conceptul de program înregistrat Arhitectura Von Neumann L'architecture de Von Neumann est une révolution. Le concept de programme enregistré apparaît, c'est-à-dire que c'est une machine universelle, apte à traiter tous les problèmes qui peuvent être résolus par un algorithme. Il n'y a pas à recréer une nouvelle machine pour traiter un nouveau problème. Malheureusement, dans cette architecture un grand nombre d'informations passe au même endroit, ce qui crée de nos jours un "bouchon". C'est le goulot d'étranglement de Von Neumann que les architectes ont beaucoup de difficultées à supprimer. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

14 Arhitectura microprocesoarelor Arhitectura Von Neumann
Arhitectura microprocesoarelor Arhitectura Von Neumann Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

15 Arhitectura microprocesoarelor Arhitectura Harward
Arhitectura microprocesoarelor Arhitectura Harward Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

16 Arhitectura microprocesoarelor Arhitectura Super Harward
Arhitectura microprocesoarelor Arhitectura Super Harward Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

17 Modelul magistralelor de sistem
Modelul magistralelor de sistem Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

18 Nivele de maşini virtuale
Nivele de maşini virtuale Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

19 Evolutia microprocesoarelor din familia Intel
Evolutia microprocesoarelor din familia Intel Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

20 Semnalele unui microprocesor
Semnalele unui microprocesor semnale de control semnale de intrerupere semnale pentru arbitrarea magistralei semnale de stare semnale diverse. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

21 Structura tipica a unui sistem cu microprocesor
Structura tipica a unui sistem cu microprocesor Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

22 Configuratia pinilor pentru P 8088/8086
Configuratia pinilor pentru P 8088/8086 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

23 Structura tipica a unui calculator
Structura tipica a unui calculator Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

24 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Placa de bază Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

25 3| Principiul de funcţionare
3| Principiul de funcţionare Le but de ce chapitre est de comprendre le fonctionnement d'une machine basique et d'apprendre à la programmer. Nous étudierons deux types de machine : la plus ancienne, celle de Turing, puis celle de Von Neumann. Nous étudierons leur description physique, puis la façon de les programmer. L'architecture de Von Neumann est celle utilisée dans le microprocesseur actuel. Nous terminerons le chapitre par une présentation de l'évolution de la machine de Von Neumann, qui se nomme architecture de Aiken-Harvard. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

26 Schema funcţională Acumulator Instrucţiuni MEMORIE UAL Date
Acumulator Instrucţiuni MEMORIE Date Magistrală ctrl. UAL Magistrală date Indicatori de condiţii Magistrală adrese Numărător de instrucţiuni Dans la machine de Von Neumann, on trouve deux éléments : le premier est la mémoire qui contient les instructions du programme et les données (que l'on appelle aussi les opérandes), et le deuxième qui est l'unité de traitement (la partie intelligente). On voit qu'entre les deux blocs va circuler un grand nombre d'informations : les données et les instructions. C'est le goulot d'étranglement qui limite les performances de la machine. Dans l'unité de traitement, on distingue plusieurs parties - UAL : (Unité arithmétique et logique) : c'est la partie qui sait compter (+,-), qui sait traiter les données booléennes. - L'unité de commande : c'est le maître, la partie qui séquence toutes les opérations de la machine. - L'accumulateur (A) : c'est une mémoire locale à la machine qui contient une des données à traiter et le résultat. Elle est en liaison forte avec l'UAL - Le compteur programme (CP) : chaque information dans la mémoire peut être retrouvée avec son adresse (idem adresse postale). Ici c'est un nombre positif. Le compteur programme permet de savoir où se trouve la prochaine instruction que programme doit traiter. Registre de Instrucţiuni 1 secundă  n ciclii Unitate de Comandă F= n Hertz Tc = 1/n secunde Ceas timp Tc Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

27 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Definiţii Acumulator = conţine un operand şi rezultatul Numărător de instrucţiuni (PC) = adresa instrucţiunii următoare Registre de instrucţiuni = codul operaţiei sau operandul Magistrală = ansamblu de conexiuni: adrese, date, control Indicator de condiţii= starea acumulatorului după ultima operaţie efectuată de UAL Ceas = frecvenţa sistemului, sincronizare Unitate de control = comandă sistemul Memorie = conţine instrucţiunile şi datele - Le registre instruction (RI) (un registre est une mémoire interne à l'unité de traitement) contient l'instruction qui est en cours de traitement. Chaque instruction est représentée dans la mémoire de l'ordinateur et dans ce registre par un nombre. C'est le code opération de l'instruction. - Le registre des indicateurs (Flags) permet de connaître des informations sur le dernier calcul effectué par l'U.A.L. Le résultat est-il égal a 0?, est-il positif?, négatif? … Les structures de sélection et d'itération utiliseront ces informations. - L'horloge permet de séquencer toutes les opérations du système. Elle définit la vitesse d'exécution de la machine (donc sa puissance) Les deux éléments sont connectés par un ensemble de liaisons électriques appelées Bus. Trois bus relient les deux éléments: Le bus de données, bidirectionnel, permet de faire transiter les instructions et les données lues ou écrites en mémoire. Le bus d'adresse, unidirectionnel, permet d'envoyer à la mémoire la position de l'instruction ou de la donnée à traiter. Seule l'unité de traitement est apte à émettre une adresse. Les adresses vont donc de l'unité de traitement vers la mémoire. Le bus de contrôle, bidirectionnel, permet un dialogue cohérent entre les deux éléments. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

28 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Instrucţiuni de bază Încărcare A  Constantă Adunare A A+ Constantă Citire din memorie (Load) A  Conţinutul memoriei Scriere în memorie (Store) Conţinutul memoriei  A Salt necondiţionat Salt condiţionat MOV A, Cst ADD A, Cst MOV A, [Adr] MOV [Adr],A J Adresse J> Adresse J<= Adresse Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

29 Instrucţiuni suplimentare
Instrucţiuni suplimentare Acumulator auxiliar AA MOV AA, Cst ADD A, AA ADD AA,A MOV AA,[Adr] MOV [Adr],AA Registre index IX MOV A,[IX] MOV [IX],A MOV A,[IX] MOV [IX],A Instrucţiuni logice ŞI SAU NU AND A,AA AND A,CONST OR A,AA OR A,CONST NON A În memoria de instrucţiuni, instructiunile sunt codificate prin numere întregi pozitive: codul maşină Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

30 Execuţia unei instrucţiuni
Sunt necesare 3 faze: Citirea instrucţiunii (EI): extragerea codului operaţiei instrucţiunii următoarea (faza 1) Decodificarea instrucţiunii (DI): Descompunerea în microoperaţiuni şi aducerea operanzilor constante (faza 2) Aducerea operanzilor din memorie (faza 2’) Execuţia instrucţiunilor (EX): Execuţie în UAL (faza 3) Scrierea rezultatului în memorie (faza 3’) Modificarea PC în caz de salt (faza 3’’) Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

31 Faza 1. Citirea instrucţiunii
Acumulator Instrucţiuni MEMORIE Date Magistrală ctrl. 2 UAL Cod op. Magistrală date 1 Indicatori de condiţii Magistrală adrese Numărător de instrucţiuni Le traitement d'une instruction peut être décomposé en trois phases. Phase 1: Recherche de l'instruction suivante du programme. 1. Le compteur programme contient l'adresse de l'instruction suivante du programme. Cette valeur est envoyée sur le bus d'adresse en direction de la mémoire 2. La mémoire met sur le bus de données l'instruction contenue dans la mémoire demandée. 3. L'instruction est stockée dans le registre instruction du processeur. Remarque : Le compteur de programme est automatiquement augmenté d'une position immédiatement après la lecture de l'instruction. Registre de Instrucţiuni Unitate de Comandă 3 Ceas Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

32 Faza 2. Decodificare - constante
Acumulator Instrucţiuni MEMORIE Date Magistrală ctrl. UAL Cod op. Magistrală date Operanzi Indicatori de condiţii 2 1 Magistrală adrese Numărător de instrucţiuni Phase 2 . Décodage et recherche de l'opérande de l'instruction. 1. L'unité de commande transforme l'instruction en une suite de commandes élémentaires nécessaires au traitement de l'instruction. Pour exécuter une instruction, le système à besoin de deux opérandes. La première est dans l'accumulateur, la deuxième dans la mémoire. L'unité de commande met donc sur le bus l'adresse de la deuxième opérande. 2. La mémoire place sur le bus la valeur de la deuxième opérande 3. La deuxième opérande est stockée dans le registre instruction. Registre de Instrucţiuni Unitate de Comandă 3 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

33 Faza 2’. Decodificare - date
Acumulator Instrucţiuni MEMORIE Date Magistrală ctrl. UAL Cod op. Magistrală date Indicatori de condiţii 2 Magistrală adrese Numărător de instrucţiuni Operanzi Registre de Instrucţiuni 3 Unitate de Comandă 1 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

34 Faza 3. Execuţia 3 Acumulator Instrucţiuni MEMORIE UAL Cod op. Date 2
3 Acumulator Instrucţiuni MEMORIE Date Magistrală ctrl. UAL Cod op. 2 Magistrală date Indicatori de condiţii Magistrală adrese Numărător de instrucţiuni Phase 3 : Exécution de l'instruction. L'UAL effectue une calcul avec les opérandes qui se trouvent dans l'accumulateur et dans le registre instruction. Le résultat se trouve dans l'accumulateur. Ensuite on recommence à la phase numéro 1 pour l'instruction suivante du programme. En fait, l'unité de traitement n'est jamais arrêtée, elle exécute toujours un programme, que ce soit l'application ou un programme du système d'exploitation. Operanzi Registre de Instrucţiuni 1 Unitate de Comandă Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

35 Faza 3. Execuţia - Scriere
2 Acumulator Instrucţiuni MEMORIE Date Magistrală ctrl. UAL Cod op. Magistrală date Indicatori de condiţii 3 Magistrală adrese Numărător de instrucţiuni Operanzi Registre de Instrucţiuni 1 Unitate de Comandă Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

36 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Exemplu de program A  Conţinutul memoriei 45 Adresa memoriei Conţinutul memoriei <- A 46 Adresa memoriei A  A + valoarea constantei 61 Valoarea Constantei Exemplu [500]  [500] + 2 Memoria de instrucţiuni va conţine deci: A  Conţinutul memoriei 500 A  A+2 103 2 Conţinutul memoriei 500  A Dans l'exemple précédent, les informations manipulées par le programme étaient des constantes (4 et 3). Pour être efficace, la machine doit pouvoir traiter des informations variables. Celles ci seront codées dans la mémoire de donnée de la machine de Von Neumann. Supposons que la case mémoire numéro 5000 contienne une variable du programme (en pascal var x:integer). Si l'on veut ajouter la constante 2 à la valeur de la variable, il faut effectuer trois opérations : 1. Il faut transférer le contenu de la variable dans l'accumulateur. La valeur suivant le code opération (45), sera l'adresse de la mémoire (cette adresse est aussi appelée un pointeur) et non pas la valeur elle même 2. Il faut ajouter le constante 2 qui sera codée à la suite du code opération (61) 3. Il faut ranger le résultat du calcul qui est dans l'accumulateur en mémoire 5000. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

37 Instrucţiunea 1 : EI Faza 1
Acumulator UAL Conţinut Adrese 2 103 Adrese 100 Unitate Comandă RI ? CP 100 Indicator 1 2 3 Date 45 Citire 4 Exécution de la première instruction Lecture Instruction Première Partie Préalablement le CP à été initialisé à 100 (adresse de la première instruciton du programme. La machine place la valeur 100 sur le bus d'adresse. La mémoire adressée contient la première instruction du programme. La machine dit que la mémoire 100 doit être lue. La mémoire place sur le bus de donnée la valeur 45 qui correspondant au code opération de la première instruction. 1 2 3 4 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

38 Instrucţiunea 1 : EI Faza 2
5 Conţinut Adrese 2 103 Acumulator Date Gata UAL Date 45 Indicator r 6 7 Adrese 100 Exécution de la première instruction Lecture Instruction deuxième Partie La mémoire indique à la machine de Von Neumann que la donnée est prête sur le bus de donnée. La donnée est transférée dans le RI. Il contient donc maintenant le code opération de la première instruction du programme. Pour terminer le compteur de programme CP est mis à jour. Il pointe maintenant la deuxième information du programme. CP 101 RI 45 5 Unitate Comandă 6 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare 7

39 Instrucţiunea 1 : DI Faza 1
Conţinut Adrese 2 103 Acumulator UAL 10 date 500 Indicator 9 11 Adrese 101 Exécution de la première instruction Décodage de l'instruction (recherche de l'opérande ou de l'adresse de l'opérande) L'instruction est envoyée à l'unité de commande qui va la décomposée en instructions simples (recherche de l'information puis exécution) La donnée de l'instruction (aussi appelée opérande) se trouve dans la mémoire dont l'adresse se trouve dans la case mémoire suivante. IL faut donc envoyer la valeur de CP sur le bus d'adresse La donnée contenue dans la mémoire 101 est alors envoyée sur le bus (même protocole de transfert) puis rangée dans le registre instruction RI CP est mis à jour. La prochaine instruction est en 102 CP 101 RI 500 8 8 Unitate Comandă 9 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare 10 11

40 Instrucţiunea 1 : DI Faza 2
Conţinut Adrese 2 103 Acumulator UAL 13 date 20 Indicator 12 Adrese 500 Exécution de la première instruction Décodage de l'instruction (recherche de l'opérande mémoire) Dans ce cas 500 n'est pas l'opérande mais c'est l'adresse de l'opérande (pointeur). Il faut donc récupérer la donnée qui est dans la mémoire 500. Pour cela la machine envoie 500 sur le bus d'adresse Et la donnée 20 est rangée dans le registre RI CP 102 RI 20 12 Unitate Comandă 13 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

41 Instrucţiunea 1 : EX Acumulator 20 Conţinut Adrese 45 100 Citire
Conţinut Adrese 2 103 Acumulator 20 Citire 15 16 UAL date 500 Indicator 14 Adrese 500 Exécution de la première instruction Exécution de l'instruction Le registre RI qui contient la valeur de l'opérande est envoyé sur une entrée de l'UAL La valeur 0 est envoyée sur la deuxième entrée Et le résultat est rangé dans l'accumulateur Finalement, il a fallu trois accès mémoire (lecture code opération, lecture adresse opérande et lecture opérande) pour exécuter cette instruction. CP 102 RI 20 15 Unitate Comandă 14 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare 16

42 Instrucţiunea 2 : EI Acumulator 20 Conţinut Adrese 45 100 Comandă
Conţinut Adrese 2 103 Acumulator 20 Comandă UAL Date 61 Indicator 3 Adrese 102 Exécution de la deuxième instruction - Lecture Instruction Adresse de la prochaine instruction 102 RI contient le code opération soit 61 Mise a jour du CP à 103 CP 102 RI 61 2 1 Unitate Comandă 1 2 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare 3

43 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Instrucţiunea 2 : DI Conţinut Adrese 2 103 Acumulator 20 Citire UAL 6 date 2 Indicator 7 Adrese 103 Exécution de la deuxième instruction Décodage de l'instruction (recherche de l'opérande ou de l'adresse de l'opérande) Décodage de l'instruction Adresse de l'opérande 103 RI contient ici directement l'opérande soit 2 Mise à jour du CP à 104 CP 103 5 RI 2 4 Unitate Comandă 4 5 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare 6 7

44 Instrucţiunea 2 : EX Acumulator 22 Conţinut Adrese 45 100 500 101
Conţinut Adrese 2 103 Acumulator 22 10 UAL 9 Indicator 8 Exécution de la deuxième instruction Exécution de l'instruction Une entrée de l'UAL contient 2 L'autre la valeur de l'accumulateur Le résultat de l'addition est rangé dans l'accumulateur L'instruction avec une opérande constante nécessite uniquement deux accès mémoire (lecture instruction, lecture opérande). CP 104 RI 2 Unitate Comandă 8 9 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare 10

45 Instrucţiunea 3 : EI Acumulator 22 Conţinut Adrese 45 100 Comandă
Conţinut Adrese 2 103 Acumulator 22 Comandă UAL 2 Date 46 Indicator 3 Adrese 104 CP 104 Exécution de la troisième instruction - Lecture Instruction Adresse de la prochaine instruction 104 RI contient le code opération soit 46 Mise a jour du CP à 105 RI 46 1 Unitate Comandă 1 2 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare 3

46 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Instrucţiunea 3 : DI Conţinut Adrese 2 103 Acumulator 22 Citire UAL 6 date 500 Indicator 7 Adrese 105 Exécution de la troisième instruction Décodage de l'instruction (recherche de l'opérande ou de l'adresse de l'opérande) Décodage de l'instruction Adresse de la mémoire contenant l'opérande : 105 RI contient ici l'adresse de l'opérande soit 500 Mise à jour du CP à 106 CP 105 5 RI 500 Unitate Comandă 4 4 5 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare 6 7

47 Instrucţiunea 3 : EX Acumulator 22 Conţinut Adrese 45 100 Scriere
Conţinut Adrese 2 103 Acumulator 22 Scriere UAL 9 date 22 Indicator Adrese 500 CP 106 Exécution de la troisième instruction Exécution de l'instruction Adresse de l'opérande résultat sur le bus de donnée 500 Valeur du résultat sur le bus de donnée L'instruction avec une opérande mémoire en écriture necessite trois accès mémoire (lecture instruction, lecture adresse de l'opérande, et écriture en mémoire du résultat). En conclusions le temps d'exécution d'une instruction n'est pas fixe. Il dépend de la nature de l'instruction. RI 500 8 Unitate Comandă 8 9 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

48 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
HARVARD Memorie date instrucţiuni Unitate Aritmetică şi logică de control Adrese Date Instrucţiuni Comandă Indicator Ceas (Mhz) Une extension mise en œuvre dans les années 1990, avait été conceptualisée en Il s'agit de séparer les mémoires de données et d'instructions pour éviter les bouchons dans le goulot d'étranglement de Von Neumann. Ainsi il y a réduction du trafic sur les bus de données des deux mémoires. Cette technique a été utilisée dans les dernières années sous la forme de deux caches mémoires. Nous y reviendrons dans le chapitre expliquant ce concept. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

49 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Sistem complet Memorie Microprocesor Intrări / ieşiri Magistrală de adrese, date şi control Cette machine ne servirait à rien si elle était coupée du monde. Les périphériques permettent à l'homme de dialoguer avec la machine. Ces périphériques sont connectés sur un bloc d'entrée/sortie permettant d'isoler l'ordinateur de l'extérieur. Il évite d'endommager l'ordinateur en cas de problème sur un périphérique. Il est connecté via les bus à la mémoire et à l'unité de traitement, appelée aussi microprocesseur. Les périphériques d'entrées Le clavier La souris Les périphériques de sortie L'écran L'imprimante Les hauts-parleurs Les périphériques de sauvegarde Les disques disquettes , CD Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

50 Evoluţia familiei x86 Data F (Mhz) Tranzistoare fără cache Registre
Evoluţia familiei x86 Data F (Mhz) Tranzistoare fără cache Registre Bus Adrese Cache Nume 1978 8 29 k 16 1 MB 8086 80 µ 1982 12 134 k 16 MB i286 1989 25 1.2 M 32 GP 80 FPU 32 4 GB L1 8K i486 2 µ 1993 60 3.2 M 64 L1 16K Pentium 0.6µ 1997 266 7 M 32 GP 80 FPU 64 MMX 64 GB L1 32K L2 256 K P II 1999 500 15 M L1 32K L2 512 K P III 2000 1500 42 M 128 L1 8K L2 256 K 12 K µop P IV 0.18µ Pipe line 5 6 10 20 Ordre 2 3 1 0K Tabelul prezintă evolutia familie x86a firmei Intel este primul din aceată gamă. Microprocesoarele 8088/8086 sunt realizate in tehnologie NMOS si sunt încapsulate in circuite integrate cu 40 de picioare (pini). Intern, ambele P au o structura pe 16 biţi (latime registre, magistrale interne), dar extern P 8088 are o magistrala de date pe 8 biţi pe cind P 8086 dispune de 16 linii de date. In rest structura interna si setul de instructiuni al celor doua P sunt identice. Microprocesorul 8088 s-a dorit a fi o componenta de trecere intre sistemele organizate pe 8 biti si cele organizate pe 16 biti. Ambele procesoare pot adresa un spatiu de memorie de maxim 1megaoctet (20 de linii de adresa) si un spatiu pentru operatii de intrare/ iesire de 64Ko. P8086 are posibilitatea de a efectua transferuri de date si instructiuni atit pe un octet cit si pe doi octeti (pe cuvint). Deoarece numarul de semnale prin care cele doua P comunica cu restul sistemului este mai mare decit numarul de pini ai circuitului integrat, o parte din semnale sunt multiplexate in timp, adica pe durata unui ciclu de transfer un anumit pin se foloseste pentru vehicularea a doua tipuri de semnale, decalate in timp. De exemplu pinii AD0-AD7 ( AD0-AD15 pentru 8086) se folosesc in prima parte a unui ciclu pentru generarea semnalelor de adresa, iar in a doua parte se utilizeaza pentru transferul datelor. Cele doua P pot fi configurate in doua moduri de lucru: minimal si maximal. Modul minimal s-a conceput pentru realizarea unor sisteme cu un numar redus de componente. In acest mod P genereaza majoritatea semnalelor de comanda pentru controlul magistralei. Modul maximal se utilizeaza pentru configuratii de sistem mai complexe in care pot exista mai multe procesoare. In acest caz semnalele de comanda sunt generate codificat iar pinii eliberati in acest fel se folosesc pentru sincronizarea cu alte unitati de procesare. In modul maximal, pentru controlul magistralei se utilizeaza circuite suplimentare (I8288 -controlor de magistrala, I8289 -arbitror de magistrala). Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

51 Schema funcţională a uP 8086
Schema funcţională a uP 8086 IP RI SS ES CS DS AH AL BH BL CH CL DH DL Registre SP 16 de uz BP general DI + x SI Bus Extern 16 biţi Interfaţă cu bus-ul extern Magistrala internă 16 biţi Se observa ca in interiorul circuitului integrat coexista de fapt doua unitati de prelucrare: EU- Execution Unit si BIU- Basic Interface Unit. Unitatea EU se ocupa cu executia efectiva a instructiunilor; pentru aceasta dispune de: registre generale, o unitate aritmetico-logica si un dispozitiv de comanda. Unitatea BIU este specializata pentru efectuarea transferurilor pe magistrala . Pentru aceasta dispune de registre de adresa, registre segment, unitate de calcul pentru calculul adresei, un dispozitiv de comanda si registre pentru interfatarea magistralei. Cele doua unitati lucreaza in paralel, ceea ce duce la cresterea vitezei de executie a instructiunilor. Modul de lucru este de tip “banda rulanta” (pipeline); unitatea BIU pregateste instructiuni si date pe care unitatea EU le prelucreaza. Legatura intre cele doua unitati se realizeaza prin intermediul unei memorii organizate sub forma unei liste de asteptare. Unitatea BIU extrage instructiuni in avans pe care le depune in aceasta memorie. La cererea unitatii EU, transfera operanzii implicati intr-o instructiune. Unitatea EU preia instructiunile din coada de asteptare si le executa. In cazul unor instructiuni de salt memoria este golita si unitatea BIU incarca instructiunile incepind de la noua adresa. Se poate observa ca privit din exterior acest P se comporta ca o singura unitate centrala de prelucrare, chiar daca in interiorul circuitului integrat coexista doua unitati de procesare. Singurul indiciu care tradeaza existenta prelucrarii paralele consta in necorelarea cronologica exacta dintre extragerea instructiunilor si transferul datelor aferente ( a operanzilor). La variantele mai evoluate din familia Intel, numarul unitatilor de procesare incorporate intr-un circuit integrat creste, ceea ce duce la cresterea vitezei de prelucrare. Microprocesorul I8086 dispune de 14 registre interne pe 16 biti. O parte din registre (AX, BX, CX si DX) se pot adresa fie pe cuvint (16 biti), fie pe octet (ex: AH - octetul mai semnificativ al registrului AX; AL - octetul mai putin semnificativ al registrului AX). Aceste registre se folosesc cu precadere in operatii aritmetice si logice. A doua categorie de registre (SI, DI, SP si BP) se adreseaza numai pe cuvint si se folosesc pentru implementarea diferitelor moduri de adresare (indexata, bazata, stiva, pe siruri etc.). A treia categorie de registre (CS, DS, ES si SS) se utilizeaza pentru memorarea adreselor de inceput ale segmentelor de memorie active. Registrul IP (Instruction Pointer) memoreaza adresa instructiunii in curs de executie. Indicatorii de conditie se pastreaza in registrul Flags.Impreuna registrele IP si Flags formeaza cuvintul de stare program (PSW- Program Status Word). Indicatori Comandă EU Coada de instrucţiuni UAL Unitate de execuţie (EU) Unitate de interfaţă cu magistrala (BIU) Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

52 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Registrele 8086 AX- registru acumulator - preferat in operatii aritmetice si logice; operatiile de inmultire si impartire folosesc acest registru in mod implicit BX- registru folosit in operatii aritmetice si pentru memorarea unor adrese de memorie (pentru adresarea bazata) CX- registru de uz general, dar folosit mai ales pentru contorizare ( numararea ciclurilor de program sau a datelor in cazul transferului pe siruri) DX- registru folosit in operatii aritmetice (implicit pentru inmultire si impartire) si pentru adresarea porturilor de intrare/iesire SI,DI- registre index folosite pentru adresarea sirurilor de date (SI - index sir sursa; DI - index sir destinatie) BP- registru de baza, utilizat pentru adresarea bazata si pentru citirea/scrierea datelor pe stiva Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

53 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Registrele 8086 (cont.) SP- indicator de stiva (Stack Pointer) - faciliteaza operatiile de salvare/refacere a informatiilor pe/de pe stiva IP- numaratorul de instructiuni CS- registru segment de cod - memoreaza adresa de inceput a segmentului de program DS- registru segment de date - memoreaza adresa de inceput a segmentului de date ES- registru segment de date - memoreaza adresa de inceput a extrasegmentului de date SS- registru segment de stiva - memoreaza adresa de inceput a segmentului de stiva Flags- registru care pastreaza indicatorii de conditie Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

54 Flags- registru care păstrează indicatorii de condiţie
Flags- registru care păstrează indicatorii de condiţie Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

55 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Spaţiu de adresare x86 P I8086 poate adresa un spatiu de memorie de 1 Moctet. Pentru adresare se folosesc 20 de linii de adresa. Adresa fizica a unei locatii de memorie se calculeaza pe baza unei perechi de doua adrese pe 16 biti: o adresa de segment si o adresa de offset. Adresa de segment precizeaza inceputul unui bloc de memorie (“segment”), iar adresa de offset indica pozitia relativa a locatiei fata de inceputul segmentului. Calculul efectiv se face prin multiplicarea cu 16 a adresei de segment (delpasare stinga cu 4 pozitii binare sau cu o pozitie hexazecimala) si insumarea cu adresa de offset. De exemplu: Adresarea prin segment si offset permite divizarea spatiului de memorie in unitati logice numite segmente. Informatiile aferente unui program se pot grupa in mai multe segmente, functie de natura acestora (segmente de cod, segmente de date, segmente de stiva). Dimensiunea maxima a unui segment este de 64kocteti. Adresa de inceput a unui segment este multiplu de 16. O locatie fizica se poate regasi pe baza mai multor perechi de adrese logice (segment:offset); de exemplu adresele 1000H:0100H si 1010H:0000H desemneaza aceeasi locatie fizica de memorie. Segmentele pot fi complect separate, suparapuse partial sau total. Adresele de segment se pastreaza in cele 4 registre de segment (DS, CS, ES, SS). La un moment dat microprocesorul poate adresa maxim 4 segmente de date cu ajutorul celor 4 registre segment. Prin modificarea continutului registrelor se pot schimba segmentele logice folosite. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

56 3| Evaluarea performanţelor
3| Evaluarea performanţelor Noţiunea de viteză a unui calculator este foarte subiectivă. De fapt fiecare instrucţiune are o viteză de execuţie diferită. Deci pentru a putea compara calculatoarele între ele au fost elaborat un program standard numit SPECint95 (pentru calculul cu numere întregi) şi SPECft95 (pentru calculul cu numere reale). El oferă o măsură fiabilă pentru a compararea procesoare dar nu permite prezicerea performanţelor unui anumit program ce rulează pe această maşină. Pentru a obţine rezultate bune, constructorii au ameliorat performanţele procesoarelor pentru programele de test, dar creşterea performanţelor asupra programelor oarecare nu este întotdeauna la fel de importantă. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

57 Unităţi de măsură MIPS = NI Timp de execuţie x 106
Unităţi de măsură MIPS = NI Timp de execuţie x 106 MIPS = Frecvenţa ceasului   CPI x 106 Depind de programul de test - Programe standard permit compararea MFLOP = NI Real Două unităţi permit cuantificarea puterii unui procesor: Puterea de calcul cu numere întregi numită MIPS (Milioane de Instrucţiuni Pe Secondă). Acest număr se obţine prin împărţirea numărului de milioane de instrucţiuni ale unui program cu timpul său de execuţie. Putem să exprimăm puterea în MIPS plecând de la CPI (Cicluri de ceas Pe Instrucţiune). Ştiind că frecvenţa ceasului reprezintă numărul de cicluri pe secundă (sau de milioane de cicluri pe secundă dacă frecvenţa este exprimată în MHz), puterea se obţine prin împărţind frecvenţa cu CPI. Pentru creşterea puterii trebuie crescută frecvenţa ceasului (limite materiale) sau diminuat CPI (alegerea unui set de instrucţiuni adaptat) Aceleaşi consideraţii se pot aplica pentru calculul cu numere reale numit şi numere în virgulă mobilă MFLOP (Milioane de operaţii pe secondă cu numere reale cu virgulă mobilă - Million Floating Point Operations Per second) Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

58 Ecuaţia de performanţă
Ecuaţia de performanţă Timp de execuţie UC = Numărul de cicluri UC x Timp ciclu CPI = Număr cicluri UC NI Timp de execuţie UC = NI x CPI x Timp ciclu - Timp ciclu : 1/ Frecvenţa ceasului - CPI : Set de instrucţiuni  - NI : Compilator  Timp de execuţie UC = i (NIi x CPIi ) x Timp ciclu Cum se poate ameliora timpul de execuţie a unui program? Un program este compus din di NI instrucţiuni având un CPI dat. Procesorul are un ceas cu frecvenţa dată. Produsul celor 3 parametrii defineşte timpul de execuţie a programului. Pentru a scădea acest timp există deci 3 posibilităţi: 1. Diminuarea CPI 2. Creşterea frecvenţei ceasului 3. Diminuarea numărului de instrucţiuni din program. Este rolul compilatorului care traduce în mod optimal programul sursă scris de utilizator. În cazul în care diferite tipuri de instrucţiuni au CPI diferite, ultima relaţie permite calculul timpului de execuţie a programului prin însumarea produselor. Acesta este în general cazul real. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

59 4| Setul de instrucţiuni a microprocesorului 8086
4| Setul de instrucţiuni a microprocesorului 8086 Vom vedea importanţa Arhitecturii Setului de Instrucţiuni (ISA : Instruction Set Architecture). În acest capitol vom trece în revistă diferite seturi de instrucţiuni posibile cu avantajele şi dezavantajele fiecăruia. x86 indică microprocesorul 8086 sau unul din succesorii lui. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

60 Clasificarea setului de instrucţiuni
Clasificarea setului de instrucţiuni Operanzii sunt în registrele generale şi/sau în memorie registre, memorie (unele registre) (1) încărcare-rangement (număr mare de registre) (2) Exemplu calcul: N3 = N2+N1 (1) MOV A,N1 ADD A,N2 MOV N3,A x86 (2) LOAD R1,N1 LOAD R2,N2 ADD R3,R2,R1 STORE N3,R3 O primă clasificare se poate face în funcţie de localizarea operanzilor în microprocesor pentru instrucţiunile de calcul. Există patru posibilităţi: În stivă (1) : Încărcarea operanzilor în stivă (push : punere în stivă), instrucţiunea ADD ia ultimele două valori puse în stivă, le şterge şi depune rezultatul în stivă. Scoaterea din stivă (pop: extragere din stivă) şi se pune rezultatul în variabila C. Anumite calcule ştiinţifice utilizează acest principiu. Într-un acumulator (2) (vezi arhitectura Von Neumann) : Se pune operandul A în acumulator (LOAD : încarcă datele în acumulator), se adună B la cumulator (ADD: adunare), apoi se stochează 'acumulatorul în C (STORE: scriere în memorie). Inconvenientul acestei metode este traficul important între unitatea centrală şi memorie. Într-un ansamblu de registre şi memorie (3) : instrucţiunea utilizează o localizare indiferentă a operanzilor. Instrucţiunea MOV permite deplasarea unei valori. Aici A este transferată în registrul R1. Adunarea se face între R1 şi B şi rezultatul se depune în R1. Nu este posibilă efectuarea de două operaţii cu memoria simultan. Este suficient să se depună (de ranger) R1 în C. Avantajul registrelor este posibilitatea de salvare a calculelor intermediare în procesor în loc de memorie. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

61 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Registre x86 GPR (2) 128 registre generale r0 la r127 r127 = adresa de întoarcere 128 registre flotante 64 bits 80 bits Registres (1) AX : Acumulator BX : Bază CX : Contorizare DX : Acumulator auxiliar SI : Index Sursă DI : Index Destinaţie PSW : Registre indicatoare ZF : Indicator de zero SF : Indicator de semn OF et CF : Indicator de depăşire şi transport În registrele generale (4) : se foloseşte metoda încărcării/stocării. Instrucţiunile de calcul utilizează numai registre. Accesul la memorie se face cu instrucţiuni speciale LOAD (citirea unei date din memorie) şi STORE (scrierea unei date în memorie). La ora actuală numai opţiunile 3 şi 4 sunt utilizate. Opţiunea 4 sau toate ALU găsesc operandul în registre, utilizează deci un mare număr de registre de uz general GPR (General purpose register). Tipic există un număr de 32 registre de uz general în care putem să orice tip de informaţie. Opţiunea 3, unde operanzii sunt simultan în microprocesor sau în memorie este nevoie de un număr mai mic de registre. În microprocesorul din calculatoarele personale fiecare registru are un rol precis. - AX : registru acumulator, dacă informaţia de stocat este prea mare, i se adaugă DX (acumulator auxiliar). Notăm acumulatorul în acest caz AX:DX - BX : registru de bază pentru accesul la tablouri de date. - CX : registru contor pentru iteraţii (repetarea unei părţi din program) - SI şi DI : registre index sursă şi destinaţie, conţin adresele datelor. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

62 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Operaţiuni cu UAL Numărul de operanzi Instrucţiuni distructive (C) a a+b Instrucţiuni nedistruvtive (D) c a+b x86 x86 Procesoarele CISC (anii 75) registre / memoire, câteva registre, destructiv Procesoarele RISC (anii 90) încărcare/stocare, multe registre de uz general, nedistructiv Putem să clasificăm instrucţiunile după modul cum tratează operaţiile UAL. Instrucţiunea se numeşte distructivă dacă un operand al operaţiei UAL este de asemenea şi reziltat (cazul arhitecturii Von Neumann). Instrucţiunea se numeşte nedeistructivă dacă operanzii nu sunt midificaţi forţat de operaţiile UAL. Rezultatul poate fi stocat în alt registru decâ cei doi operanzi. Le 8086 qui date de la fin des années 1970 est un jeu d'instruction dit CISC (complète instruction set computer). Il possède peu de registres (voir "Schéma du 8086"), beaucoup d'instructions souvent inutilisées. En effet, des mesures ont montré que dans les programmes standards 10% du jeu d'instruction était utilisé 90% du temps. La philosophie de l'époque était que le microprocesseur doit savoir faire toutes les opérations (boucles, sélection… ). Il en résulte une complexité accrue du décodeur d'instruction. Les jeux d'instruction des années 90 sont dit RISC (reduce instruction set computer). Ils possèdent beaucoup de registres, et peu d'instructions. Les architectes ont considéré qu'il fallait créer les instructions les plus utilisées (les 10% ci-dessus). Les autres instructions plus complexes seront créées par une suite d'instructions simples. Le microprocesseur est plus simple, les instructions moins nombreuses donc plus facile à décoder. Et ça marche, un pentium décompose les instructions complexes en instructions simples pour aller plus vite. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

63 Interpretarea adreselor de memorie
Interpretarea adreselor de memorie x86 Little endian cuvânt [1000] = 3412 cuvânt dublu [1000] = Big endian cuvânt[1000] = 1234 cuvânt dublu[1000] = Atentie la transferul de date între două procesoare diferite 56 78 34 12 1000 1001 1002 1003 Datele sunt stocate în memoria calculatorului. O locaţie de memorie conţine un număr de dimensiuni limitate. Dacă vrem să codăm numere mai mari trebuie să grupăm mai multe locaţii de memorie succesive. Să presupunem că într-o locaţie de memorie putem să stocăm un nuăr compus din două cifre. La dresa 1000 este stocată valoarea 12, … Putem să citim această succesiune de locaţii de jos în sus sau sus în jos, obţinem astfel: sau 1234 sau 3412. Codul big endian pune partea mai importantă a numărului la adresa superioară. Obţinem astfel numărul Acesta este modul de codare din 8086. Codul little endian partea mai importantă a numărului la adresa inferioară. Obţinem deci numărul 1234. Când transmitem date de la un procesor în cod little endian la o un procesor în cod big endian trebuie să facem o conversie a numerelor. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

64 Modurile de adresare ale x86
Modurile de adresare ale x86 Scop : Găsirea operandului registru : numele registrului în clar AX imediată : în cod (constante) directă : se specifică adresa operandului [101] variabilă indirectă : adresa se găseşte într-un registru [SI] [DI] Memorie Adrese 100 101 variabila i 102 101 50 Modurile de adresare permit unei instrucţiuni să găsească operanzii. În cazul arhitecturii Von Neumann, operanzii erau codificaţi în program. În continuare se va vedea că nu este singurul loc posibil. Fiecare mod de adresare este urmat de un exemplu. - registru: operandul e găseşte în microprocesor într-un registru; - imediată: operandul e găseşte în program, este o constantă pentru că programul nu este modificabil; -directă: operandul e găseşte în memorie de date, este deci variabilă care poate fi schimbată. În codul instrucţiunii se găseşte adresa unde se găsesc datele, şi nu datele. Este ceea ce se numeşte pointer. Un pointer este întotdeauna notat între paranteze drepte []. [100] nu reprezintă valoarea 100, ci valoarea conţinută la adresa 100. -indirectă: adresa unse se găsesc datele se găseşte într-un registru special, numit registru index. În x86 două registre index notate SI şi DI. Numai aceste două registre pot fi utilizate ca index. [SI] nu înseamnă valoarea lui SI, ci locaţia de memorie indicată de valoarea conţinută în registrul SI. -indexată bazată: adresa este calculată prin însumarea a 3 valori: o bază (BX) un index (SI sau DI) şi o valoare imediată. Fiecare valoare este opţională dar este obligatorie utilizarea registrelor BX, SI sau DI. Memorie Adresse 100 101 variabila i 102 IX 50 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

65 Formatul instrucţiunilor
Formatul instrucţiunilor Dimensiune fixă decodificare simplă program mai lung timp de extragere a unei instrucţiuni constant Dimensiune variabilă decodificare complicată program de dimensiune optimală Codul operaţiei Operand(operanzi) x86 O instrucţiune este codificată în memorie sub forma unui număr. Ea este compusă, din două părţi. Prima parte este codul opeaţiei care reprezintă numele instrucţiunii, cea de-a două parte este reprezentată de operanzi care pot fi în număr de 0, 1 sau 2 în x86. Instrucţiunile pot fi codate cu într-un cod cu dimensiune variabilă sau cu dimensiune fixă. Procesoarele CISC utilizează în general dimensiunea variabilă, în timp ce procesoarele RISC utilizează cod de dimensiune fixă (32 bits). Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

66 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Instructions du 8086 Transfert MOV Destination,Source Destination  Source PUSH registre et POP registre Décalage et rotation de bits (SHL,SHR,RxL,RxR) Arithmétique et logique ADD Destination,Source (sub,and) Destination  Destination+ Source ADC Destination,Source (subb) Destination  Destination+ Source+C CMP Destination,Source (test)  Destination-Source Branchement JMP Etiquette (inconditionnel) Aller à l'étiquette J? Etiquette (jc, jz, jnc, jnz,ja,jbe…) Si Indicateur Aller à l'étiquette Procédure CALL Etiquette Appel sous-programme à l'étiquette RET Retour de sous-programme Nous allons maintenant voir les principales instructions du x86. Elles ressemblent beaucoup à celles de la machine de Von Neumann. MOV permet de déplacer une donné dans une autre. La destination reçoit la valeur de la source. Attention, il n'est possible d'avoir au plus une seule adresse mémoire par instruction, l'autre étant un registre. PUSH et POP permettent de mettre une valeur dans la pile et de la ressortir. ADD permet d'additionner deux données. SUB soustraction. INC +1 et DEC -1. AND OR permet de faire des opérations logiques, nous y reviendrons. Pour les branchements inconditionnels l'instruction est JUMP Pour les branchements conditionnels nous avons besoin de deux instructions : l'instruction CMP qui permet de comparer une valeur à une autre et de positionner les indicateurs. Immédiatement après on trouve une instruction qui teste les indicateurs et rompt la séquence du programme s'il est positionné à "vrai". Par exemple JZ adresse, permet d'aller à l'instruction dont l'adresse est spécifiée si l'indicateur du dernier nombre comparé valait 0. Pour terminer, les sous-programmes qui seront étudiés bientôt, sont appelés à l'aide de l'instruction CALL. La fin du sous-programme (retour au programme appelant) se fait avec l'instruction RET. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

67 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Notion de Segment x86 00000 CS Code CP SS Pile SP DS Données DI SI + 1 220 Nous allons maintenant détailler l'organisation de l'architecture logicielle du Nous avons vu qu'il y a un ensemble de registres généraux dans le 8086 qui peuvent contenir des données ou des adresses. Il existe un ensemble d'autres registres nommés registres segments. Ils vont permettre de structurer le contenu de la mémoire en fonction des informations qu'elle renferme : du code ou des données. Le registre segment de code noté CS (qui est un pointeur) désigne la première case mémoire des instructions du programme. Lorsque le programme se déroule, c'est CP qui varie (ce registre est aussi nommé IP : Instruction Pointer). CP dans ce cas est appelé l'offset ou le déplacement par rapport au début du segment. Le registre segment de données noté DS désigne la première case mémoire qui contient les données du programme. L'offset est formé par une constante, SI ou DI, BP et leurs combinaisons. Il en existe un deuxième noté ES Le registre segment de pile noté SS (stack segment) désigne des données organisées de façon spéciale (voir la suite du cours). L'offset est SP (stack pointer) Une adresse est donc formée d'un segment et d'un offset. L'adresse est calculée avec la relation liant le segment et l'offset. Adresse Mémoire = 16 x Segment + Offset. On note le segment et l'offset avec la syntaxe SEGMENT : OFFSET L’offset est aussi appelé déplacement dans le segment Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

68 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Notion de Pile x86 Type de la pile : LIFO Données codées sur deux cases mémoires uniquement (16 bits) Empiler Dépiler Libre Occupée SS:0000 SS: Sommet SS:SP Dernière Donnée SS:SP-2 La pile est un segment particulier de données. Celles-ci sont accédées de façon ordonnée et séquentielle. La dernière donnée entrée dans la pile sera la première à en sortir (Last In First Out). Initialement le pointeur de pile pointe à la fin du segment de pile. Lorsque l'on empile une donnée (instruction push) , le pointeur de pile SP remonte de deux cases et l'on stocke la valeur à ces endroits. Lorsque l'on dépile une donnée (instruction pop) on récupère la donnée et on la place dans un registre et on augmente de deux le pointeur de pile. La partie utilisée de la pile est donc en haut du segment et la partie libre en bas du segment de pile. La pile est utilisée pour ranger des données de façon ordonnée. On ne peut pas récupérer une donnée tant que celles mises après ne l'ont pas été. Ce mécanisme est très utilisé pour enregistrer l'état de tous les registres du processeur lors de l'appel de sous-programme, passage de paramètre aux sous-programmes. Nous y reviendrons. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

69 Fonction : Empiler et Dépiler
Fonction : Empiler et Dépiler Procédure Empiler(entier V) début SP  SP -2 [SP]  v fin pile pleine SP = 0 fonction Pleine():Entier debut Si SP=0 alors Pleine  1 sinon Pleine  0 fonction Dépiler:Entier début SP  SP+2; retourner [SP-2]; fin Lorsque la pile est vide SP est au sommet Voici donc les algorithmes des fonctions d'accès à la pile. Le sous-programme "empile" ne retourne aucune valeur; c'est donc une procédure. On diminue SP de 2 et on range à l'adresse mémoire désignée par SP la valeur du paramètre v. Le sous-programme "dépile" retourne une valeur unique. C'est donc une fonction. On retourne la valeur mémoire pointée par SP. On augmente alors SP de 2. Le sous-programme "plein" retourne un booléen (vrai ou faux). C'est une fonction. Il suffit dans notre cas de comparer SP à 0. Il aurait été plus difficile à mettre en œuvre si la pile fonctionnait dans l'autre sens. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

70 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Les procédures x86 A l'appel on place dans la pile : Les paramètres (Programme - non obligatoire) L’adresse de retour (instruction suivante - Processeur) Exécution du sous-programme (modification de CP et de CS) Au début de la procédure Le contexte (Etat du processeur - Programme) A la fin de la procédure : Restitution du contexte (Programme) Instruction suivante du programme (Processeur) Suppression des paramètres (Programme - non obligatoire) La principale utilisation de la pile est l'appel des sous-programmes. Qu'est ce qu'un sous-programme? C'est une suite d'instructions qui peut être appelée depuis n'importe quelle position du programme appelant. De plus, il peut être appelé un nombre quelconque de fois. Lorsqu'on appelle un sous-programme, il faut, une fois terminé, pouvoir revenir à l'instruction suivante du programme appelant. Cette adresse de retour sera sauvegardée dans la pile (CS+IP du processeur). Une fois cette action effectué CS et CP changent pour désigner la première instruction du sous-programme. La première tâche à effectuer est de sauvegarder l'état du processeur (c'est-à-dire tous les registres utilisés par le programme appelant et qui sont modifiés par le sous-programme). Le travail du sous-programme peut démarrer. A la fin du sous-programme, on remet le contexte initial. Attention ! si un résultat est dans un registre il ne doit pas être sauvegardé. On reprend alors l'adresse de l'instruction suivante du programme appelant dans la pile. Les paramètres peuvent être mis dans les registres ou dans la pile (cette option est plus compliquée). Les langages de haut niveau pascal ou C utilisent la pile. Nous utiliserons les registres dans un premier temps. Dans le cas où on utilise des registres en résultat de la procédure, ils ne doivent pas être sauvegardés. (avec le contexte) Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

71 Création d'un exécutable
Création d'un exécutable Fichier assembleur bibliothèque exécutable Assembleur Editeur de liens Gestionnaire de librairie debuggeur Pour créer un programme exécutable, plusieurs phases sont nécessaires. On écrit un programme contenant les instructions et on le stocke dans un fichier source (on utilise un éditeur de texte). Le programme est ensuite vérifié au niveau de sa syntaxe, puis traduit en codes opération (des nombres) à l'aide de l'assembleur. Le fichier objet est crée. Ce fichier n'est pas encore exécutable. Il doit passer dans l'éditeur de liens qui relie le programme objet avec les éventuelles bibliothèques de fonctions existantes. A la sortie, on obtient un fichier exécutable que l'on peut lancer sur l'ordinateur. Si le programme ne fonctionne pas (c'est souvent le cas), on utilise un débugger qui permet de mettre au point le programme (exécution ligne par ligne, affichages des registres … ). Quand on a trouvé l'erreur, on recommence toute la chaîne jusqu'à obtenir un fonctionnement correct. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

72 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Fichier assembleur bibliothèque exécutable Assembleur Editeur de liens Gestionnaire de librairie debuggeur Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

73 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
11| x86 et PC Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

74 Evolution de la famille x86
Evolution de la famille x86 Date F (Mhz) Transistors sans cache Registres Data Bus Adresses Cache Nom 1978 8 29 k 16 1 MB 8086 80 µ 1982 12 134 k 16 MB i286 1989 25 1.2 M 32 GP 80 FPU 32 4 GB L1 8K i486 2 µ 1993 60 3.2 M 64 L1 16K Pentium 0.6µ 1997 266 7 M 32 GP 80 FPU 64 MMX 64 GB L1 32K L2 256 K P II 1999 500 15 M L1 32K L2 512 K P III 2000 1500 42 M 128 L1 8K L2 256 K 12 K µop P IV 0.18µ Pipe line 5 6 10 20 Ordre 2 3 1 0K Le tableau présente l'évolution de la famille x86 d'intel. Le 8086 est le premier de la gamme. Tous ses successeurs pourront émuler son fonctionnement. Il adresse un méga octet de mémoire et n'a pas de cache. Son successeur le 80286, est pratiquement identique sauf que les adresses sont codées sur 24 bits. Le 386 marque un tournant. On passe à l'architecture IA32 (Intel architecture 32 bits), qui est encore en service de nos jours. Le processeur a plusieurs modes de fonctionnement (mode 8086, mode virtuel (n 8086 virtuels). Le premier cache est implémenté. Le 486 est un avec son coprocesseur de calcul sur les nombres flottants (80387). Les pentiums (famille p5) utilisent toutes les techniques précédentes: - pipeline - superscalaire - exécution dans le désordre - SIMD Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

75 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Microprocesorul 80286 Unitatea de adrese Unitatea de magistrala Interfata cu mag. de adrese Interfata cu coprocesorul Controlul magisralei Tabele Interfata cu mag. de date Citire in avans Coada de 6 octeti Unitatea de executie Unitatea de instructiuni Registre Coada de instructiuni decodificate Decodificator de UAL Bloc de control Aceasta varianta aduce trei modificari esentiale. In primul rind se introduc doua moduri de lucru, un mod protejat (Kernel) si un mod utilizator, prin care se permite prelucrarea concomitenta (prin divizarea timpului) a mai multor programe. A doua imbunatatire consta in cresterea spatiului de adresare a memorie la 16Mo. A treia imbunatatire este cresterea vitezei de prelucrare prin marirea frecventei de ceas si prin extinderea prelucrarii paralele. Microprocesorul incorporeaza patru unitati functionale independente. Unitatea de magistrala realizeaza toate operatiile de transfer pe magistrala: extragerea instructiunilor si citirea/scrierea operanzilor. Instructiunile sunt citite in avans si sunt transferate catre unitatea de instructiuni.Aceasta unitate preia instructiunile si le decodifica in vederea executiei. Pot fi pastrate pina la 3 instructiuni decodificate. Unitatea de executie preia aceste instructiuni si efectueaza operatiile pe care acestea le implica. In cazul in care instructiunile contin adrese de memorie, acestea sunt transferate catre unitatea de adresare. Aceasta unitate efectueaza toate calculele de adresa pe care le implica diferitele moduri de adresare si trateaza adresarea memoriei virtuale. Se precizeaza ca memoria virtuala este o tehnica prin care se permite utilizarea de catre un program a unei memorii mai mari decit cea fizica existenta in calculator. Adresa calculata se transmite catre unitatea de magistrala pentru efectuarea transferurilor. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

76 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Microprocesorul 80386 Unitatea de Unitatea de segmentare paginare Unitatea de Unitatea de Mag. adrese executie interfata Mag. date Unitatea de Unitatea de Odata cu se trece la arhitectura pe 32 de biti. Dintre imbunatatirile aduse fata de varianta se pot aminti: - cresterea vitezei de calcul prin marirea latimii cuvintului la 32 biti si cresterea frecventei ceasului - cresterea spatiului de memorie fizica (4 gigaocteti) si de memorie virtuala () - s-au introdus trei moduri de lucru :real, protejat si virtual - exista un numar de sase unitati functionale independente care lucreaza in regim pipeline. decodificare preincarcare instructiuni instructiuni Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

77 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Microprocesorul 80486 Unitatea de Unitatea de segmentare paginare Procesor in Mag virgula mobila adr. Unitatea Unitatea cashe de interfata Unitatea de Mag executie date Microprocesorul are o arhitectura pe 32 biti asemanatoare cu 80386, insa prezinta o serie de imbunatatiri: contine un procesor RISC (procesor rapid cu set restrins de instructiuni) pentru operatii aritmetice cu numere intregi, are o memorie “cashe” rapida de 8Ko incorporata in circuit, iar coprocesorul matematic este de asemenea incorporat. Microprocesorul dispune de semnale care permit accelerarea transferului de date pe magistrala si faciliteaza lucrul cu o memorie rapida “cashe”. Se pot efectua cicluri de transfer pe doi tacti de ceas, iar intern instructiunile procesorului RISC se pot executa intr-un singur tact. Microprocesorul opereaza cu trei tipuri de adrese: logice, liniare si fizice. Spatiul adreselor logice este deocteti. Adresele logice sunt transformate in adrese liniare de catre unitatea de segmentare. Spatiul adreselor liniare este de octeti. Unitatea de paginare transforma adresele liniare in adrese fizice care se genereaza pe magistrala externa de adrese a procesorului. Spatiul adreselor fizice este de octeti. Datorita cresterii numarului de semnale utilizate de P (adrese, date) s-a trecut la o incapsulare cu 132 de pini. Unitatea de Unitatea de decidificare a preincarcare a instructiunilor instructiunilor Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

78 Microprocesorul Pentium
Microprocesorul Pentium Principalele modificări faţă de varianta sunt: magistrala externa de date de 64 de biţi memorie cache încorporată de 2*8ko+256ko organizată pe două nivele arhitectura superpipeline cu 12 nivele de prelucrare pot fi conectate până la 4 P într-un sistem frecvenţa ceasului :150,160,180 si 200MHz în prelucrarea instrucţiunilor s-a introdus conceptul de execuţie dinamică. Pentium este cel mai nou si totodata cel mai puternic reprezentant al familiei Intel. Puterea de calcul oferita de acest P este comparabila cu aceea a calculatoarelor “medii - mari” in acceptiunea mai veche de clasificare a calculatoarelor. Principalele modificari fata de varianta sunt: - magistrala externa de date de 64 de biti - memorie cashe incorporata de 2*8ko+256ko organizata pe doua nivele - arhitectura superpipeline cu 12 nivele de prelucrare - pot fi conectate pina la 4 P intr-un sistem - frecventa ceasului :150,160,180 si 200MHz In prelucrarea instructiunilor s-a introdus conceptul de executie dinamica. Acest termen a fost folosit de firma Intel pentru a descrie o combinatie unica de: predictie multiramura, analiza de flux de date si executie speculativa. In esenta procedeul consta in executia in avans a instructiunilor functie de datele disponibile; se foloseste o schema optimizata de planificare a executiei instructiunilor. Cu ajutorul P Pentium se realizeaza calculatoarele personale puternice, statii de lucru si servere pentru retele locale de calculatoare si Internet. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

79 Architecture externe Pentium IV
Architecture externe Pentium IV Unité d’exécution Dans le désordre LI/DI Dans l’ordre Réserve d’instructions Unité de retrait Dans l’ordre Interface Dans l’ordre Bus externe Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

80 Architecture du Pentium IV
Architecture du Pentium IV Unité Retrait Mémoire cache données Niveau 1 8 Kilo Octets 4 par ensemble Unité d'interface avec le bus externe du Pentium IV Bus externe Mémoire cache Niveau 2 256 Kilo Octets , ensemble de 8 Unité d’exécution (dans le désordre) Réserve d’instructions Cache instructions (niveau 1) 12 K micro opérations Unité LI/DI BTB / Prédiction branchement Mémoire cache Niveau 3 Optionnel Nous allons voir le fonctionnement d'un pentium III, qui est plus complexe que celui du 8086. Au centre se trouve la réserve d'instructions alimentée par la mémoire cache instructions de niveau 1. Une unité de répartition exécution prend les instructions qui sont prêtes dans la réserve, les exécute, puis les remet dans la réserve. Une unité de retrait enlève les instructions de la réserve et les remet en ordre. Les mémoire caches sont alimentées à travers l'interface de bus. Dans le pentium il y les registres visibles de l'extérieur (AX,BX …) et des GPR internes. L'analyse de flux permet de supprimer les dépendances entre les instructions. Cela permet d'effectuer en parallèle des opérations qui avaient de fausses dépendances. Le branchement prédictif utilise un algorithme plus complexe. En fonction des branchements précédents on a une prédiction qui est différente. Une pile d'appel de sous-programmes est gérée pour connaître directement lors du RET l'adresse de l'instruction suivante. Dans un pentium III, on trouve trois décodeurs d'instruction qui fonctionnent en parallèle. Le cache alimente les décodeurs, le BTB (branch targer buffer) permet de prédire le CP suivant. Le 8086 a un jeu d'instructions CISC très complexe. Les instructions trop complexes seront décomposées en micro-opérations qui seront mises dans la réserve d'instructions. Les registres externes sont convertis en nom de registres internes GPR. Une table fait la correspondance entre noms externes et GPR (un numéro) L'unité de répartition tire de la réserve les instructions qui sont prêtes à être exécutées. Elle les dirige vers les différentes unités fonctionnelles (deux unités entières et deux unités flottantes, une unité de calcul d'adresse mémoire). Bien qu'il y aient cinq unités en parallèle, l'ordre n'est que de trois puisqu'il y seulement trois décodeurs d'instruction. Une fois exécutées, les instructions retournent dans la réserve. L'unité de retrait supprime les micro-opérations de la réserve, les remet dans l'ordre et redonne aux registres leurs noms initiaux. Elle utilise pour cela la table de renommage des registres. L'accès au cache de niveau deux se fait par un bus spécial. Le bus externe est connecté sur la mémoire principale. Les accès mémoire sont non bloquants, c'est-à-dire qu'en cas de défaut de cache, on passe à la demande suivante. Lorsque la demande sera satisfaite on reviendra chercher la donnée. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

81 Pipeline du Pentium IV Cache L2 Charge Registres entiers
Pipeline du Pentium IV BTB, TLB instructions Décodeur Cache de trace Renommage / Allocation File attente µops Répartiteur Registres FP Registres entiers Charge Sauve UAL Charge Sauve +,-,*,/ MMX SSE Cache donnée L1 et TLB données code Interface 3,2 GB/s Cache L2 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

82 Caractéristique du Pentium IV
Caractéristique du Pentium IV - SIMD 2 Données sur 128 bits Cache L1 Données 8 kilo octets L1 Instructions 12 K micro opérations L2 unifié 256 Kilo octets : 8 blocs par ensemble Interface avec le bus 400 MHz x 64 bits = 3,2 Giga octets /seconde Prédiction de branchement Dynamique + Statique (avant pris arrière non pris) Pile d’appel de sous programme (toujours pris) Oniga Ştefan - Arhitectura sistemelor cu microprocesoare

83 Oniga Ştefan - Arhitectura sistemelor cu microprocesoare
Architecture du PC Microprocesseur Cœur du Processeur 1 Go cache niveau 2 8000 Mo/s Bus 64 bits Chipset 3200 Mo/s Bus système Système Graphique AGP 533 Mo/s Mémoire Centrale 2 GO SDRAM 133 1,06 Go/s Bus PCI 133 Mo/s 33 Mhz Bus 32 bits Adaptateur PCI /ISA Entrées /Sorties Disque, liaisons ... 4 Mo/s Bus 16 bits Pour conclure étudions l'implantation du microprocesseur dans l'ordinateur. Le microprocesseur intégré sur le même support fonctionne à la même fréquence que le cache de niveau 2. Le débit sur ce bus de 64 bits (8 octets) est de 8GO/s. Il alimente donc les caches de niveau 1 sans problèmes. Le microprocesseur est relié au chipset (ensemble de circuits chargés de gérer le dialogue avec le microprocesseur). Il commande les accès à la mémoire centrale et au système graphique. La fréquence du bus système est de 100Mhz, d'où un débit de 800 MO/s (dix fois moins que le bus cache L2). L'AGP (accelerated graphic port) gère toutes le transactions avec l'écran graphique. Le chipset gère aussi le bus PCI sur lequel seront connectées toutes cartes d'extension. Sa fréquence est de 33Mhz soit un débit de 133MO/s. Le bus ISA/IDE permet de contrôler les périphériques lents. Oniga Ştefan - Arhitectura sistemelor cu microprocesoare


Télécharger ppt "Circuite numerice şi microcalculatoare II"

Présentations similaires


Annonces Google