Cours LIFC
Transcription
Cours LIFC
Architectures des ordinateurs Cours 1 Architecture de base Présentation Architecture Étude et description du fonctionnement des composants internes d’un ordinateur type et codage des informations manipulées dialogue entre les composants fonctionnement logique interne des composants Plan Historique : inventions (1) -500 : apparition de l’abaque et du boulier Historique 17ème siècle : certaines tâches sont suffisamment mécaniques pour être automatisables Architecture de base 1632 : L'Anglais Oughtred invente la Règle à calcul Générations d’ordinateurs 1642 : Pascal invente la Pascaline, destinée à effectuer mécaniquement des additions et soustractions. L’automatisation était réalisée à l’aide de roues dentées. Présentation du cours 1694 : Leibnitz améliore la Pascaline (+,-,*,/) 1728 : Falcon construit métier à tisser utilisant les cartes perforées Historique : inventions (2) Photos 1833 : Charles Babbage construit la machine à différence principes du métier à tisser (cartons troués articulés) 4 opérations arithmétiques de bases en séquences cartes numériques pour la navigation en mer : résultats gravés sur un plateau de cuivre Abaque Pascaline il imagine ensuite une machine analytique quatre parties : magasin (mémoire), moulin (unité de calcul), entrée (lecteur de cartes perforées) et sortie (perforation ou impression) opérations arithmétiques, test, branchement conditionnel machine programmable grâce à un langage d’assemblage très simple Ada Lovelace écrit le premier programme informatique non construit faute de moyen (il existe une reconstitution de 3 tonnes) Historique : théories Boulier Chinois Métier à tisser de Falcon Machine à différence (1931) Historique : théories modernes -300 : Aristote définit les concepts de la logique 1623 : Francis Bacon invente le Code Bilitère utilisant 5 symboles à deux valeurs, permettant de coder les lettres de l’alphabet Leibniz (1646-1713) envisage q’une machine puisse raisonner enchaîner des propositions élémentaires pour faire des déductions 1840 : Ada Lovelace définit le principe des itérations successives elle nomme le processus logique d’exécution du programme algorithme 1854 : George Boole reprend l’étude de Leibniz démontre (Une étude des lois de la pensée) que tous les processus logiques peuvent être modélisés par des fonctions logiques utilisant les opérateurs de base (ET, OU, NON) appliqués à des variables à deux états. 1937 : Alan Turing publie un document sur les fonctions calculables résolution de problèmes mathématiques décidables avec une machine nommée Machine de Turing 1938 : Shannon est le premier à faire le rapprochement entre les nombres binaires, l’algèbre de Boole et les circuits électriques. il démontre que le système binaire manipulé par les opérations logiques de Boole (0=faux, 1=vrai) permet de réaliser toutes les opérations logiques et arithmétiques il définit la quantité d’information élémentaire : bit (BInary digiT) 1945 : John Von Neuman publie le premier rapport décrivant ce que devrait être un ordinateur à programme enregistré Plan Structure générale (1) Historique Architecture de base CPU : central Processing Unit interprète et exécute les instructions d’un programme CPU n bits : les informations sont codées sur n bits cherche une exécution en mémoire, l’exécute, cherche la suivante… Horloge : cadence l’activité de l’ordinateur pour que tous les circuits électroniques travaillent ensemble Fréquence exprimée en MHz Générations d’ordinateurs horloge CPU ROM RAM Présentation du cours Bus de données + adresses + commandes Périphériques E/S Structure générale (2) ROM : Read Only Memory Mémoire morte que l’on ne peut que lire stocke l’information : programmes et données RAM : Random Access Memory mémoire vive (lecture, écriture) et volatile (se vide quand il n’y a plus de courant) suite de case contenant 8 bits (1 octet), chaque case possède sa propre adresse Périphériques E/S : disque dur, lecteur de disquette, accès réseau E : clavier, souris, lecteur cd-rom, scanner S : écran, imprimante, graveur Structure générale (3) Un Bus permet de transmettre en parallèle plusieurs données entre les différentes unités de l’ordinateur Ensemble de n fils conducteurs : 1 fil = 1 bit 4 Types de Bus : Bus d’adresse : transmet adresse mémoire lire/écrire, il est composé de a fils (adresse de a bits), la mémoire peut posséder au maximum 2a emplacements Bus de données : bidirectionnel, transmet données cf. commande Bus de commande : travail du processeur Bus d’extensions : ISA, EISA, PCI, AGP, SCSI, USB Largeur du Bus = limite le débit des données, E/S… Carte mère Machine de Von Neuman (1) Clavier / Souris Slots d’extension ISA / PCI Port Série / Parallèle Unité de contrôle USB Contrôleur Mémoire: EDO Quartz SDRAM Unité de commande Bus Unité de traitement Instructions Données UAL CPU Chipset Mémoire Accumulateur Contrôleur Disque Bios Pile Connecteurs : IDE / Disquette Entrée Sortie Alimentation Machine de Von Neuman (2) Machine de Von Neuman (3) UAL (Unité Arithmétique et Logique) effectue les opérations sur deux données : opérandes une opérande dans l’accumulateur, l’autre en mémoire de donnée : résultat mis dans l’accumulateur Accumulateur registre qui contient une opérande et le résultat du calcul Unité de commande séquence les micro-opérations d’une instruction Caractéristiques Machine universelle contrôlée par programme non dédiée aux seules opérations arithmétiques Instructions et données sous format binaires et stockées en mémoire instructions et données dans la même mémoire Plan Ordinateurs : première génération 1904 : John Flemming invente le tube à vide. C’est un interrupteur électronique commandé par un signal électrique Historique Architecture de base Générations d’ordinateurs Présentation du cours Première génération : innovation 1947 : Invention du transistor (Bell Téléphone). interrupteur commandé électroniquement consomme moins d’énergie moins encombrant : 1 cm sur 0,5 cm La plupart des concepts architecturaux des ordinateurs actuels ont été inventés à cette époque Programmation en langage machine Registres d’indexation Microprogrammation Représentation des nombres en virgules flottante Interruptions de programmes… pannes fréquentes encombrement : 2cm sur 10cm Ordinateurs à usage scientifique ne traitant que les nombres 1946 : Création de l’ENIAC (Electronic Numerical Integrator and Computeur) 19000 tubes à vides, 30 tonnes, 72m², 5000 addition/s, 330 multiplication/s, 100 000Hz (signal passant de 0 à 5V 100 000 fois par seconde), consommation 140 000 Watts programmes câblés en mémoire : centaines à rebrancher pour changer de programme ENIAC Ordinateurs : deuxième génération Ordinateurs à usage général : traitement des données et des nombres remplacement des tubes à vide par des transistors organisation de la machine autour d’un bus stockage sur bande magnétique écrans… 1965 : Digital présente le mini ordinateur PDP8 miniaturisation, diminution du prix microprocesseur 12 bits 1MHz = 1 000 000 Hz mémoire : 4096 mots de 12 bits consommation : 780 Watts PDP8 Deuxième génération : innovation 1965 : Gordon Moore écrit que la complexité des circuits intégrés doublera tous les deux ans cette affirmation s’est révélée exacte connue sous le nom de loi de Moore cette vitesse à tout de même tendance à diminuer depuis quelque temps Ordinateurs : troisième génération Traitement des données et de l’information apparition des circuits intégrés (puces) et des processeurs miniaturisation multiprogrammation : plusieurs programmes en même temps 1971 : Intel met en vente le premier microprocesseur i4004 microprocesseur 4 bits 108 KHz Adressage de 640 informations mémoires 60000 instructions par secondes 2300 transistors : circuit SSI (Small Size Integration) Taille des transistors : 10-3 m 1400 Francs 1961 : Fairchild Semiconductor commercialise la première série de circuits intégrés un circuit intégré contient un ensemble de transistors 4004 Troisième génération : innovation Ordinateurs : quatrième génération 1978 : Intel met en vente le premier microprocesseur 16 bits, le 8086 le premier de la gamme x86 ou i86 Nos ordinateurs 200 KHz adressage de 16384 informations mémoires 330 000 instructions par seconde 20 000 transistors en technologie 80 micron (80.10-6m) ordinateurs personnels VLSI (Very Large Scale Integration) augmentation du nombre de transistors réseaux, terminaux… 1985 : Intel met en vente le premier microprocesseur 32 bits le 80386 2MHz adressage de 4Go de mémoire 1 000 000 d’instructions par seconde 200 000 transistors 1981 : IBM commercialise le premier PC (Personnal Computeur) microprocesseur 8086 16384 informations mémoire 4.77 MHz i8086 1986 : Première machine multiprocesseur 80386 Quatrième génération : les PC Évolution de la complexité 1990 : Les PC deviennent multimédia, connectés en réseau 2002 : Caractéristiques des PC actuels Fréquence de l’ordre de 2 Giga Hertz 42 000 000 de transistors de 0,18 micron (Pentium IV) accélération 3D consommation d’énergie plus faible (portables)… Évolution de la puissance Évolution de la technologie Fonctionnement en couches CPU cherche une instruction en mémoire, l’exécute, cherche la suivante… Une instruction est une suite de bits contenant le code de l’information (addition, soustraction…) et ses opérandes (arguments de l’opération Pour éviter d’avoir à connaître ce langage on définit des langages de plus haut niveau Machine virtuelle Mn Comp ou int Niveau 4 Langage d’assemblage traduction Niveau 3 Système d’exploitation interprétation Niveau 2 Couche machine Niveau 1 Couche microprogrammée Routines Langage Machine Ln-1 Exécution Couche physique Machine virtuelle M0 Programmable interprétation Machine virtuelle Mn-1 Niveau 0 Plan Instr. assembleur Langage machine codé en binaire Langage Machine Ln Compilation programme de Mn traduit en entier en un programme en Ln-1 exécutable par Mn-1 Pascal, C, Java Langages d’application Non Interprétation : chaque instruction du langage Ln est traduite en séquence de Ln-1 exécutable par Mn-1. Ré interprétation à chaque fois. Niveau 5 Programmable Langage Langage interne du microprocesseur Langage Machine L0 Plan du cours Représentation des données Algèbre de Boole, Portes et circuits logiques outils théoriques Historique Circuits combinatoires et séquentiels de la logique au chemin des données Architecture de base Générations d’ordinateurs Présentation du cours Introduction au langage machine et assembleur 8086 architecture détaillée instructions de la machine et programmation Interruptions Système d’exploitation Hardware Mémoires, Entrées/Sorties, Périphériques Autres architectures (super-ordinateurs, grilles…) Architectures des ordinateurs Cours 2 Représentation et codage des données Plan Bases numération en base b opération arithmétiques et conversions représentation des nombres Codage codage des entiers codage des réels codage des caractères Numération en base b Numérotation romaine MCMXCIX : M vaut toujours 1000, C vaut 100… Numérotation arabe : représentation positionnelle la rang de chaque chiffre indique son poids dans 1999 le 9 le plus à droite vaut 9, le deuxième 90… la valeur d’un chiffre dépend de sa position Représentations courantes des nombres plusieurs bases : XXXb indique que le nombre XXX est écrit en base b représentation usuelle : base 10 représentations courantes en informatique : bases 2 (binaire, interne), 8 (octal) et 16 (hexadécimal) Numération en base 2, 8, 10 et 16 Bases ai ∈ {Chiffres} b = 2 ou Binaire 0,1 b = 8 ou Octal 0,1,2,3,4,5,6,7 b = 10 ou Décimal 0,1,2,3,4,5,6,7,8,9 b = 16 ou Hexadécimal 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F En base b on utilise b chiffres x = anan-1…a1a0 a0 est le chiffre des unités Numération : exemples Changement de base : b à 10 Bases Exemples 2 ou Binaire 10012 = 910 8 ou Octal 1428 = 9810 10 ou Décimal 12810 16 ou Hexadécimal E2A116 = 5801710 N(10) = d0.b0 + … + di.bi +… + dn.bn i : rang bi : poids du chiffre le chiffre le plus à gauche est le chiffre de poids fort, celui le plus à droite le chiffre de poids faible Exemple : 143(5) = 3*50 + 4*51 + 1*52 = 3+20+25 = 48(10) Pour les bases supérieures à 10 on peut également introduire des symboles séparateurs : système sexagésimal : longitude = 2°20’14’’ Exo1 Intervalle d’un nombre de n chiffres Avec n chiffres on peut coder en base b, la valeur maximale suivante (cas où tous les chiffres sont à la valeur maximale soit b-1) Nmax(10) = (b-1).b0 + … + (b-1).bi + … + (b-1).b(n-1) = (b-1) . (1 + … + bi + … + b(n-1)) = b . (1 + … + bi + … + b(n-1)) - (1 + … + bi + … + b(n-1)) = b + … + bi + … + bn – (1 + … + bi + … + b(n-1) ) = bn – 1 Avec n chiffres on donc coder bn valeurs en base b Dans un ordinateur on code les nombres sur 8, 16 ou 32 bits 8 bits : Nmax = 28 – 1 = 255 on peut coder 256 valeurs 16 bits : Nmax = 65 535 (65 000 couleurs…) 32 bit : Nmax = 4 294 967 296 AB(16) = 11*160 + 10*161 = 11+160 = 171(10) 1001(2) = 1*20 + 0*21 + 0*22 + 1*23 = 1+0+0+8 = 9(10) le poids des chiffres en binaire et 1, 2, 4, 8, 16, 32, 64… Kilo, Méga, Tera On utilise souvent en informatique Kilo, Mega at Tera. traditionnellement un Kilo vaut 1000 : 1Km = 1000m en base 2, 1000 n’est pas une puissance de 2, on prend la valeur immédiatement supérieure 1 Kilo = 210 = 1024 1 Mega = 220 = 1 048 576 1 Tera = 230 = 1 073 741 824 Un octet est un regroupement de 8 bits 1 Ko = 1024 octets 1 Mo = 1024 Ko 1 Go = 1024 Mo Changement de base : 10 à b Base 10 à 2 et 16 : exemples conversion de 11(10) en base 2 Algorithme des divisions successives on divise le nombre par la base puis le quotient par la base ainsi de suite jusqu’à obtention d’un quotient nul la suite des restes correspond aux chiffres dans la base visée on obtient en premier le bit de poids faible et en dernier le bit de poids fort Pour convertir un nombre d’une base b1 vers une base b2, il suffit de convertir le nombre de la base b1 en base 10, puis ce nombre en base 10 en base b2 Particularité : bases 2, 8 et 16 Bases correspondant à des puissances de 2 : conversions très faciles base 8 : découpage par blocs de 3 chiffres 001 010 011 101 1 2 3 5 = 12358 base 16 : découpage par blocs de 4 chiffres 0010 1001 1101 2 9 D = 29D16 Pour simplifier la notation binaire on utilise en informatique la notation hexadécimale simplification de la lecture et écriture des adresses mémoires… 11 2 Reste Bit de poids 1 1023 5 2 1 1 conversion de 1023(10) en base 16 15 2 2 0 1 Bit de poids 8 Reste digit de poids 1 Reste digit de poids 16 16 63 16 15 3 16 3 0 Reste digit de poids 256 11(10) = 1 0 1 1 (2) 1023(10) = 3FF (16) Vérification : Vérification : 1*1 + 1*2 + 0*4 + 1*8 = 11 3*16² + 15*16 + 15*1 = 1023 Opérations arithmétiques Mêmes principes que ceux utilisés en base 10 11111111 255 + 1 1 1 1 1 1 1 1 + 255 1 1 1 1 1 1 1 1 0 retenue 111111110 510 FF +FF 110 1FE 255 + 255 retenue 510 X 1 0 1 1 0 1 A CORRIGER 1 0 1 1 0 1 1 0 1 1 1 0 0 1 Dans l’ordinateur, les opérations sont faites en base 2 Il existe aussi des opérations logiques (Cours n°3) Représentation des nombres Plan Les nombres sont codés en binaire Pour les nombres fractionnaires on écrit la partie entière en binaire on garde la virgule la partie décimale se décompose en puissances négatives de 2 Exemple : 0,7510 0,75 * 2 = 1,5 0,5 * 2 = 1 Bases numération en base b opération arithmétiques et conversions représentation des nombres Codage (on garde 1 reste 0,5) (on garde 1 reste 0 : terminé) 0,7510 = 0,112 = 1 * 2-1 + 1 * 2-2 = ½ + ¼ Types d’informations Les types d’informations directement traitées par un processeurs sont : Les données entiers : entiers naturels et entiers relatifs flottants : décrivent les réels, simple et double précision caractères le codage de ces trois types est défini par des standards (normes spécifiées par des organisations internationales) Les instructions leur codage est spécifique d’un processeur codage des entiers codage des réels codage des caractères L’information Dans un ordinateur, l’information est numérisée (digitale) L’information est la connaissance d’un état parmi un nombre fini d’états possibles Une information non numérisée est une information analogique : une grandeur physique continue (tension ou courant) L’unité de mesure de l’information est le bit un bit est la quantité d’information liée à la connaissance d’un état parmi deux un bit d’information peut être représenté par un digit binaire prenant les valeurs 0 ou 1 rappel : avec n bits, on peut représenter 2n états Codage : dépassement de capacité Codage des entiers naturels Codage = représentation avec un nombre limité de bits Entiers naturels (unsigned en C) codés sur un nombre d’octets fixé (un octet = 8 bits) Problème pour le dépassement de capacité Exemple pour les entiers naturels Représentation Codage sur 8 bits 10101010 +11000000 170 + 192 10101010 +11000000 101101010 362 101101010 généralement 1, 2 (short en C) ou 4 (int ou long en C) Sur un octet on peut coder les nombres de 0 à 255 (28 possibilités) : attentions aux dépassements (overflow) deux possibilités : ignorer l’overflow (tourne) ou provoquer l’exécution d’une routine particulière Nombre représenté en base 2, les bits sont rangés dans des cellules correspondant à leur poids, on complète à gauche par des 0 128 64 32 16 362 est trop petit pour être codé sur 8 bits 8 4 2 1 0 0 0 0 1 1 0 1 Codage des entiers relatifs Complément à deux Problème : coder le signe du nombre La représentation de –x est obtenue par le complément à deux de x Idée simple : introduire un bit de signe (0 : + ; 1 : -) sur 4 bits : 0110 = 6 et 1110 = - 6 sur n bits on code [-(2n-1-1),2n-1-1] : car on utilise n-1 bits pour coder le nombre Limitations de ce type de solution deux représentations pour 0 : 0000 ou 1000 addition difficile alors que c’est l’opération la plus utilisée (extraction du signe, test pour faire une addition ou une soustraction, calcul du nouveau signe) Pour simplifier l’addition on représente les entiers négatifs en complément à 2 on code en binaire sa valeur absolue on complémente (inverse) tous les bits on ajoute 1 Exemple : pour x = 22 sur 1 octet X= -X = 0 0 0 1 0 1 1 0 : on complémente 1 1 1 0 1 0 0 1 : on ajoute 1 11101010 Le premier bit d’un nombre indique son signe, s’il est négatif, son complément permet de retrouver sa valeur absolue Complément à 2 et entiers relatifs Entiers relatifs : exemple 000 0 110 -2 nombre n’a pas d’opposé : sur n bits 2 010 101 -3 soustraction : on complémente la deuxième opérande et on effectue une addition addition et soustraction : un seul circuit réalisant l’addition on ne considère pas le signe des nombres Représentation non complètement symétrique : le plus petit 1 001 111 -1 En machine les nombres négatifs sont directement codés en complément 3 Algorithme d’addition traditionnel avec les deux méthodes 1 00000001 +10000001 le plus grand entier positif est le plus petit entier négatif est - 2n-1 2n-1-1 011 -4 100 retenue 10000010 +1 –1 = -2 la méthode simple du bit de signe ne fonctionne pas Codage des réels : virgule flottante Par exemple codifié 3,25 qui s’écrit (11,01)2 Mantisse et exposant Exposant placé avant la mantisse pour simplifier les comparaisons (pour ceci il ne doit pas être représenté en complément à deux : 2-1 > 2) sans signe mais biaisé de 127 (simple précision) : Depuis les années soixante : virgule flottante flottant stocké sous la forme M * BE M : Mantisse ; B : Base ; E : Exposant exemple : 123 . 103 = 123 000 Représentation IEEE 754 (signe 1 bit, exposant et mantisse sur 32 ou 64 bits pour simple et double précision) SM 00000000 +1 –1 = 0 la méthode du complément à deux fonctionne Signe : bit de poids fort (0 = + ; 1 = -) première machine = virgule fixe : nombre séparé en deux parties (chiffres avant et après la virgule) SM : signe de la mantisse : 1 bit Eb : exposant biaisé : 8 ou 11 bits M : Mantisse : 23 ou 52 bits 00000001 +11111111 Eb M Eb = 0 ⇒ E = 0 – 127 = -127 Eb = 255 ⇒ E = 255 – 127 = 128 les exposants 128 (erreur) et 0 (nb dénormalisé) sont interdits Mantisse normalisée : bit de poids fort n’est pas 0 et un seul chiffre avant la virgule ex : 11,01 = 1,101 * 21 Évaluation d’un réel SM Eb Opérations M f1f2…fn Comme le bit de poids fort de la mantisse est nécessairement 1 : on ne l’indique pas (gaspillage de place), il est implicite Mantisse il faut que les exposants aient la même valeur exemple : 3 * 103 + 9,98 * 105 = on dénormalise : 3 * 103 = 0,03 * 105 on additionne les mantisses : 0,03 + 9,98 = 10,01 on normalise : 10,01 * 105 = 1,001 * 106 Multiplications et divisions partie fractionnaire = f1f2 …fn ⇒ m = 1,f1f2…fn nombre x = (-1)SM * 1,M * 2Eb-127 Exemple x = (-2,5)10 = -1,01*212 Additions et soustractions (SM = 1 ; Eb = 1000 0000 ; M = 01) Codage des caractères Caractères : symboles alphanumériques (& , . A 5 …) données non numériques (l’addition n’a pas de sens) comparaison ou tri utile table de correspondance entre les nombres et les caractères Code ASCII (American Standard Code for Information Interchange) 7 bits pour représenter les caractères (ASCII étendu = 8 bits) 0 (00) à 31 (1F) : caractères spéciaux : sauts, bips… 48 à 57 : chiffres dans l’ordre (valeur = 4 bits de poids faible) 65 à 90 les majuscules et 97 à 122 les minuscules (on modifie le 5ème bit pour passer des majuscules aux minuscules : +32)… En machine on accède aux mots par octet ASCII étendu : caractères accentués… Compatibilité : nécessaire d’expliciter le codage utilisé : iso-latin-1 on additionne ou on soustrait les exposants on multiplie les mantisses on normalise le résultat Nombre infini de valeurs dans un intervalle : codées avec un nombre fini de bits ⇒ problème de précision (arrondi) Code ASCII Plan Architectures des ordinateurs Cours 3 Algèbre de Boole et circuits logiques Algèbre de Boole Électronique Circuits combinatoires UAL Circuits séquentiels : bascules Application des bascules Logique des propositions Notion ensembliste a ∪b Proposition = énoncé vrai ou faux R a : les élèves sont présents b : le professeur est présent cours si a et b R a a Combinaison par des connecteurs a ¬ (non logique) ∧ (et logique) ∨ (ou logique non exclusif) p q p∨q p∧q p ¬p V V V V V F V F V F F V F V V F F F F F tables de vérités a ∩b R a b b Passage à l’algèbre de Boole Il y a d’autres connecteurs et quelques lois dans la logique des propositions : ¬ a ∧ ¬ b = ¬ (a ∨ b)… a b ¬a ¬b ¬a∧¬b a ∨b ¬ (a ∨ b) V V F F F V F V F F V F V F F V V F F V F F F V V V F V Il existes 16 fonctions à deux variables : toutes ne sont pas intéressantes a+b a+b ab ab a⊕b a⊕b 1 0 1 0 1 1 0 0 1 1 0 0 1 0 0 1 1 0 1 1 0 1 0 0 1 a b 0 0 0 0 1 1 1 a∨b ⇒ a+b Ou exclusif ou xor a ⊕ b = ab + ab a ∧ b ⇒ a.b Non ou ou nor a+b ¬a ⇒ a = 1 − a Non et ou nand ab Georges Boole a exprimé la logique des propositions en termes algébriques Claude Shannon a proposé : V = 1 et F = 0 Algèbre de Boole Opérations de base Toutes les fonctions peuvent s’exprimer à l’aide des trois opérations logiques et, ou, non Avec n variables on peut construire 2n fonctions Une fonction à trois variables peut se décomposée en deux f(a,b,c) = f(0,b,c) si a=0 et f(a,b,c) = f(1,b,c) si a=1 f(a,b,c) = a.f(1,b,c) + a.f(0,b,c) groupe logique complet = ensemble de fonction à partir desquels il est possible de réaliser toutes les fonctions {et,ou,non}… Fonctions à n variables décomposables et fonctions à 2 variables exprimable avec {et,ou,non} ⇒ récurrence… L’algèbre de Boole se construit sur les booléens à partir des trois opérations internes : +, * et Théorèmes et axiomes (1) Théorème des constantes a+0= a a +1 = 1 a×0 = 0 a ×1 = a a⊕0 = a a ⊕1 = a a×a = a a⊕a = 0 Idempotence a+a =a Complémentation a + a =1 a×a = 0 a ⊕ a =1 Commutativité a+b =b+a a×b = b× a a⊕b = b⊕a Théorèmes et axiomes (2) Table de vérité et équation Pour concevoir un circuit, il faut le modéliser. Distributivité on utilise une table de vérité on obtient une équation qu’on simplifie (algébrique ou Karnaugh) on trace le schéma électrique du circuit a + (bc) = (a + b)(a + c) a(b + c) = ab + ac Associativité a + (b + c) = (a + b) + c = a + b + c a(bc) = (ab)c = abc Théorème de De Morgan éléments constitutifs d’un ordinateur : exclusivement portes nand ou bien nor (système complet) Table de vérité : présente toutes les combinaisons possibles des n entrés (2n lignes) et les états de sortie correspondant Une fois la table de vérité écrite, il faut la transformer en équation logique ab = a + b a + b = a×b somme (fonction ou) de produit (fonction et) Équation : exemple Simplification algébrique de l’équation a b F(a,b) 0 0 1 0 1 0 1 0 1 F (a, b) = a.b + a 1 1 1 F (a, b) = ((a.b).a ) F (a, b) = a.b + a.(b + b) Diagrammes de Karnaugh Table de Karnaugh : principe 1. 2. 3. F (a, b) = (a + b).a F(a,b)=1 si F (a, b) = a.a + b.a a=0 et b=0 soit a=1 et b=1 donc si a.b=1 a=1 et b=0 soit a=1 et b=1 donc si a.b=1 a=1 et b=1 donc si a.b=1 F(a,b) = a.b+a.b+a.b 4. F (a, b) = b.a F ( a, b) = b + a F ( a, b) = b + a départ : somme de produits où chaque produit doit contenir toutes les variables : (a+a)b = b chaque colonne diffère de sa voisine d’un seul littéral les tables de Karnaugh sont à deux dimensions : on regroupe des variables on regroupe les 1 en morceaux rectangulaires plus grands morceaux possibles moins de morceaux possibles nouveau morceau que s’il permet de regrouper des 1 non encore regroupés la ligne du haut et du bas ainsi que colonne de droite et de gauche sont adjacentes Morceau = produit de variable : variable et son inverse dans le même morceau = élimination de la variable Karnaugh : exemple n°1 F (a, b) = a.b + a.b + a.b Karnaugh : exemple n°2 F (a, b) = a.b.c + ab + abc F (a, b) = a.b.c + ab(c + c) + abc F (a, b) = abc + abc + abc + abc a b 1 b 1 a 0 1 a bc 1 bc 1 bc 1 bc 0 a 0 0 1 0 F ( a , b) = b + a Portes et circuits logiques F (a, b) = ac + bc Portes logiques Un ordinateur travaille en base 2 Électroniquement 0 correspondait à une tension de 0 à 0,8V et 1 à une tension de 2,8 à 2,5V (tensions données par les constructeurs de composants) Toute fonction binaire peut être représentée par une expression booléenne Tout circuit électrique ou électronique à deux valeurs de tension peut être représenté par une expression booléenne Préférable de représenter les circuits par des symboles logiques et non par des expressions booléennes Correspondance entre les différentes fonctions logiques (+,*…) et des symboles appelés portes logiques NON a OU a+b ET a×b OU exclusif XOR a⊕b Portes logiques et circuits a×b a Portes logiques : mise en série a+b NON OU NOR a×b NON ET NAND a⊕b ID a⊕b a+b Schéma Système complet (1) Exemple du schéma électrique de la fonction a b F(a,b) 0 0 1 F ( a, b) = a.b + a.b + a.b 0 1 0 1 0 1 F ( a, b) = b + a 1 1 1 Porte NAND = la plus simple à réaliser du point de vue technologique. Possible de réaliser toutes les fonctions logiques en utilisant uniquement NAND (http://www.univ-lemans.fr/enseignements/physique/02/electro/portes2.html) ET OU b a NON XOR Système complet (2) Plan Algèbre de Boole Électronique Circuits combinatoires UAL NON OU Représentation des assemblages de portes NAND (TTL : 7400 ou CMOS : 4011) qui réalisent les différentes fonctions logiques Cristal et dopage Trois type de cristaux (structures régulières d’atomes) Isolants : dioxyde de Silicium (SiO2) Conducteurs : Cuivre, Aluminium, Or… Semi-conducteurs : Silicium, Germanium, Arséniure de Gallium isolant à très basse température et conducteurs sinon Dopage : insérer des atomes d’un matériau A dans un cristal d’atomes B = modification de la conductivité du cristal négatif : on introduit un excès d’électrons dans le cristal. Exemple : un excès d’un atome de Phosphore dans un cristal de Silicium divise par 30000 sa résistivité positif : on retire des électrons le Silicium est facilement dopable Circuits séquentiels : bascules Application des bascules Transistor à effet de champ MOS Transistor à canal N : à l’intérieur d’un substrat faiblement dopé P on délimite 2 zones fortement dopées N (source et drain) espacée d’une distance L à la surface du substrat (entre source et drain) on dépose une couche d’isolant (dioxyde de Silicium) puis de Silicium dopéP Temps de réponse Temps de Propagation (Propagation Delay) passage de l' état logique "0" à l' état logique "1", et inversement ne sont pas instantanés mais prennent un temps : tPLH temps de propagation LOW to HIGH tPHL = temps de propagation HIGH to LOW . Ex : tPLH = 8 ns pour le 74LS21 signal électrique : 200 000 km/s dans un conducteur mais 2 km/s dans un semi-conducteur Transistor à canal P Même principe mais bloquant si VG = 5V passant sinon Tensions des circuits électronique de l’ordre de 3,3 V ou 5 V pour représenter les valeurs logiques (1 et 0) il est impossible de prendre 0V pour 0 ou 5V pour 1 (bruits parasites) 0 logique : tension comprise entre 0 et 0,75 V 1 logique : tension comprise entre 4,5 et 5 V Puissance consommée La puissance consommée " p" en mW par un boîtier dépend de sa fréquence d' utilisation et du nombre d' opérateurs utilisés . Ex : 2mW par opérateur pour le 74LS21 Portes logiques on peut modéliser un transistor sous forme d’un circuit courant à gauche = active l’électro-aimant = ferme l’interrupteur Circuits intégrés Plaquette de Silicium contenant : A partir de ce dispositif on peut réaliser des portes de base (ET, OU…) Portes logiques : regroupées dans des circuits intégrés (2 types de technologies différentes TTL ou CMOS) des éléments actifs : transistor (amplification de tension) des éléments passifs : résistances, condensateurs, diodes. entre 5 et 500 mm² : peut contenir plusieurs million d’éléments Les circuits intégrés (chip) peuvent être classifiés SSI (Small Scale Integration) contenant moins de 100 portes MSI (Medium) : entre 100 et 1000 portes LSI (Large) : entre 1000 et 105 portes VLSI (Very Large) : entre 105 et 107 portes ULSI (Ultra Large) : plus de 107 portes Largeur des connexions entre éléments : influence sur la densité des transistors au mm² (0,13 microns) Introduction aux circuits logiques Plan Portes logiques : réalisées électroniquement par un ou deux transistors Algèbre de Boole Électronique Plusieurs portes logiques forment un circuit logique = circuit intégré Circuits combinatoires circuits combinatoires : ne font que combiner les variables d’entrée selon une table de vérité circuits séquentiels : construits à partir de circuits combinatoires + capacité de mémorisation UAL Circuits séquentiels : bascules Application des bascules La réalisation d’un circuit passe par la recherche des expressions booléennes, puis par leur simplification (règles ou tableau de Karnaugh) Demi-additionneur Addition de deux bits x et y x y S R 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Additionneur complet re Addition de deux nombres R = xy S = x ⊕ y = ( x + y ).xy addition bit à bit considération de la retenue précédente somme de 3 bits = additionneur complet x S y rs Somme S vaut 1 si entre x, y et re (retenue d’entrée) : le nombre de bits à 1 est impaire Retenue de sortie rs vaut 1 si x et y valent 1, ou si l’un des deux vaut 1 alors que re vaut 1 Additionneur complet : circuit x y re S rs 1 1 0 0 1 1 1 1 1 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1 1 0 S = re ⊕ x ⊕ y rs = xy + x.re + y.re rs = xy + re.( x ⊕ y ) re0=0 x0 y0 S0 rs0 x1 y1 S1 rs1 xn-1 yn-1 Temps : (n+0,5)*T = linéaire Anticipation de retenue Sn-1 rsn-1 Incrémenteur Ajouter ou retrancher 1 : opération fréquente d’un processeur partie complexe : calcule en un temps très court toutes les retenues à partir des différents bits à additionner Anticipation de retenue le calcul sur chaque bit se fait de façon différée rang 0 en premier puis rang 1 avec la retenue du rang 0… si un additionneur 1 bit met 1T pour calculer la retenue et 1,5T pour le résultat rs0 à T et S0 à 1,5T rs1 à 2T et S1 à 2,5T rsn-1 à nT et Sn-1 à (n+0,5)T Additionneur 2n bits : anticipation S0 rsn-2 xn-1 yn-1 Forme la plus simple : propagation de retenue Temps de calcul Un additionneur se réalise à l’aide d’additionneurs 3 bits mis bout à bout x0 y0 Additionneur 2n bits : propagation Sn-1 rsn-1 Temps de calcul si un additionneur 1 bit met 1,5T pour calculer le résultat et si l’anticipation de retenue met 3T Temps : 4,5T = constant utiliser l’addition : utilisation non optimale Exemple : incrémenteur 4 bits Multiplexeur Multiplexeur / Demultiplexeur Permet d’envoyer sur la sortie (C) l’état d’une entrée (A) ou de l’autre (B) en fonction d’un signal de sélection (S) A B S C 0 X 0 0 1 X 0 1 X 0 1 0 X 1 1 1 A B 0 Multiplexeur à deux et 2n entrées C = A.( B + B).S + ( A + A).B.S C = A.S + B.S Demultiplexeur : aiguille l’entrée sur la sortie n°S C 1 Plan UAL : principe UAL : Unité Arithmétique et logique effectue les opérations de bases (arithmétiques et logiques° un code d’entrée détermine la partie du circuit qui va effectuer les opérations Algèbre de Boole Électronique Circuits combinatoires UAL 1 bit : opération ET / OU en fonction d’un signal Op le circuit calcul a ET b ou bien a OU b UAL Circuits séquentiels : bascules Application des bascules Op S 0 a et b 1 a ou b S = a.b.Op + (a + b).Op S = x.Op + y.Op ⇒ multiplexeur UAL : ET, OU, + UAL n bits UAL 2 bits : opération ET / OU / + on ajoute un additionneur Op1 Op0 S 0 0 a et b 0 1 a ou b 1 0 a+b 1 1 libre UAL : représentation UAL chargée des opérations logique : AND, OR, XOR, NOT, CMP, LSL, LSR, ASR (décalages) arithmétiques : ADD, SUB, MUL, DIV, INC (+1), DEC (-1) Traitement de données codées sur n bits UAL : autre représentation UAL 8 bits Plan Circuits séquentiels : définition Définition circuit séquentiel : pour la même combinaison des données, la sortie Algèbre de Boole peut prendre diverses valeurs en fonction du temps mémorisation des états passés table de vérité : on trouve en plus des entrées, la valeur de sortie à l’état précédent Électronique Circuits combinatoires Les circuits séquentiels de base sont les bascules UAL particularité : deux états stables = conservation de l’état de leur sortie Circuits séquentiels : bascules même si la combinaison des signaux d’entrée l’ayant provoquée disparaît Application des bascules Horloge : composant passant d’un niveau haut à bas (0101010…) bascules synchrones (avec horloge) insensibles aux bruits entre deux tops ou asynchrone (sans) Bascules RS (1) Bascules RS (2) Circuit le plus simple une entrée S (Set – mise à un) et une sortie R (Reset – remise à 0) qui permettent de changer l’état de la bascule bascule asynchrone : pas d’horloge Q = R.S + R.S .Q − R S Q- Q 0 0 0 0 Q=Q- 0 0 1 1 Q=Q- 0 1 X 1 Mise à 1 1 0 X 0 Effacement 1 1 X ? Interdit Mise à 1 et mise à 0 Effet mémoire représenté par le retour des sorties Bascules RS fréquemment utilisées dans les circuits antirebond. Q = R.( S + S .Q −) R S Q- Q Q = R.( S + Q −) 0 0 0 0 Q=Q- 0 0 1 1 Q=Q- 0 1 X 1 Mise à 1 1 0 X 0 Effacement 1 1 X ? Interdit Q = ( R.( S + Q −)) Q = ( R + ( S + Q −)) Q = R.S + R.S .Q − Q = S .( R + R.Q −) = S .( R + Q −) Q = ( S .( R + Q −)) = ( S + ( R + Q −)) Bascules RSC ou RSH Bascule RS asynchrone : deux problèmes Bascules DH Pour supprimer l’état indéterminé (Horloge ou Clock) on utilise un signal D qui va être mémorisé dans la bascule RS D permet de fabriquer deux signaux R et S (différents de 11) H : signal d’horloge permet de mémoriser le signal dans une plage de temps fixée (quand H vaut 1) sensibilité aux bruits parasites (prise en compte des entrées à tout moment) synchronisation (quand peut-on prendre les données) Solution : R et S pris en compte à des instants déterminés à l’aide d’une horloge (période plus grande que le temps de stabilisation) C R S Q 1 0 0 Q- 1 0 1 1 1 1 0 0 1 1 1 ? 0 X X Q- Bascules DH sur front On mémorise à un instant précis front descendant : signal d’horloge passe de 1 à 0 fonctionnement de bascule synchrone Signal d’horloge = 1 : D est stocké dans la 1ère bascule Passage à 0 : le signal issu de la 1ère bascule est stockée dans la 2ème R = H .D S = H .D H D Q- Q 0 X 0 0 Q=Q- 0 X 1 1 Q=Q- 1 1 X 1 S=1;Q=1 1 0 X 0 R=1;Q=0 Bascules D avec validation Branchement de plusieurs bascules sur un bus de données attention : une seule sortie validée à un instant donnée on ajoute, en sortie de bascule, un interrupteur commandé par un signal de validation la sortie de bascule est reliée à l’extérieur si Val = 1 Val H D Q 1 X X Q- 1 ↓ 1 1 1 ↓ 0 0 0 X X NC Bascules complètes Registres Elles possèdent à la fois des entrées asynchrones : PRESET (=0 mise à 1) et CLEAR (=0 mise à 0) synchrones : changement de sortie qu’à des moments précis (H,D) Elles constituent les mémoires statiques de l’ordinateur Application des bascules : utilisées pour leurs effets mémoire, chacune permet de stocker un bit Registres parallèles synchrones (bascules DH sur front montant) parallèles asynchrones (PRESET et CLEAR) Série (bascules connectées en séries) : pour transmettre des informations n bit sur un seul fil : modem, imprimante série… Val H D PRESET CLEAR Q 1 X X 1 1 Q- 1 ↓ 1 1 1 1 1 ↓ 0 1 1 0 1 X X 0 1 1 1 X X 1 0 0 Décalage 1 X X 0 0 ? rotation… 0 X X X X NC compteurs binaires Registres : exemple Registres : repérage // synchrone // asynchrone Dans un microprocesseur les données et le résultat d’une opération UAL sont stockés dans les registres (2 ports d’entrée et 1 port de sortie) un registre est repéré par un numéro pour la lecture on a besoin de deux multiplexeurs à 2n entrées série Mémoire SRAM Plan SRAM (Static Random Access Memory) composée d’un ensemble de 2n lignes de données de m bits signal Lecture(0)/Écriture(1) en mémoire un décodeur permet de valider une ligne de bascules (un registre) SRAM : 1 bit = 1 bascule = 2 portes NOR = 4 transistors mémoire très rapide ≠ DRAM = 1 transistor + 1 condensateur qui se décharge vite et qui doit être périodiquement rechargé (Dynamic) DRAM moins rapide que SRAM car on ne peut pas faire d’accès pendant le temps de rechargement mais moins chère. Algèbre de Boole Électronique Circuits combinatoires UAL Circuits séquentiels : bascules Application des bascules SRAM : registres processeur, mémoire cache DRAM : mémoire centrale Multiplieur V1 (1) Multiplieur V1 (2) Multiplication simple : multiplication, décalage, addition 9*5=1001*0101=1001+00000+100100+0000000=101101=45 Algorithme : Pour i de 1 à Taille des données Si (bit 0 de n1 = 1) alors produit = produit + n2 Finsi Décaler à gauche n2 Décaler à droite n1 Multiplicande Multiplicateur Produit 1001 101 1001 10010 10 1001 100100 1 001001+100100=101101 1001000 0 101101… Si n1 et n2 sont codés sur 32 bits, on a besoin de : un registre 64 bits pour décaler n2 un registre 32 bits pour n1 une UAL 64 bits pour le calcul un registre 64 bits pour stocker le résultat Multiplieur V2 (1) Pour limiter le matériel : sur les 64 bits du registre contenant n2 : 32 utilisés Algorithme : Pour i de 1 à Taille des données Si (bit 0 de n1 = 1) alors Multiplieur V2 (2) on a besoin de : deux registres 32 bits pour n1 et n2 une UAL 32 bits pour le calcul un registre 64 bits pour stocker le résultat 32 bits MSB du produit=32 bits MSB du produit+n2 Finsi Décaler à droite produit Décaler à droite n1 Multiplicande Multiplicateur Produit 1001 101 32 bits MSB+1001=1001 …010010000000… 1001 10 32 bits MSB+0000=0100 …00100100000000000… 1001 1 32 bits MSB+1001=1011 …0101101000000000000… À la fin de la 32ème itération …000101101 Multiplieur V3 (1) Dans le résultat : les 32 bits de poids faible ne sont pas utilisés au début : on peut y placer n1 décalé en // au produit Algorithme : Pour i de 1 à Taille des données Si (bit 0 de n1 = 1) alors Multiplieur V3 (2) Multiplicande Produit 1001 32 bits LSB 000000….0101 32 bits MSB+1001=1001 …010010000…0010 1001 32 bits LSB 1000….00010 32 bits MSB+0000=0100 …0010010000…001 1001 32 bits LSB 01000….0001 32 bits MSB+1001=1011 …01011010000…001 32 bits MSB du produit=32 bits MSB du produit+n2 Finsi Décaler à droite produit Décaler à droite n1 on a besoin de : un registre 32 bits pour décaler n2 une UAL 32 bits pour le calcul un registre 64 bits pour stocker le résultat et n1 À la fin de la 32ème itération 00…001001101 Additionneur de réels (1) Additionneur de réels (2) Pour réaliser l'addition de n1 + n2 on utilise l'algorithme suivant: Si (exposant n1 > exposant n2) alors décaler la mantisse de n2 à droite de (exposant n1 - exposant n2) rang(s) sinon décaler la mantisse de n1 à droite de (exposant n2 - exposant n1) rang(s) Finsi Additionner les mantisses de n1 et n2 Si retenue sortante de l'addition = 1 alors ajouter 1 à l'exposant et décaler la mantisse d'un rang à droite FinSi Remarque : Au niveau des décalages de la mantisse, ce sont les bits de la mantisse qui sont décalés à droite, ce qui correspond à un décalage à gauche de la virgule. Additionneur de réels : exemple Exemple 1 Additionneur de réels : exemple Exemple 2 n1 = 2,5 = 1,01 l'exposant = 128 et la mantisse normalisée = 01 n2 = 0,25 = 1,0 l'exposant = 125 et la mantisse normalisée = 1 n1 = 2,5 = 1,01 l'exposant = 128 et la mantisse normalisée = 01 n2 = 2,5 = 1,01 l'exposant = 128 et la mantisse normalisée =01 Lors de l'addition l'exposant de n1 > exposant de n2, alors la mantisse et le bit de normalisation de n2 sont décalés à droite de 128-125 = 3 rangs. lors de l'addition l'exposant de n1 = exposant de n2, alors la mantisse et le bit de normalisation de n2 sont décalés à droite de 0 rang. n1 = 1,01 (1.25 21) et maintenant n2 = 0,001 (0,125 21) soit au total 1,011 (1,375 21) soit 2,75, il n'y a pas de changement de l'exposant à faire dans ce cas. n1 = 1,01 et maintenant n2 = 1,01 soit au total 10,1. Comme il y génération d'une retenue, il faut ajouter 1 à l'exposant (qui vaut 2 pour avoir un chiffre avant la virgule et décaler la mantisse de 1 rang à gauche (1,01 x 22 = 5) Architectures des ordinateurs Cours 4 Plan Langage machine : assembleur 8086 Architecture d’un processeur Processeur 8086 Assembleur Pile et Procédures Systèmes d’exploitation et appels systèmes UAL : Rappel Unité chargée Des opérations arithmétiques : ADD (+), SUB (-), MUL (*), DIV (:), INC (+ 1), DEC (- 1) Des opérations logiques : AND, OR, XOR, NOT, CMP LSL, LSR, ASR (décalages) Architecture de Von Neuman Chemin des données Les composants Registres Adresse, Donnée INST, IP, SP , constantes (0, 1, ...), Registres A, B, C, … Registres tampons (TampA, TampB) Registre des drapeaux de l'UAL (Flags) 2 Bus Signaux de commande Bus 1 : entrée (RO), sortie (AI, TA, TB) UAL : M (sélection de Donnée ou TampA), C (choix de l'opération), FI (mise à jour des Flags) Bus 2 : sortie (DI I, RI) Lecture/ Écriture : DI E , DO Séquencement des actions Exemple : Reg A ← Reg A + Reg B Signaux μ- instruction = 5 sous- cycles: Actions : Transfert (Bus 1) Reg A →Tamp A Transfert (Bus 1) Reg B → Tamp B Choix UAL (C= 100, M= 0, Flags) Transfert (Bus 2) UAL → Reg A μ- instruction RO10 , TA RO11 , TB C 2C1C 0 ,M, FI RI10 Une micro- instruction = ensemble des actions faisant fonctionner une fois le chemin de données 1. Transfert n° 1 par le Bus 1 2. Transfert n° 2 par le Bus 1 3. Opération UAL 4. Transfert résultat par le Bus 2 (+ observation des FLAGS) 5. Accès à la mémoire (READ / WRITE) μ- programmes (1) μ- programmes (2) 1. Faire l’addition de 2 registres et mettre le résultat dans l’un des deux ex : IP ← IP + Reg1 3. Envoyer le contenu d’une case mémoire d’adresse XX dans un registre : (Hypothèse: l’adresse XX est dans un autre registre) ex : RegA ← [RegB] 10: TampA ← IP ; TampB ← Reg1 ; UAL ← TampA+ TampB ; IP ← UAL; (signaux: RO1,TA ; RO4,TB ; C= 100 , M= 0 , FI ; RI1 ) – il faut commencer par mettre RegB dans Adresse et déclencher une opération de lecture (Un accès à la mémoire (READ / WRITE) prend 2 cycles) ; ; ; READ 10: Adresse ← RegB ; (signaux: AI , TB ; ; ; ; DIE ) 11: ; ; ; ; READ 2. Faire des sauts conditionnels : Conditions possibles = FLAGS en sortie de l ’UAL (Bus 2) ex : Si RegA= 0 aller en 30 10: TampA ← RegA ; TampB . ← Reg0 ; UAL . ← TampA+ TampB; on ZF jmp 30 ; (signaux: RO10,TA ; RO3,TB ; C= 100 , M= 0 , FI ; ) – la valeur est ensuite disponible dans Donnée . Pour l ’envoyer dans un autre registre, il faut passer par l ’UAL 12: (signaux: ;UAL ← Donnée ; RegA ← UAL ; ; C= 001, M= 1 ; RI10 ) ; ; Il faut faire une opération pour calculer ZF mais UAL ← TampA n ’en est pas une Optimisation L’unité de commande Occuper les bus le + possible : ex : RegA ← [RegB] 10: Adresse ← RegB 11: 12: ; ; ; ; ; ; UAL ← Donnée L’unité de commande exécute les opérations suivantes : ; ; READ ; ; READ ; RegA ← UAL ; IP ← IP + Reg1 13: TampA ← IP ; TampB ← Reg1; UAL ← TampA+ TampB; IP ← UAL; Ici, on peut faire les 2 opérations en même temps 10: Adresse ← RegB ; ; ; ; READ ; TampB ← Reg1 ; UAL ← TampA+ TampB ; IP ← UAL ; READ 11: TampA ← IP 12: ; ; UAL ← Donnée ; RegA ← UAL ; Lecture du code de l’opération Lecture des arguments Traitement Sauvegarde du résultat Passage à l’instruction suivante μ-programme de lecture du code de l’opération (l’opération à effectuer est en mémoire à l’adresse IP) - lecture de l ’opération 0: Adresse ←IP ; ; ; ; READ - on en profite pour passer à la case mémoire suivante 1: TampA ← IP ; TampB ← Reg1 ; UAL ← TampA+ TampB ; IP ← UAL ; READ - exécution du μ -programme correspondant à l’opération 2: ; ; UAL ← Donnée ; INST ← UAL, jmp μ -Prog[ INST]; Exemple 1 Add RegA, XX 1. Exemple 1: code (RegA ← RegA + [XX]) L ’UC lit le « codop » de Add RegA dans la mémoire et déclenche le μprogramme correspondant (0: 1: 2:) 2. Exécution du μ -programme[ Add RegA, XX] 2. 1 : Lecture de l’argument XX en mémoire lecture de la valeur XX en mémoire (INST ← [IP]) lecture de la valeur située à l’adresse XX (Donnée ← [INST]) 2.2 : Traitement de l’opération (RegA ← RegA + Donnée) 2.3 : Sauvegarde du résultat 2.4 : Passage à l ’instruction suivante (IP ← IP + 1) - lecture de l ’opération 0: Adresse ← IP ; ; ; ; READ - on en profite pour passer à la case mémoire suivante 1: TampA ← IP ; TampB ← Reg1 ; UAL ← TampA+ TampB ; IP ← UAL ; READ - exécution du μ -programme correspondant à l’opération 2: ; ; UAL ← Donnée ; INST ← UAL, jmp μ -Prog[ INST]; - lecture de la valeur de XX en mémoire 20: Adresse ← IP ; ; ; 21: TampA ← IP ;TampB ← Reg1 ; UAL ← TampA+ TampB ; IP ← UAL 22: ; ; UAL ← Donnée ; INST ← UAL ; READ ; READ ; - lecture de la valeur située à l’adresse XX 23: Adresse ← INST ; 24: ; ; ; ; ; ; READ ; READ Traitement de l’opération (RegA ← RegA + Donnée) ; TampP← RegA ;UAL ← Donnée+TampB ;RegA ← UAL, jmp 0 25: ; Exemple 2 JZ xx (va en IP+ xx+ 1 si le résultat de l ’UAL est nul) 1. L ’UC lit le « codop » de JZ dans la mémoire et déclenche le μprogramme correspondant (0: 1: 2:) 2. Exécution de μ -programme[ JZ XX] 2. 1 : Lecture de l ’argument XX en mémoire (Donnée ← [IP]) 2. 2 : Traitement de l ’opération (Test sur ZF, IP ← IP+ 1+ xx) (2.3 : Sauvegarde du résultat) 2. 4 : Passage à l ’instruction suivante si la condition n ’est pas réalisée Exemple 2 : code 1. L ’UC lit le « codop » de JZ dans la mémoire et déclenche le μprogramme correspondant (0: 1: 2:) 0: Adresse ← IP ; ; ; ; READ 1: TampA ← IP ; TampB ← Reg1 ; UAL ← TampA+ TampB ; IP ← UAL ; READ 2: ; ; UAL ← Donnée ; INST ← UAL, jmp μ -Prog[ INST]; 2. Exécution de μ -programme[ JZ XX] 2. 1 : Lecture de l ’argument XX en mémoire (Donnée ← [IP]) 2. 2 : Traitement de l ’opération (Test sur ZF, IP ← IP+ 1+ xx) (2.3 : Sauvegarde du résultat) 2. 4 : Passage à l ’instruction suivante si la condition n ’est pas réalisée 30: Adresse ← IP ; ; ; on ZF jmp 32 ; READ 31: TampA ← IP ; TampB ← Reg1 ; UAL ← TampA+ TampB ; IP ← UAL, jmp 0 ; 32: TampA ← IP ; TampB ← Reg1 ; UAL ← TampA+ TampB ; IP ← UAL ; READ 33: ; TampB ← IP ; UAL ← Donnée+ TampB ; IP ← UAL, jmp 0 ; Code opération : assembleur Programme en langage machine 80486 implanté à l’adresse mémoire 0100H A1 01 10 03 06 01 12 A3 01 14 Ce programme additionne le contenu de deux cases mémoire et range le résultat dans une troisième Voici une transcription langage symbolique du programme complet. L'adresse de début de chaque instruction est indiquée à gauche (en hexadécimal). Code opération : assembleur Code Op. Octets MOV AX, valeur Symbole B8 3 AX ← valeur MOV AX, [ adr ] A1 3 AX ← contenu de l'adresse adr. MOV [ adr ], AX A3 3 range AX à l'adresse adr. ADD AX, valeur 05 3 AX ← AX + valeur ADD AX, [ adr ] 03 06 4 AX ← AX + contenu de adr. SUB AX, valeur 2D 3 AX ← AX - valeur Adresse Contenu MP Langage Symbolique Explication en francais SUB AX, [ adr ] 2B 06 4 AX ← AX - contenu de adr. 0100 A1 01 10 SHR AX, 1 D1 E8 2 décale AX à droite. 0103 03 06 01 12 0107 A3 01 14 MOV AX, [0110] Charger AX avec le contenu de 0110. ADD AX, [0112] Ajouter le contenu de 0112 a AX (resultat dans AX). MOV [0114],AX Ranger AX en 0114. Fonctionnement de l’UC L ’UC possède un registre spécial pour stocker la μ-instruction en cours On utilise des programmes spéciaux, appelés assembleurs, pour traduire automatiquement le langage symbolique en code machine. Autre représentation (1) Autre représentation (2) Fonctionnement de l’UC A partir du registre de µ-instruction, il faut générer les signaux de commande de l’UAL dans un ordre précis … Séquencement des opérations Chaque partie de μ-INST est reliée à un DCD (ou un DMX) qui déclenchera le bon signal de commande, au bon moment : Ex : R3 = registre destination de la sortie de l’UAL par le Bus 2 (DI I , RI 0 … RI 15 ) Signal d’horloge CK CK i = Sous- cycles de CK correspondants aux sous-cycles des μ-instructions Une fréquence d'horloge d'un microprocesseur à 500MHz donne des cycles élémentaires de 2 nanosecondes. Schéma de l’unité de commande Schéma de l’unité de commande Lorsqu’une instruction arrive dans RI, son Codop est envoyé dans une table de conversion qui indique l’adresse du μProgramme correspondant. Ce μ -Programme est exécuté ligne par ligne : chaque μ instruction est envoyée dans le registre de μ -instruction où sont générés séquentiellement les signaux de commande de l ’UAL Schéma MMI, RMI et MCO MMI ou mémoire de micro-instructions = élément central de la logique de contrôle RMI (son registre associé) contient une micro instruction (tps t) La MMI, généralement une mémoire morte, contient toutes les micro-instructions qui sont nécessaires au processeur pour exécuter les instructions du langage machine. MCO, ou compteur ordinal du microprogramme : Il s'agit d'un registre qui contient l'adresse de la prochaine micro instruction à exécuter c'est-à-dire celle qui doit être placée dans le RMI, seul lieu où une micro instruction peut agir sur le circuit de données. Niveaux de programmation Technologies de processeurs CISC (Intel 8086, Pentium…, Motorola) Complex Instruction Set Computer : calculateur à jeu d'instructions complexe. Caractérise les microprocesseurs qui disposent d'un jeu étendu d'instructions avec de nombreux modes d'adressage. La plupart ne sert que dans des cas relativement rares. Ces instructions complexes nécessitent d'être micro-codées et s'exécutent donc en plusieurs cycles. RISC : IBM/Motorola (PowerPC),SUN (Supersparc), DIGITAL (Alpha) Reduced Instruction Set Computer : calculateur à jeu d'instructions réduit. En utilisateur un jeu d'instructions plus réduit que la technologie CISC, les processeurs RISC peuvent disposer d'un jeu d'instructions entièrement cablé (donc sans microcode) ce qui permet une exécution des instructions en un cycle. La mémoire cache Depuis pas mal d'années, les circuits de mémoire ne sont plus assez rapides pour suivre la cadence des microprocesseurs on intercale entre le microprocesseur et la mémoire RAM, une autre mémoire allant à la même vitesse que le microprocesseur celle-ci est de taille assez réduite car elle coûte bien plus cher que la mémoire RAM standard souvent, il y a deux caches, un pour le programme et un pour les données Le cache processeur cache 80386 0 80486 1 cache interne 8Ko pentium 1 cache interne donnée 8 Ko et 1 cache interne instructions 8 Ko pentium 2 1 cache interne donnée 16 Ko et 1 cache interne instructions 16 Ko 1 cache externe 256 Ko commun au 2 caches internes Augmentation de la taille des bus d’adresses et de données pentium 3 Le micro-processeur est alimenté plus vite Bus d’adresse à 32 ou 64 bits = architecture à 32 ou 64 bits 1 cache interne donnée 16 Ko et 1 cache interne instructions 16 Ko 1 cache externe 256 Ko commun au 2 caches internes Le Pipeline Un pipeline est composé de plusieurs étages chacun de ces étages est dédié à un traitement particulier Dans un processeur sans pipeline, les instructions sont exécutées les unes après les autres Le Pilpeline But : utiliser tous les étages en même temps lorsqu'une instruction est dans un étage, 4 autres instructions sont en cours de traitement. grâce au débit de la mémoire cache de niveau 1 les instructions peuvent s'enchaîner suffisamment vite pour que le pipeline soit constamment alimenté. il ne rentrera une nouvelle instruction dans le pipeline que lorsque l'instruction précédente est passée par tous les étages et est terminée le processeur n'utilise qu'un seul étage à la fois, donc les autres étages sont inactifs. Avec un processeur à 5 étages sans pipeline Processeurs superscalaires Un microprocesseur est de type superscalaire quand il intègre plus d'une unité entière (ALU) en con cœur. les deux unités sont indépendantes et fonctionnent en parallèle, chacune se charge d'exécuter une instruction sur deux. Il est ainsi possible d'exécuter deux instructions par cycle d'horloge. Coprocesseurs mathématiques Jusqu'au 386, celui-ci était parfois assisté par un coprocesseur mathématique optionnel permettant d'accroître les capacités de calcul en virgule flottante (très utilisé par les tableurs et les logiciels de traitement graphique). Aujourd’hui, ce coprocesseur fait partie intégrante du CPU. Plan Efficacité architecturale Croissance du nombre d’instructions exécutées par cycle d’horloge Architecture d’un processeur Processeur Nb d'instructions par cycle d'horloge i386 1/8 i486 1/2 Pentium 1 Pentium Pro 1,5 P4 2,5 Processeur 8086 Assembleur Pile et Procédures Systèmes d’exploitation et appels systèmes Processeurs 80x86 Micro-processeurs 80x86 équipent les PC et compatibles Premiers PC (début 80) = 8086, micro-processeur 16 bits Puis 80286, 80386, 80486, Pentium… Augmentation de la fréquence d’horloge, de la largeur des bus d’adresses et de données Ajout de nouvelles instructions et de registres Compatibilité ascendante Un programme écrit dans le langage machine du 286 peut s’exécuter sur un 386 (l’inverse est faux) En TP on utilisera un assembleur 8086 et on exécutera le programme sur les Pentium de l’IUT Caractéristiques du 8086 Bus de données : 16 bits Bus d’adresse : 20 bits Registres : 16 bits 4 accumulateurs 16 bits Accumulateur (AX) Base (BX) Counter (CX) Accumulateur auxiliaire (DX) Registres accessibles sous forme de 2 info 8 bits AX se décompose en AH (poids fort) et AL (poids faible de AX)… Caractéristiques du 8086 4 accumulateurs 16 bits AX, BX, CX ,DX Registres d’index : Pointeur d’instruction (IP) Index source ou destination(SI, DI) Pointeur de Pile ou de base (SP, BP) 3+1 registres segment : Segment de code (CS) : contient le prog en cours d’exécution Segment data (DS) : contient les données du programme Segment stack (SS) : contient des données particulières Extra Segment (ES) Segmentation de la mémoire Registres de déplacement = sélectionner une information dans un segment. Dans le segment de code CS : le compteur de programme IP joue ce rôle. CS:IP permet d'accéder à une information dans le segment de code. Dans les segments de DS : les deux index SI ou DI jouent ce rôle. Le déplacement peut être aussi une constante. DS:SI ou DS:DI permettent d'accéder à une information dans le segment de données. Dans le segment de pile SS le registre SP (stack pointer) et BP (base pointer) jouent ce rôle. SS:SP ou SS:BP permettent d'accéder à une information dans le segment de pile. Segmentation de la mémoire Largeur du bus d’adresse = 20 bits Possibilité d’adressage mémoire = 220 = 1 Mo Le pointeur d’instruction fait 16 bits Possibilité d’adresser 216 = 64 Ko (ce qui ne couvre pas la mémoire) On utilise deux registres pour indiquer une adresse au processeur Chaque segment débute à l'endroit spécifié par un registre spécial nommé registre segment. Le déplacement permet de trouver une information à l'intérieur du segment. CS:IP : lecture du code d’une instruction (CS registre segment et IP déplacement) DS : accès aux données (MOV AX,[1045] = lecture du mot mémoire d’adresse DS:1045H) Jeu d’instruction (1) Instruction d’affectation (Transfert CPU Mémoire) : MOV Instructions arithmétiques (Opération Acc / Donnée) : INC (incrémentation) : DEC (décrementation) : ADD (addition) : SUB (soustraction) : CMP (soustraction sans sauvegarde) : NEG Instructions logiques : NOT, OR, XOR : AND, TEST (= AND sans sauvegarde) : SHL (SHR), SAL (SAR) : ROL (ROR), RCL (RCR) Jeu d’instruction (2) Branchement Branchements conditionnels Branchements : JMP : JE/ JZ (JNE/ JNZ) : Jump if zero : JO (JNO) : Jump if overflow : JS (JNS) : Jump if sign Comparaison de valeurs AX > BX ? AX < BX ? (complément à 2) JG (JGE) JL (JLE) 1. 2. 3. lire et décoder l'instruction à l'adresse IP; IP ←IP + taille de l'instruction; exécuter l'instruction. Pour modifier le déroulement normal d'un programme l'exécution de l'instruction doit modifier la valeur de IP c'est ce que font les instructions de branchement. On indique au processeur l’adresse de la prochaine instruction On distingue deux catégories de branchements Rappel sur le registre IP Le registre IP du processeur conserve l'adresse de la prochaine instruction à exécuter Le processeur effectue les actions suivantes pour chaque instruction : Besoin de faire répéter au processeur une suite d’instructions Besoin de déclencher une action qui dépend d’un test Utilisation d’une instruction de branchement ou saut CMP AX, BX suivi d ’un test : (entiers naturels) JA ( >= JAE) JB (JBE) Le processeur exécute une instruction en mémoire puis passe à celle qui suit en mémoire : séquentiel le saut est toujours effectué (sauts inconditionnels) il est effectué seulement si une condition est vérifiée (sauts conditionnels). Sauts inconditionnels Principale instruction de saut inconditionnel = JMP L'opérande de JMP est un déplacement, c'est à dire une valeur qui va être ajoutée à IP. L'action effectuée par JMP est : IP = IP + déplacement Le déplacement est un entier relatif sur codée 8 bits. La valeur du déplacement est : déplacement = adr. instruction visée - adr. instruction suivante Sauts inconditionnels : exemple Exemple : le programme suivant écrit indéfiniment la valeur 0 à l'adresse 0140H. La première instruction est implantée à l'adresse 100H. Adresse Contenu MP Langage Symbolique Explication en français 0100 0103 0106 0107 B8 00 00 A3 01 40 EB FC MOV MOV JMP xxx AX, 0 met AX a zéro [140], AX écrit à l'adresse 140 0103 branche en 103 -> instruction jamais exécutée Le déplacement est ici égal à FCH, c'est à dire -4 (=103H-107H). Indicateurs (suite) Indicateurs Les instructions de branchement conditionnels utilisent les indicateurs, bits spéciaux positionnés par l'UAL après certaines opérations. nous étudierons ici les indicateurs nommés ZF, CF, SF et OF. ZF : Zero Flag Cet indicateur est mis à 1 lorsque le résultat de la dernière opération est zéro. Sinon, ZF est positionné à 0. CF : Carry Flag C'est l'indicateur de report (retenue). Il est positionné par les instructions ADD, SUB et CMP (entiers naturels). CF = 1 s'il y a une retenue Sauts conditionnels : exemples SF : Sign Flag SF est positionné à 1 si le bit de poids fort du résultat d'une addition ou soustraction est 1; sinon SF=0. SF est utile lorsque l'on manipule des entiers relatifs, car le bit de poids fort donne alors le signe du résultat. OF : Overflow Flag (Indicateur de débordement) OF=1 si le résultat d'une addition ou soustraction donne un nombre qui n'est pas codable en relatif dans l'accumulateur (par exemple si l'addition de 2 nombres positifs donne un codage négatif). CMP = SUB, mais ne stocke pas le résultat de la soustraction (positionner les indicateurs) CMP AX, 5 : ZF = 1 si AX contient 5, et ZF = 0 si AX ≠ 5. JE Jump if Equal (ou JZ) saut si ZF = 1; JNE Jump if Not Equal (ou JNZ) saut si ZF = 0; JG Jump if Greater saut si ZF = 0 et SF = OF; JLE Jump if Lower or Equal saut si ZF=1 ou SF = OF; JS (JNS) Jump if Sign saut si SF=1; JA Jump if Above saut si CF=0 et ZF=0; JBE Jump if Below or Equal saut si CF=1 ou ZF=1. JB Jump if Below saut si CF=1. JO (JNO) Jump if Overflow saut si OF=1… Décalage et rotations Décalage SHL registre, 1 (Shift Left) Décalage vers la gauche ou vers la droite les bits de l'accumulateur. opérations utilisées pour décoder bit à bit des données ou pour diviser ou multiplier rapidement par une puissance de 2. En effet : décaler AX de n bits vers la gauche revient à le multiplier par 2n De même, un décalage vers la droite revient à diviser par 2n. Ces opérations peuvent opérer sur les registres AX ou BX (16 bits) ou sur les registres de 8 bits AH, AL, BH et BL. Décale les bits du registre d'une position vers la gauche. Le bit de gauche est transféré dans l'indicateur CF. Les bits introduits à droite sont à zéro. SHR registre, 1 (Shift Right) Comme SHL mais vers la droite. Le bit de droite est transféré dans CF. SHL et SHR peuvent être utilisé pour multiplier/diviser des entiers naturels (et non des relatifs car le bit de signe est perdu) SHL, SHR, ROL, ROR, RCL, RCR… Rotations ROL registre, 1 (Rotate Left) Rotation vers la gauche : le bit de poids fort passe à droite, et est aussi copié dans CF. Les autres bits sont décalés d'une position. ROR registre, 1 (Rotate Right) Comme ROL, mais à droite. Décalage et rotations RCL registre, 1 (Rotate Carry Left) Rotation vers la gauche en passant par l'indicateur CF. CF prend la place du bit de poids faible; le bit de poids fort part dans CF. RCR registre, 1 (Rotate Carry Right) Comme RCL, mais vers la droite. RCL et RCR sont utiles pour lire bit à bit le contenu d'un registre7. Opérations logiques 3 opérateurs logiques : ET, OU et OU exclusif. OR destination, source (OU : 1 ou 0 =1 ; 1 ou 1 = 1…) jamais propagation de retenue lors de ces opérations (chaque bit du résultat est calculé indépendamment des autres) Opérations sont de la forme : OR destination, source Opérations logiques destination : registre ou emplacement mémoire (adresse) où doit être placé le résultat. source : constante (adressage immédiat), registre (adressage implicite), ou adresse (adressage direct). OR est souvent utilisé pour forcer certains bits à 1. Par exemple après OR AX, FF00, l'octet de poids fort de AX vaut FF, tandis que l'octet de poids faible est inchangé. AND destination, source (ET : 1 et 1 = 1 …) AND est souvent utilisé pour forcer certains bits à 0. Après AND AX, FF00, l'octet de poids faible de AX vaut 00, tandis que l'octet de poids fort est inchangé. XOR destination, source (OU EXCLUSIF : 1 xor 1 = 0…) OR AX, FF00 ; AX <- AX ou FFOO OR AX, BX ; AX <- AX ou BX OR AX, [1492] ; AX <- AX ou [1492] Codage Les instructions et leurs opérandes (paramètres) sont stockés en mémoire principale La taille totale d'une instruction (nombre de bits nécessaires pour la représenter en mémoire) dépend du type d'instruction et aussi du type d'opérande. Chaque instruction est toujours codée sur un nombre entier d'octets, afin de faciliter son décodage par le processeur. Une instruction est composée de deux champs : le code opération, qui indique au processeur quelle instruction réaliser; le champ opérande qui contient la donnée, ou la référence à une donnée en mémoire (son adresse). XOR est souvent utilisé pour inverser certains bits. Après XOR AX, FFFF, tous les bits de AX sont inversés Codage Selon la manière dont la donnée est spécifiée, c'est à dire selon le mode d'adressage de la donnée, une instruction sera codée par 1, 2, 3 ou 4 octets. Nous distinguerons ici quatre modes d'adressage : Implicite immédiat direct relatif Types d’adressage Adressage implicite ou par registre ADD AX, BX INC AX Pas d’accès mémoire pour les opérandes L'instruction contient seulement le code opération, sur 1 ou 2 octets. L'instruction porte sur des registres ou spécifie une opération sans opérande Types d’adressage Adressage direct ADD AX, [adresse] 2 accès mémoire : adresse puis valeur Le champ opérande contient l'adresse de la donnée en mémoire principale sur 2 octets. Types d’adressage Adressage immédiat ADD AX, valeur 1 accès mémoire pour lire la valeur Le champ opérande contient la donnée (une valeur constante sur 1 ou 2 octets). Exemple : ``Ajouter la valeur 5 à AX''. Ici l'opérande 5 est codée sur 2 octets puisque l'opération porte sur un registre 16 bits (AX). Types d’adressage Adressage relatif ou indexé ADD AX, [adresse+index] MOV AX, [SI+1] 2 accès mémoire Ce mode d'adressage est utilisé pour certaines instructions de branchement. Le champ opérande contient un entier relatif codé sur 1 octet, nommé déplacement, qui sera ajouté à la valeur courante de IP. Attention : dans le 80x86, les adresses sont toujours manipulées sur 16 bits, quelle que soit la taille réelle du bus. Exemple : ``Placer dans AX la valeur contenue à l'adresse 130H''. Plan Code opération : assembleur Architecture d’un processeur Programme en langage machine 80486 implanté à l’adresse mémoire 0100H A1 01 10 03 06 01 12 A3 01 14 Processeur 8086 Assembleur Pile et Procédures Adresse Contenu MP Langage Symbolique Explication en francais Systèmes d’exploitation et appels systèmes 0100 A1 01 10 0103 03 06 01 12 0107 A3 01 14 Code opération : assembleur Symbole Ce programme additionne le contenu de deux cases mémoire et range le résultat dans une troisième Voici une transcription langage symbolique du programme complet. L'adresse de début de chaque instruction est indiquée à gauche (en hexadécimal). Code Op. Octets MOV AX, valeur B8 3 AX ← valeur MOV AX, [ adr ] A1 3 AX ← contenu de l'adresse adr. MOV [ adr ], AX A3 3 range AX à l'adresse adr. ADD AX, valeur 05 3 AX ← AX + valeur ADD AX, [ adr ] 03 06 4 AX ← AX + contenu de adr. SUB AX, valeur 2D 3 AX ← AX - valeur SUB AX, [ adr ] 2B 06 4 AX ← AX - contenu de adr. SHR AX, 1 D1 E8 2 décale AX à droite. On utilise des programmes spéciaux, appelés assembleurs, pour traduire automatiquement le langage symbolique en code machine. MOV AX, [0110] Charger AX avec le contenu de 0110. ADD AX, [0112] Ajouter le contenu de 0112 a AX (resultat dans AX). MOV [0114],AX Ranger AX en 0114. Processus d’assemblage 3 phases : 1. Saisie du code source avec un éditeur de texte 2. Compilation du code source 3. Édition des liens permet de lier plusieurs codes objets en un seul exécutable permet d ’inclure des fonctions prédéfinies dans des bibliothèques Assembleur : NASM [BITS 16] [ORG 0x0100] [SEGMENT .text] BEGIN: jmp En-tête Val equ 12 Var1 db 69 Var2 dw 0FFFFh Tab resb 100 [BITS16] : indique au compilateur qu’on travaille en mode 16 bits (programme DOS) [ORG 0x100] : le programme est chargé en mémoire à partir de l’adresse 0x100h (programme .com) START [SEGMENT .text] : déclaration du segment dans lequel on travaille, dans un programme .com : 1 seul segment pour le code et les données FIN: mov ax, 0x4C00 int 0x21 [int 0x20] : Interruption = appel système pour rendre la main au dos START: mov [Var1], 3 jmp FIN Variables Représentation mémoire : .com DB : Variable 8 bits DW : Variable 16 bits EQU : Constante CS, DS, SS Header DOS 100h IP Programme RESB : Variable 8 bits (tableau) RESW : Variable 16 bits (tableau) 64 Ko BYTE : Taille d'une variable mémoire 8 bits WORD : Taille d'une variable mémoire 16 bits Etiquette : adresse d’une méthode/ branchement Variables SP Fichier .com Exemple de programme NASM [BITS 16] [ORG 0x100] Un seul segment de 64 Ko pour les données le [SEGMENT .text] programme et la pile mov AX,0x13 int 0x10 .exe : on peut avoir un segment pour chaque mov AX,0xA000 mov ES,AX Au début du programme mov DI,6720 boucle: IP pointe sur l’adresse 100h du segment (header DOS) CS, DS, SS pointent au début SP pointe à la fin (tête de pile) : attention que votre pile n’écrase pas votre programme ou vos données mov byte [ES:DI],5 add DI,321 cmp DI,12000 jb boucle int 0x20 Plan Pile Structure de « rangement » de données Architecture d’un processeur Processeur 8086 Assembleur Pile et Procédures Systèmes d’exploitation et appels systèmes définie dans un segment de mémoire particulier (.exe) ou dans le même que le code et les données (.com) fonctionnement LIFO (Last In, First Out) Comment y accéder : adresse du dernier élément posé : SS:SP empiler : PUSH Reg16 (registre 16 bits) dépiler : POP Reg16 (registre 16 bits) La pile augmente vers les adresses faibles PUSH : SP ← SP- 2, POP : SP ← SP+ 2 Pile : exemple d’utilisation (1) Pile : exemple d’utilisation (2) La pile est souvent utilisée pour sauvegarder temporairement le contenu des registres : PUSH registre empile le contenu du registre sur la pile. POP registre retire la valeur en haut de la pile et la place dans le registres spécifié. Exemple : transfert de AX vers BX en passant par la pile. des données a conserver on utilise AX et BX récupère l'ancien BX et l'ancien AX On voit que la pile peut conserver plusieurs valeurs. PUSH AX ; Pile <- AX POP BX ; BX <- Pile La valeur dépilée par POP est la dernière valeur empilée; c'est pourquoi on parle ici de pile LIFO (Last In First Out, Premier Entré Dernier Sorti). Note : cet exemple n'est pas très utile, il vaut mieux employer MOV AX, BX.) Pile : registres SS et SP Pile : registres SP L'instruction PUSH effectue les opérations suivantes : 16 bits Le registre SS (Stack SP ← SP - 2 [SP] ← valeur du registre 16 bits. Segment) = registre segment qui contient l'adresse du segment de pile courant (16 bits de poids fort de l'adresse). Il est normalement initialisé au début du programme et reste fixé par la suite. Le registre SP (Stack Pointer) contient le déplacement du sommet de la pile (16 bits de poids faible de son adresse). ;AX et BX contiennent PUSH AX PUSH BX MOV BX, truc ; ADD AX, BX ; POP BX ; POP AX ; Notons qu'au début (pile vide), SP pointe ``sous'' la pile L'instruction POP effectue le travail inverse : PUSH POP SP registre destination ← [SP] SP ← SP + 2 Si la pile est vide, POP va lire une valeur en dehors de l'espace pile, donc imprévisible. Pile : registres SP Procédures (1) Déclaration d’une procédure : 16 bits nous utiliserons une étiquette ou label pour définir le début et le nom d’une procédure Appel de la procédure dans le programme Emplacement libre Adresses Croissantes SP-2 SP ... CALL NEAR affiche PUSH POP Procédures (2) Comment l’unité de traitement arrive-t-elle à retourner au programme principal à la fin de la procédure ? Au moment de l’appel de la fonction, l’adresse de l’instruction suivante est sauvegardée dans la pile : sauvegarde de IP A la fin de la procédure, l ’Unité de Traitement récupère les valeurs sauvegardées pour retourner au programme principal RETN = dépilement de IP CALL NEAR label affiche : MOV AH,9 INT 0x21 RETN Passage de paramètres 2 méthodes de passage de paramètres : par registre par la pile Passage de paramètres par registre : les paramètres d’entrée de la procédure sont mis dans des registres avant l’appel de la procédure les paramètres de sortie sont aussi rangés dans des registres avantage = rapidité inconvénients = peu de registres Passage par registre ;programme principal ... Passage par la pile (1) ;Procédure Moyenne : Mov AX, N1 Mov BX, N2 Call Near Moyenne Add AX, BX SHR AX, 1 RETN Mov Res, AX Retn = dépilement de IP pour retourner au programme principal ... Passage par la pile (2) Évolution de la pile A quoi sert BP ? BP = référence de la pile au début de la procédure permet d’avoir une référence fixe pour récupérer les paramètres ici : [BP+ 4] pour N2 et [BP+ 6] pour N1 Les paramètres d’entrée sont empilés avant l’appel de la procédure Les paramètres de sortie sont dépilés par le programme principal avantage = « portabilité » inconvénients = récupération des paramètres plus « lourde » ;Procédure ;programme ... PUSH N1 PUSH N2 Call Near Moyenne POP Res ... Moyenne : PUSH BP Mov BP, SP Mov AX, [BP+4] Add AX, [BP+6] SHR AX, 1 Mov [BP+ 6], AX POP BP Retn 2 Passage par la pile (3) Sauvegarde du résultat et nettoyage de la pile Rappels : Registres de segment Nom Taille Rappels : Registres de travail Fonction Nom Cs (Code Segment) 16 bits Mémorise le segment où se trouve le code en cours d'exécution (ne peut pas être modifié par le programme) Ax (Accumulateur) 16 bits Ds (Data Segment) 16 bits Mémorise le segment où se trouve les données du programme. On l'utilise généralement pour des opérations arithmétiques, telles que MUL (multiplication) ou DIV (division). Ax peut se diviser en deux sous-registres de 8 bits. Ah représente les 8 premiers bits, et Al les 8 derniers. Ss (Stack Segment)16 bits Mémorise le segment où se trouve la pile de données du programme Bx (Base) Es (Extra Segment) 16 bits Ce segment peut être utilisé pour faire ce que l'on veut. Par exemple, il peut pointer sur la mémoire écran. Bx est utilisé lors de l'accès à une zone mémoire sous forme de tableau, il représente l'indice de ce tableau. Par exemple, on écrira Mov Dx, Es:[Bx]. Bx peut se diviser en deux sous-registres de 8 bits. Bh représente les 8 premiers bits, et Bl les 8 derniers. Rappels : Registres de travail Taille 16 bits Fonction Rappels : Registres d'offset (à combiner avec une adresse de segment) Nom Taille Fonction Cx (Compteur) 16 bits Lors de l'appel d'instructions comme REP (répéter) ou LOOP (boucle), c'est le registre Cx qui est lu Cx peut se diviser en deux sousregistres de 8 bits. Ch représente les premiers bits, et Cl les 8 derniers. Dx (Données) 16 bits Ce registre est généralement utilisé pour stocker des données provisoires. Dx peut se diviser en deux sous-registres de 8 bits. Dh représente les 8 premiers bits, et D les 8 derniers. Nom Taille Fonction Si (Source Index) 16 bits Lors d'opérations sur les chaînes de caractères, comme MOVSB ou SCASB, Ds:[Si] désigne la variable 'source'. Di (Dest Index) 16 bits Lors d'opérations sur les chaînes de caractères, comme MOVSB ou SCASB, Es:[Di] désigne la variable 'destination'. Bp (Base Pointeur) 16 bits Bp a un rôle proche de celui de Bx, mais il est généralement utilisé avec le segment de pile (Ss:[Bp]). Rappels : Registres d'offset Exemple de programme NASM [BITS 16] [ORG 0x100] [SEGMENT .text] (à combiner avec une adresse de segment) Nom Taille PILE PROC Fonction Ip (Instruction Point)16 bits Cs:[Ip] indique la prochaine instruction à exécuter. Tout comme Cs, Ip ne peut être manipulé par le programme exécuté. Sp (Stack Pointeur) 16 bits Ss:[Sp] indique le dernier élément de la pile. Chaque opération PUSH (empiler) ou POP (dépiler) modifie le registre Sp. Plan Interpréteur et compilateur (1) On distingue grossièrement deux familles de langages informatique Architecture d’un processeur Processeur 8086 Assembleur Pile et Procédures Systèmes d’exploitation et appels systèmes les langages interprétés les langages compilés Un programme en langage interprété va être traduit au fur et à mesure de son exécution par un interpréteur interpréteur : programme chargé de décoder chaque instruction du langage et d'exécuter les actions correspondantes Programmes compilés : traduction en langage machine a lieu une fois pour toute. Le compilateur (traducteur) traduit chaque instruction du langage en une suite d'instructions en langage machine Interpréteur et compilateur (2) Principaux langages Les principaux langages compilés sont : Les programmes compilés s'exécutent ainsi plus rapidement que les programmes interprétés La traduction est déjà faite Mais on perd en souplesse de programmation, car les types de données doivent être connus au moment de la compilation Compilateur = traduit un programme source écrit dans un langage de haut niveau (C) en un autre programme dans un langage de bas niveau (par exemple l'assembleur) Opération de traduction complexe Compilateurs = programmes sophistiqués Compilation du C Traduction en assembleur des programmes en langage C Le détail de cette traduction (ou compilation) dépend Compilateur utilisé Système d'exploitation (DOS, Windows, UNIX,...). Taille des types : exemple int (16 ou 32 bits) Modèle de mémoire utilisé (pointeurs sur 16 ou 32 bits, données et code dans des segments différents ou non, etc.) Exemple : compilateur Turbo C++ version 3 sous DOS (entiers de 16 bits et le modèle de mémoire « small ») Génère directement du code objet (fichier .OBJ) à partir d'un fichier source en langage C Il est cependant possible de demander l'arrêt de la compilation pour obtenir du langage assembleur (fichier .ASM) C/C++ ADA Cobol Fortran Pascal : programmation système et scientifique : logiciels embarqués : gestion : calcul scientifique : enseignement Quelques langages interprétés : BASIC LISP, Prolog Python Java MATLAB : bricolage : Intelligence Artificielle : programmation système, Internet : applets internet : calcul scientifique LISP, Java ou Python : une première phase de compilation vers un langage intermédiaire (bytecode), qui sera lui même interprété. C et assembleur Introduction d’instructions assembleur dans des programmes en langage C (ou C++). Programme non portable, car le langage assembleur diffère d'un type d'ordinateur à l'autre Pour un programme utilisant les ressources matérielles d'une machine : plus confortable d'écrire un programme C contenant quelques lignes d'assembleur que de tout écrire en assembleur. Exemple avec Turbo C++/TASM void main(void) { int A = 20; asm{ MOV AX, A SHL AX, 1 } printf(’’AX =%d\n’’,_AX); } Ce programme affiche 40. Système d’exploitation Système d’exploitation Le système d’exploitation doit s’occuper de : OS : Operating System : le programme permettant d'utiliser les circuits qui ont été câblés. Soit entièrement en ROM Soit un code de boot en ROM se chargeant de placer en RAM le reste de l'OS à partir de la disquette ou du DD Souvent, une ROM de boot contient néanmoins la partie de l'OS la plus primitive: le BIOS. But de l'OS = décharger le programme des tâches répétitives et de bas niveau. Gain de temps lors du développement programmes Pas à se soucier du fonctionnement de la circuiterie électronique Système d’exploitation Windows 95/ 98, Windows NT (Microsoft) : processeurs 80x86 OS/ 2 (IBM) MacOS (Apple) : processeurs 68000 puis PowerPC UNIX = famille de SE : Versions payantes généralement spécialisées à un type de machine : SunOS/ Solaris (Sun) AIX (IBM) HP/ UX (HP) Versions libres : LINUX : 80x86, 68000, PowerPC, Sparc … l ’exécution des commandes d’entrée/ sortie la gestion de la mémoire la gestion des fichiers la multi- programmation (« multi- tâche ») Comment exécuter plusieurs programmes à la fois ? Et si ces programmes veulent tous accéder à l ’imprimante en même temps ? Et s’ils doivent échanger des informations ?… Comment exécuter un seul programme avec plusieurs processeurs ? la sécurité (gestion des accès,…) Le SE doit aussi fournir : un langage de commande divers utilitaires (compilateurs, éditeurs, outils, …) une interface graphique pour l’utilisateur Présentation du BIOS BIOS (Basic Input Output System) : partie de l'OS du plus bas niveau opérations très primitives: lecture du clavier, affichage écran en mode texte, accès simplifié au lecteur de disquette et au disque dur, accès au ports série et parallèle. Le programme du BIOS se trouve en mémoire morte (ROM) une mémoire gardant son contenu lorsque l'on interrompt son alimentation électrique Chaque modèle de PC est vendu avec une version du BIOS adapté à sa configuration matérielle. Fonctions du BIOS Vecteurs d’interruption (1) BIOS ≈ librairie de fonctions Chaque fonction effectue une tâche bien précise (par exemple afficher un caractère donné sur l'écran) L'appel de l'une de ces fonctions = appel système Fonctions du BIOS ≠ procédures appelées avec l'instruction CALL il a été prévu de pouvoir modifier le comportement du BIOS en cours d'utilisation (par exemple pour gérer un nouveau périphérique) Code du BIOS en ROM = non modifiable Le BIOS étant différent d'un ordinateur à l'autre, les adresses des fonctions changent... Vecteurs d’interruption Chaque élément de la table occupe 4 octets (adresse 32 bits). table à 256 éléments (1Ko). exemple : si l'on sait que la fonction du BIOS qui affiche un caractère est la 33ième, on va l'appeler en lisant la 33ième ligne de la table, puis en allant exécuter les instructions à l'adresse trouvée : Adresse ... 0084H ... contenu F1234560H (car 4x33 = 84H). La table des vecteurs d'interruptions contient des valeurs différentes pour chaque version de BIOS peut être modifiée pour pointer sur du code en mémoire principale, modifiant alors le BIOS existant. Problème résolu par l'utilisation d'une table d'indirection = la table des vecteurs d'interruptions table est placée en RAM : contient les adresses (en ROM ou en RAM) des fonctions du BIOS implantée à partir de l'adresse 00000000H (première case mémoire) elle est initialisée par le BIOS lui même au moment du démarrage du PC (boot). Adresse 0000 0004 ... contenu adresse de la première fonction du BIOS adresse de la deuxième fonction du BIOS Interruptions Unité de Traitement exécute séquentiellement les instructions ou effectue des sauts programmés (JMP, CALL) Il existe des situations où l ’U. T. est « déroutée » de sa tâche : Reset : signal envoyé au processeur pour un (re-) démarrage Exceptions (interruptions internes) : débordement de pile, dépassement de capacité, div /0, … Appels systèmes (int. logicielles) : appels du programme lui- même « int 21h » … Interruptions physiques (int. externes) : appels d’autres périphériques Interruptions logicielles : INT n Interruptions : déroulement L'instruction INT n permet d'appeler la n-ième fonction de la table des vecteurs d'interruptions. Le déroulement de INT n se passe comme suit : n est un entier compris entre 0 et 255 (1 octet), car il y a 256 vecteurs d'interruptions dans la table (ex: Int 21h ) 1. sauvegarde les indicateurs du registre d'état sur la pile (les indicateurs sont regroupés dans un mot de 16 bits); 2. sauvegarde CS et IP sur la pile; L'instruction INT n est semblable à l'instruction CALL sauf que l'adresse de destination est donnée par la table des vecteurs d'interruptions que les indicateurs sont automatiquement sauvegardés sur la pile. l’adresse de retour complète (32 bits) doit être empilée car le traitant d’interruption n’est pas nécessairement dans le même segment de code que le programme Interruptions : fonctionnement Lorsque l’interruption est déclenchée, l ’U. T. doit exécuter un bout de programme précis : le traitant de l’interruption. l ’U. T. doit savoir où se trouve l ’adresse (CS: IP) du traitant numéro n Cette information est stockée en mémoire (0000: 0000 à 0000: 03FFh) 3. CS et IP sont chargés avec la valeur lue à l'adresse 4 n, n étant le paramètre de INT. L'exécution continue donc au début du traitant d'interruption. Appels système Le système DOS (Disk Operating System) repose sur le BIOS, il appelle les fonctions du BIOS pour interagir avec le matériel Les fonctions du DOS s'utilisent comme celles du BIOS, via des vecteurs d'interruptions fonctionnalités de plus haut niveau que le BIOS (entrées/sorties, ouverture de fichiers sur disque, etc.) Les fonctions du DOS s'appellent à l'aide du vecteur 21H La valeur du registre AH permet d'indiquer quelle est la fonction que l'on appelle : MOV AH, numero_fonction INT 21H fonction 4CH du DOS = terminer un programme et de revenir à l'interpréteur de commandes DOS : MOV AH, 4CH INT 21H Fonctions du BIOS INT Fonction 0 Division par 0 5 Copie d'écran 10H Écran 12H Taille mémoire 13H Gestion disque dur 14H Interface série 16H Clavier Fonctions du DOS Numéro Fonction appelé automatiquement lors de div. par 0 gestion des modes vidéo 01H 02H 09H Lecture caractère Affiche caractère Affiche chaîne de car 0BH Lit état clavier met le code ascii lu dans AL code ascii dans registre DL DX=adresse début chaîne, terminée par '$' met AL=1 si caractère, 0 sinon. Ce programme lit un caractère au clavier et l'affiche en majuscule : (initialiser, lire/écrire secteurs) (lire caractère, état du clavier) Exemple Affichage d'un octet en binaire : afficher la valeur contenue dans un registre 8 bits (BL). L'idée est d'utiliser un masque BL AND 10000000 pour tester le bit de gauche, et de décaler BL à gauche pour parcourir ainsi tous les bits. mov BL, 10 ; on teste le prog avec BL=10 mov CX,8 ; compteur de boucle masque: Test BL, 10000000b JNZ bit1 bit0: Mov DL,"0" jmp affiche bit1: Mov DL,"1" affiche: mov AH,2 ; affichage int 21h SHL BL,1 Loop masque fin: mov ah,4Ch int 21h MOV INT AND MOV INT AH, 01H ; code fonction DOS 21H ; attente et lecture d'un caractère AL, 11011111b ; passe en majuscule DL, AL ; MOV AH, 02H ; code fonction affichage 21H ; affiche le caractère Architectures des ordinateurs Cours 6 Architectures Parallèles Plan Problèmes Architecture : Nombre, puissance, mémoire, E/S… Les principes du parallélisme Les ordinateurs parallèles Les réseaux d’interconnexion Communications : Comment les processeurs communiquent Coopération : Synchronisation, degré d’autonomie, OS … Type de problèmes : potentiel de parallélisme, spécialisation des machines, choix des algo, langages... Le parallélisme pourquoi ? Le parallélisme Renault : Amélioration des performances de calcul Accroissement de la taille des problèmes à résoudre 2048 proc à 64 Mo de mémoire moins chers qu ’une machine séquentielle à 130 Go Résistance aux pannes et tolérance aux fautes Répartition géographique de l’application ex : logiciel de gestion de banque, problème de la cohérence des données partagées sur les différents sites simulations, modélisation, Météorologie et climatologie Industries Aéronautiques simulation et modélisation, réalité virtuelle Simulation grandes échelle : tectonique, modèles atmosphériques… EDF : simulation Temps-réel ONERA : simulation de phénomènes physiques Cinéma : effets spéciaux, films d'animations… Le parallélisme au CEA : exemple Takakaw : application parallèle pour la simulation numérique de dynamique moléculaire. Les objectifs initiaux sont étude des structures des protéines ainsi que l'étude des interactions mécaniques entre des protéines d'assemblage complexe de grande taille (> 100 000 atomes). L'une des applications cibles est la simulation numérique des protéines d'une membrane cellulaire dans leur environnement. L'utilisation du calcul parallèle est donc nécessaire pour diminuer les temps de simulation et augmenter l'espace mémoire utilisable et augmenter la taille des systèmes moléculaires traités. Notion d’accélération Notion d’accélération Accélération = gain de temps obtenu lors de la parallélisation du programme séquentiel. Définition : Soit T1 le temps nécessaire à un programme pour résoudre le problème A sur un ordinateur séquentiel et soit Tp le temps nécessaire à un programme pour résoudre le même problème A sur un ordinateur parallèle contenant p processeurs, alors l ’accélération (Speed-Up) est le rapport : S(p) = T1 / Tp Cette définition n’est pas très précise Pour obtenir des résultats comparables il faut utiliser les mêmes définitions d ’Ordinateur Séquentiel et de Programme Séquentiel … Notion d’efficacité S(p) Région des accélérations sur-linéaires ac lér cé n io at i éa lin re Région des accélérations sub-linéaires Soit T1(n) le temps nécessaire à l’algorithme pour résoudre une instance de problème de taille n avec un seul processeur, soit Tp(n) celui que la résolution prend avec p processeurs et soit s(n,p) = T1(n) / Tp(n) le facteur d’accélération. On appelle efficacité de l ’algorithme le nombre E(n,p) = S(n,p) / p Efficacité = normalisation du facteur d ’accélération 0 P = nombre de processeurs Efficacité/Accélération Bilan Multiplication de matrices ( A moins bon que B) Une accélération linéaire correspond à un gain de temps égal au nombre de processeurs (100% activité) Algorithme A Temps en séquentiel : 10 minutes Nombre de processeurs : 10 Temps en // : 2 minutes Accélération : 10/2 = 5 (l'application va 5 fois plus vite) Efficacité : 5/10 = 1/2 Algorithme B Temps en séquentiel : 10 minutes Nombre de processeurs : 3 Temps en // : 4 minutes Accélération : 10/4 = 5/2 = 2,5 < 5 Efficacité : (5/2)/3 = 0,8 > 0,5 Puissance de calcul Nous retrouvons couramment MIPS ou FLOPS MIPS (Machine Instructions Per Second) représente le nombre d ’instructions effectuées par seconde FLOPS (FLoating Point Operations Per Second) représente le nombre d ’opérations en virgule flottante effectuées par seconde Les multiplicatifs : K = 210 ; M = 220 ; G = 230 Certains processeurs vectoriels ont une puissance de calcul de 300 Mflops par exemple. PERF 2002 Une accélération sub-linéaire implique un taux d ’activité des processeurs < 100 % (communication, coût du parallélisme...) Une accélération sur-linéaire implique un taux d’utilisation des processeurs > à 100 % ce qui paraît impossible (en accord avec la loi d ’Amdhal) Cela se produit parfois (architecture, mémoire cache mieux adaptée que les machines mono-processeurs…) Machines parallèles : centres nationaux CINES : Centre Informatique National de l'Enseignement Supérieur (Montpellier) IBM SP2 (207 proc. P2SC et 112 proc. Power3) Origin2000 (256 proc. R12000) IDRIS : Institut du Développement et des Ressources en Informatique Scientifique (Orsay) NEC SX-5 SGI-Cray T3E (256 proc.) Fujitsu VPP300 (8 proc.) Machines parallèles : organismes publiques CEA Grenoble : Compaq SC232 (232 procs EV67 à 667 MHz), VPP5000/15 Bruyères-Le-Chatel : SGI-Cray T3E (176 proc.), T90 (24 proc.) Électricité de France (Direction des Études et Recherches) Deux Cray C98 (8 proc. chacun) Deux HP/Convex SPP2000 (16 proc. chacun) Météo France, Toulouse Fujitsu VPP700E (26 proc.) ONERA, Chatillon NEC SX-5 (16 proc.), SGI Origin2000 (12 proc.) TOP 500 (2002) Machines parallèles : organismes privés CGG Deux Origin2000 (32 proc.) Renault Origin2000 (32 proc.) NEC SX-5 (10 proc.) Cray SV-1 (32 proc.) SNECMA Villaroche Origin2000 (32 proc.) Plan http://www.top500.org/ Puissance en GFlops Les principes du parallélisme Les ordinateurs parallèles Les réseaux d’interconnexion Types d’ordinateurs Tendance Les machines vectorielles multi-processeurs : Faible nombre de processeurs puissants (1 à 16) On se dirige vers l ’utilisation des multi-processeurs à mémoires distribuées : Mémoire partagée Limite atteinte, coût important Les multi-processeurs à mémoires distribuées : Grand nombre de processeurs ordinaires à mémoire locale Les machines à mémoire partagée ont atteint leur limite Les machines synchrones sont trop rigides Bon rapport coût/performance Communication par envoi de messages à travers des réseaux de communication Les processeurs ont leur propre séquenceur Futur : stations de travail reliées par un réseaux à très haut débit Les machines synchrones : Très grand nombre d ’éléments de calcul (4096 à 65536) de faible développement d ’OS spécifiques développement de bibliothèques de communication (PVM, MPI) Méta-Computing, Grille de calculs… puissance avec une toute petite mémoire locale Un séquenceur unique : exécution d ’une même instruction sur des données différentes Tendance Classification des machines Classification de Flyn La grappe de PC conçue par hp Laboratories Grenoble et INRIA Rhône-Alpes Flot de données Flot d ’instruction Unique Unique Multiple Multiple SISD (von Neumann) SIMD (tab de processeurs) MISD (pipeline) MIMD (multi-processeurs) Classification des machines Classification des machines SIMD (Single Instruction Multiple Data) séquenceur unique tableau de processeurs MISD (Multiple Instruction Single Data) classe bizarre pipeline ? MIMD (Multiple Instruction Multiple Data) Classe la plus importante processeurs autonomes Mémoire partagée ou distribuée Cette classification n’est pas en corrélation avec les machines réelles SISD et pipeline SIMD MIMD Organisation de la mémoire : DM P P P P M M M M Réseau d ’interconnexion Organisation de la mémoire : SM P P P P Classification unifiée SIMD-SM Contrôle centralisé de données centralisées Machine vectorielles mono-processeurs Instruction unique appliquée de manière séquentielle à des données de type vecteur Fonctionnement en mode pipeline Bus M Mémoire partagée Pilpeline : Décomposition de l ’opérateur f = f3 ° f2 ° f1 On applique successivement f1, f2 puis f3 sur cette donnée circuits dans les processeurs circuit = composant électronique qui prend d en entrée et donne f(d) en sortie séquence de circuits en étages Classification unifiée SIMD-DM : Contrôle centralisé, données distribuées Processeurs de faible puissance = éléments de calcul Séquenceur unique MIMD-DM : Contrôle distribué, données distribuées Un processeur = entité de calcul autonome (processeur + mémoire) Communication par envoi de messages : importance du réseau d ’interconnexion Avantage : facile d ’augmenter le nb de proc Inconvénients : performances étroitement liées au réseau et besoin d ’OS nouveaux. Plan Classification unifiée MIMD-SM : Mémoire divisée en plusieurs bancs Synchronisation des accès à la mémoire, un seul processeur peut accéder en lecture ou écriture à un banc Machine multi-processeurs : Cray 2, NEC SX-3 Faible nombre de processeurs Puissance de la machine repose sur la puissance des processeurs et non sur le nombre Les types de réseaux Premières architectures : mémoire partagée, liaison directe entre les constituants Les principes du parallélisme Les ordinateurs parallèles Les réseaux d’interconnexion Accès mémoire = goulot d’étranglement On découpe donc en bancs mémoire Un élément de calcul qui veut accéder à un banc verrouille l ’accès en lecture/écriture à ce banc Réseau d ’interconnexion = graphe complet qui relie les processeurs aux bancs mémoires si le nombre de proc est trop grand il est impossible de relier tous les proc à tous les bancs : nb de liens trop important. Dans ce cas on utilise un réseau à étages Différence entre les réseaux SM et DM Bande passante SM : il faut pouvoir alimenter tous les processeurs : plusieurs Go/s DM : Quelques centaines de Mo/s Latence SM : petite car tout accès à la mémoire prend un temps qui est égal à la latence du réseau et de la mémoire. Chemins de communication courts et rapides. DM : la latence est moins critique Informations à transporter SM : liens entre les bus de données et d ’adresse d ’un processeur et d ’un banc mémoire DM : données uniquement Les réseaux à zéro étage (SM) Réseaux connectés en bus Mémoire = un seul banc mémoire Les processeurs se connectent par leur bus de données et d’adresses Un processeur qui obtient l’accès au bus bloque tous les autres Bande passante faible par processeur Faible nombre de processeurs : goulot d ’étranglement Besoin de diviser la mémoire en bancs Les réseaux d’interconnexion SM Trois types en fonctions du nombre d’étages nécessaires pour relier un processeur quelconque à un banc mémoire quelconque zéro étage un étage multi-étages Le nombre d’étages dépend du nombre de processeurs et de bancs mémoire à relier. Organisation de la mémoire : SM P P P Bus M Mémoire partagée P Découpage en banc P P Les réseaux à un étage (SM) P P Si on divise la mémoire en plusieurs bancs, il est impératif d’utiliser des réseaux à au moins un étage pour régler les problèmes d ’accès concurrents aux ressources La latence est indépendante du nombre de processeurs et de bancs Réseau d ’interconnexion Tous les liens possibles correspondent à des liens physiques On parle de réseau crossbar M M M Mémoire partagée Le Crossbar (SM) M Le crossbar permet de connecter N processeurs à N bancs mémoires. Il est constitué de 2N connections et de N² switches. Il est donc coûteux et n’est utilisé que pour des machines contenant quelques dizaines de processeurs Avantage : il est non bloquant (tout proc inactif peut être connecté à tout moment à tout banc inutilisé). Le Crossbar (SM) switches processeurs switches processeurs mémoires mémoires Les réseaux connectés en cubes Les réseaux multi- étages (SM) Les réseaux multi- étages (SM) Latence fonction du nombre des éléments reliés (-) Plus besoin de matériel qui réalise physiquement le graphe complet (+) Plus pratique et moins coûteux pour augmenter le nb de proc Réseaux basés sur des circuits réalisant des connexions entre leurs entrées et leurs sorties ces circuits (boîte d ’échange) sont pilotés par des signaux de processeurs 4à7 mémoires 0 1 0 1 2 3 2 3 4 5 4 5 6 7 6 7 contrôle chaque boîte aura b entrées et b sorties (en pratique b vaut 2) l ’ensemble du réseau sera constitué d ’un certain nombre de couches appelées étages. Les réseaux connectés en cubes Les réseaux connectés en cubes Les réseaux multi- étages (SM) Les réseaux multi- étages (SM) processeurs 4 à 7 et 7 à 1 mémoires processeurs 4 à 7 et 5 à 3 mémoires 0 1 0 1 0 1 0 1 2 3 2 3 2 3 2 3 4 5 4 5 4 5 4 5 6 7 6 7 6 7 6 7 Pas de conflit L’interconnexion des réseaux DM L’interconnexion des réseaux DM Le réseau relie les différents processeurs entre eux (chacun possède sa propre mémoire) Les grandeurs importantes diamètre : distance entre deux processeurs, il doit être petit connectivité : nb de manières différentes dont deux sommets peuvent être reliés, plus elle est grande plus le réseau est robuste faisabilité : la topologie doit être non dépendante du nb de proc sous-topologies : elles doivent être simples adéquation du point de vue de la programmation :graphe régulier et simple pour faciliter la tâche du programmeur largeur de bissection : plus elle est grande, plus on a de possibilités de faire des communications entre les différentes parties de la machine sans provoquer de congestion. (on coupe en deux le graphe et on compte le nb d ’arêtes qu’il a fallu couper) Réalisation physique Exemple MIMD IBM SP Problème de faisabilité des machines : Faisabilité des composants nb de broches des processeurs nb et disposition des liens physiques Problème du refroidissement Problème du coût Problème de l ’évolutivité Facilité de maintenance (remplacement d ’un processeur en panne) …. IBM SP-2 (from MHPCC) IBM SP IBM SP 680 IBM SP 680 specs IBM X server Cray T3E Compaq (DEC) Alpha Chips ( Alpha white paper ) Cray white paper SGI Origin 2000 , (3000) performance Tuning for the Origin2000 R10000 Chip , R10000 Brief , Other MIPS Chips , MIPS Exemple MIMD Compaq Servers, GS320 server Distributed Memory Vector NEC (Japan) Exemple : Cray T 3E La machine de chez CRAY, deux types de modèles, refroidissement à air (pas plus de 128 processeurs) ou par un liquide (jusqu'à 2048 processeurs). En amalgamant les deux de 16 à 2048 nœuds comprenant chacun : Fujitsu (Japan) Hitachi (Japan) Beowulf Projects un DEC Alpha EV5 (600 MFlops) de 64 Mo à 2 Go de mémoire vive un réseau d'interconnexion en tore 3D (bande passante de 2 à 128 Go/s). Beowulf slides (Modi) Intel Teraflop Machine , ( Performance Tuning ) Linux Intro , Installing Linux , Linux Palmtops Windows NT/2000 based Beowulf Systems , ( MPICH ) Exemple SIMD CM-1, CM-2, & CM-200 ( NPAC ) Maspar MP-1 & MP-2 Cambridge Parallel Processing ( NPAC pages , Overview ) Oxford Micro Pentium 4 Intel SIMD Intel MMX SIMD (UBC) Motorola 7450 Motorola 7400 processor Motorola Altivec Performance de crête de 9.6 GFlops à 1.2 TFlops, jusqu'à 4 To de mémoire vive. Exemple SIMD Architectures des ordinateurs Cours 5 Plan Hardware Cartes mères et BIOS Mémoires Les disques durs et interfaces IDE Processeurs Les ports (parallèles et séries) Les IRQ Schéma d'une carte mère Chipset Chipset = famille de composants utilisées par la carte mère. 1. 2. 3. 4. 5. 6. 7. 8. 9. en principe composée de 2 à 5 puces. elles contrôlent un ou plusieurs éléments de la carte mère. Parmis ces éléments on a : Le bus PCI Le bus ISA Le bus AGP Le bus EISA ( très rare aujourd'hui ) Le bus USB La mémoire principale La mémoire cache de second niveau pour les Pentium Les ports IDE La gestion des canaux DMA ... Chipset Exemple de chipsets Chipsets permettant de gérer des Pentium II : • Actuellement quatre grands fabricants de chipsets se partagent le marché. Descriptif Lien URL utilisé Intel VIA SiS ALI http://www.intel.com http://www.via.com.tw http://www.sis.com.tw http://www.ali.com.tw Chipset : 2002 Chipset AMD-760™ MPX Système bi-processeur symétrique pour processeurs AMD Athlon MP Bus système Athlon 266 MHz, offrant des débits de données allant jusqu'à 2,1 Go/s Contrôleur mémoire DDR (Double Data Rate) 266-MHz (PC2100) supportant jusqu'à 4 Go de mémoire Interface AGP-4X (supporte les modes 1X et 2X) Bus PCI primaire 66 MHz, 32 ou 64 bits conforme à la spécification PCI 2.2 Bus PCI secondaire 33 MHz, 32 bits conforme à la spécification PCI 2.2 Contrôleur bus maître EIDE compatible ATA-33, ATA-66 et ATA-100 Bus SM Bus LPC ( Low Pin Count ) Contrôleur hôte USB OHCI (quatre ports) Nombre de CPU Taille mémoire FPM-EDO-BEDO-SDRAM-ECC USB IDE Type AGP Vitesse Bus Mémoire 440 FX 2 1 Go o/o/o/-/o Oui BMIDE PIIX3 Non 66 Mhz Pentium II 440 EX 440 LX 1 2 256 Mo 1 Go o/o/o/-/o o/o/-/o/o Oui Oui UDMA33 UDMA33 PIIX4 PIIX4 Oui Oui 66 Mhz 66 Mhz 440 BX 2 1 Go o/o/-/o/o Oui UDMA33 PIIX4e Oui 100 Mhz Importance des chipsets Le type de chipset utilisé par une carte mère influe sur les performances de cette carte. il limitera les caractéristiques de la carte (taille et la rapidité de la mémoire cache, le type et la capacité de la mémoire principale, le type et le nombre de processeur supportés, les types de bus supportés, etc) Ils évoluent continuellement ex: plusieurs types de chipsets pour cartes mères Pentium comme le 450NX qui gère jusqu'à 8Go de mémoire ECC, permet de gérer plusieurs bus PCI, 4 processeurs Pentium II Xeon à 100Mhz ... Composants des chipsets Les BUS Le bus PCI Un contrôleur de bus local (AGP, PCI ...) Le bus ISA Un contrôleur de mémoire cache, Le bus AGP Un contrôleur de mémoire principale Le bus EISA ( très rare aujourd'hui ) Un contrôleur pour la passerelle entre le bus PCI et le bus ISA Un contrôleur du bus USB, des ports IDE, ainsi que plusieurs autres circuits Les bus USB, SCSI, PCMCIA Largeur du bus de données ISA 8 ISA 16 Fréquence du bus en Mhz 4,77 8,33 Taux de transfert en Mo/s 4,66 16,66 EISA 32 PCI 32 PCI v2.1 64 PCI-X 64 AGP 1x 32 AGP 2x 32 AGP 4x 32 8,33 33,33 33,33 133 66,66 66,66 66,66 33,33 133,33 266,66 1066,6 266,66 533,33 1066,6 Fréquence des bus Débit Max d'un bus La vitesse du bus PCI est un diviseur de la vitesse du bus processeur. Fréquence_Bus_En_Hertz*Largeur_du_Bus_en_bits = Nombre de bits par seconde Si la vitesse du bus est de 50 Mhz alors la vitesse du bus PCI est 50/1.5 = 33,333 Mhz Exemple : Pour un bus PCI la fréquence du bus est de 33 Mhz et sa largeur est de 32 bits on a donc : Vitesse du bus processeur Fréquence du bus PCI Taux de transfert 66 Mhz 75 Mhz 83 Mhz 33 333 333 Hz 37 500 000 Hz 41 500 000 Hz 133 Mo/s 146 Mo/s 162 Mo/s 2002 : Chipset AMD-760™ MPX Bus système Athlon 266 MHz = 2,1 Go/s (((33 333 333*32 ) /8) / 1024) / 1024 = 127.15 MB/s B = Byte = Octet Attention : pour des raisons de marqueting : taux de transfert exprimés en Million d'octects. ((33 333 333*32 )/8) / 1 000 000) = 133.33 Mo/s 1Mo = 1 Million d'octets Le bus mémoire Les autres bus Le bus mémoire IDE : Disques durs, CDROM, Graveur le bus mémoire fonctionne à la même fréquence que le bus processeur DMA : Disques durs (Ultra DMA) USB 1 et 2 : Souris, clavier, Caméra, CDROM… Mem SDRAM Mem SDRAM PC100 Mem SDRAM PC133 32 64 64 64 64 64 66 66 100 133 100 133 Mem EDO Largeur du bus de données en bit Fréquence du bus en Mhz Taux de transfert en Mo/s Taux de transfert en MB/s Mem DDR SDRAM PC1600 Mem DDR SDRAM PC2100 266,66 533,33 800 1064 1600 2133 254,31 508,62 762.93 1017.25 1525.87 2034.50 Les autres bus IEEE 1394 : Firewire = concurrent USB2 BM IDE DMA/33 USB USB v2.0 IEEE 1394 IEEE 1394 B Débit maximun 16,7 Mo/s 33,4 Mo/s 1,5 Mo/s 60 Mo/s 50 Mo/s 200 Mo/s Nombre maximum de périphériques 2 4 127 127 63 63 Interfaces faible débit PS/2 : vitesse jusqu'à 25 kbits/s (clavier et la souris) SCSI SCSI-1 à 32 Mbits/s, SCSI-2, 3 et Wide SCSI jusqu'à 160 Mbits/s Ultra 2 Wide SCSI à 640 Mbits/s. AGP : Avec un bus de 32 bits = 4,2 Gbits/s AGP 2X, 4X et bientôt 8X, qui lui permettent d'atteindre la vitesse respectable de 33,6 Gbits/s en cours de remplacement par USB Interface Infrarouge : jusqu'à 4 Mbits/s agenda personnel, un téléphone GSM appelée à être remplacée par les interfaces Bluetooth. Interface Série : jusqu'à 115 kbits/s, modem, agenda personnel, téléphone GSM, liaison de PC à PC, quasiment remplacée par l'interface USB dans toutes ses fonctions. Interfaces faible débit Le BIOS Bios = Basic Input Output System Interface Port Jeux : jusqu'à 31 kbits/s manettes de jeux, volants et instruments de musique MIDI remplacement par l'interface USB pour toutes ses applications Interface Parallèle : jusqu'à 1,2 Mbits/s imprimante, liaison PC à PC, remplacement par l'interface USB Le BIOS Les instructions du Bios sont stockées dans une EEPROM. mise à jour est donc = plus complexe et plus risqué que celui d'un logiciel normal. Mauvaise manipulation le contenu de l'EEPROM du Bios peut être altéré, ce qui empêchera le PC de fonctionner correctement et même d'empêcher une autre mise à jour. un Bios corrompu. Pour entrer dans Setup du Bios de la carte mère, généralement : maintenir la touche Suppr (ou Del pour les claviers anglais), enfoncée au moment du boot ensemble de routines (programmes) permettant au système d'exploitation de gérer les différents éléments de la carte mère. Chaque évolution technologique peut nécessiter une évolution du Bios. exemple : l'arrivée du lecteur LS-120 a nécessité l'ajout de routines permettant de gérer ce lecteur. LS120 : 120 Mo de mémoire sur une disquette 3.5'' + taux de transfert environ égal à 565 Ko/s contre 60 Ko/s Quand flasher le BIOS Le Bios de votre PC peut comporter des bugs (rare) Exemple : la gestion d'énergie : sur certaines cartes mères, la version 4.50PG du Bios AWard a tendance à éteindre l'écran de façon aléatoire ou à couper l'alimentation du disque alors que celui-ci fonctionne. La version 4.51PG a corrigé ce problème. Nouvelles fonctionnalités Exemple : certains Bios n'offrent pas à l'origine, la possibilité de booter le PC depuis un lecteur Zip ou LS120 ou d'utiliser le mode LBA sur 48 bits pour dépasser la barre des 128 Go. Ou encore d'utiliser des fréquences de bus plus élevé qu'a l'origine Une mise à jour du Bios est alors nécessaire. Flasher le BIOS BIOS : exemple Pour flasher le Bios de votre carte vous devez disposer : d'un programme de flashage du fichier contenant le code du Bios à flasher. Puis redémarrer votre ordinateur, de préférence avec une disquette de boot ne contenant pas de config.sys ni d'autoexec.bat. Selon la marque du Bios vous n'aurez qu'à taper Pour le Bios AWard awdflash xxx.bin ou pflash xxx.awd Pour le Bios AMI amiflash xxx.bin Pour le Bios MrBios mrflash xxx.bin Carte mère Photo Plan Mémoires : caractéristiques Méthodes d’accès : Cartes mères et BIOS Mémoires Les disques durs et interfaces (IDE) Processeurs Les ports (parallèles et séries) Les IRQ Mémoires : caractéristiques séquentiel (temps d’accès linéaire) bande direct (temps d’accès constant) mémoire principale mixte (accès direct au voisinage de la donnée + parcours séquentiel) disque associatif (accès à la donnée en recherchant une clé dans une table : temps constant) cache Supports physiques semi-conducteur magnétique optique Caractéristiques volatile / non volatile effaçable / non effaçable Mémoires : exemples RAM (Random Access Memory / Mémoire Vive) Capacité de la mémoire : nombre de mots taille du mot (généralement 1 octet) Unité de transfert : mot, bloc, page, fichier, … Performances : Temps d’accès Temps de cycle (= entre 2 accès) Débit de transfert (= 1 / Temps Cycle) accès direct (temps d ’accès : SRAM + rapide que DRAM) volatile ROM (Read Only Memory / Mémoire Morte) accès direct non volatile : information figée lors de la fabrication utilisation : microprogrammes + programmes systèmes de base (BIOS) PROM (Programmable ROM) : ROM enregistrable 1 fois par l’utilisateur EPROM (Erasable PROM) : PROM effaçable (par rayonnement UV) EEPROM (Electricaly EPROM) : PROM effaçable (signaux électriques) FLASH EEPROM : EEPROM effaçable par bloc Différentes mémoires DRAM Barrettes de mémoire : SIM (single Inline memory) : deux rangés de 30 contacts fonctionnant en 8 bits et avec des temps d'accès de 70 à 80 ns. SIMM (single inline memory module) : deux rangées de 72 contacts en 32 bits, avec des temps d'accès de 60 ou 70 ns et le mode fast page, très vite relayé par le mode EDO (enhanced data output). Différentes mémoires DRAM La mémoire se connecte sur un port SIMM : mémoire vive EDO, DIMM : SDRAM (meilleurs temps d'accès) Barrettes SDRAM SDRAM pc 66, la pc 100 et la pc 133. fréquence en MHZ du bus système que peut supporter la barrette. Maintenant : barrettes DIMM (dual inline memory module) : temps d'accès compris entre 7 et 15 ns et avec une largeur de 64 bits. Temps de cycle Mémoire idéale = grande capacité, rapide, pas chère. La réalité : les mémoires de grande capacité sont lentes les mémoires rapides sont chères Ex: Processeur avec une horloge de 2 GHz (cycle = 0,5 ns) SDRAM : temps de cycle de 7 ns 1 cycle d’accès à la mémoire = 14 cycles processeur ! Comment faire ? Faire des accès parallèles à la mémoire Utiliser une hiérarchie de mémoires Hiérarchie Hiérarchie Mémoires DRAM Mem SDRAM Mem SDRAM PC100 Mem SDRAM PC133 32 64 64 64 64 2x64 66 66 100 133 200 1500 266,66 533,33 800 1064 3200 24000 254,31 508,62 762.93 1017.25 3051.75 22888 Mem EDO Largeur du bus de données en bit Fréquence du bus en Mhz Taux de transfert en Mo/s Taux de transfert en MB/s Mem DDR SDRAM PC4000 Mem QDR SDRAM CDROM 52x = 80 ms Plan Interface IDE IDE : Integrated Drive Electronics Cartes mères et BIOS Mémoires Les disques durs et interfaces (IDE) Processeurs Les ports (parallèles et séries) Les IRQ nom donné aux disques durs qui intègrent leur contrôleur sur le disque. L'interface d'un disque IDE s'appelle officiellement ATA ( AT Attachment ) Maître / Esclave Interface ATA = deux disques durs problèmes car chaque DD possède son propre contrôleur (ils doivent fonctionner en étant connectés au même bus) assurer qu'un seul contrôleur à la fois réponde à une chaque commande ATA : connecter deux disques durs par l'intermédiaire d'une nappe en chaîne. Nappe Le câble de l'interface ATA. véhicule les signaux entre les circuits de l'adaptateur de bus et le disque dur (le contrôleur) nappe à 40 fils (80 pour UDMA133 et +) Pour garantir un signal aussi intègre que possible et éliminer les risques de diaphonie, la longueur du câble ne doit pas dépasser 46 cm. DD primaire (disque 0) est qualifié de "maître" DD secondaire (disque 1) est qualifié "d'esclave" Statut de maître ou d'esclave : cavalier ou interrupteur Disque dur Plusieurs plateaux de forme circulaire en aluminium ou en verre. Contrairement aux disquettes, ces plateaux ne sont absolument pas flexibles = qualifié de dur La densité en bits par pouce carré résultat exprimé en Megabits par pouce carré ( 6.45 cm2) sert à mesurer l'efficacité de la technologie d'enregistrement utilisée par les disques durs (ex : 25,7 Gbits/pouces2) La densité en bits par pouce carré (et par conséquent la capacité) des disques durs double tous les deux ou trois Structure physique Disque dur constitué de plusieurs plateaux de forme circulaire en aluminium ou en verre. Comme les disquettes : doivent être formatés avant que l'OS puisse commencer à y écrire des données. 2 formatages: l'un physique et l'autre logique. Préparation physique de la surface magnétique : les plateaux du lecteur reçoivent des éléments de structure Structure logique Formatage du disque Partitionnement Piste trop importante pour stocker convenablement des données capacité de stockage de 50 000 octets et + donc : division en plusieurs sous-unités de stockage numérotées appelées secteurs.. Différents types de disques durs et de disquettes découpages en secteurs différents selon la densité des pistes. Les secteurs créés par la procédure de formatage standard d'un PC ont une capacité de 512 octets Partitionnement Diviser le disque dur en plusieurs zones appelées partitions pouvant chacune contenir leur propre système d'exploitation. Les OS actuels utilisent différents types de systèmes de fichiers (formatage de haut niveau) : FAT16 FAT32 NTFS EXT2 EXT3… Différence de format et de gestion du placement des données permet à plusieurs types de systèmes d'exploitation d'utiliser le même disque dur ou à un seul d'utiliser ce disque sous forme de plusieurs volumes ou lecteurs logiques. Le formatage s'effectue en trois étapes: Formatage de bas niveau - Il est fait en usine par le fabricant. Partitionnement - Fait par l'utilisateur Formatage de haut niveau - Fait par l'utilisateur (SF) Système de fichier : FAT FAT (File Allocation Table) SF utilisé par DOS, OS/2, Windows 3.x et 95 et NT table d'allocation des fichiers = une structure contenant la liste des clusters utilisés et non utilisés. La structure d'un volume est constitué: secteur de boot = Master Boot Record (MBR) contenant la structure de l'unité physique (nombre de partitions, leur taille, leur type (principale ou étendue) et le nombre d'unités logiques avec leur taille) La première table d'allocation de fichier. Une ou plusieurs copies de la table d'allocation de fichier. Le répertoire racine avec le nom de volume. La zone de données pour les fichiers et les sous répertoires. Système de fichier : FAT Caractéristique 2002 Les segments de la FAT acceptent des noms de fichiers pouvant comprendre jusqu'à 11 caractères 8 caractères pour le nom plus 3 caractères pour l'extension FAT 16 bits ne permet d'adresser qu'un volume de 2 Go au maximum ( 216 * 32768 ). FAT 16 bits FAT 32 bits Nombre d'unités d'allocation 216 = 65536 entrées 232 = 4 294 967 296 entrées Capacité avec un cluster de 32768 octets 2 147 483 648 octets = 2 Go 131 072 Go = 128 To (Teraoctet) Plan Disques Durs IDE Dell - Hard Drive 20GB 5400rpm IDE pour Optiplex GX50SF/S Dell - Hard Drive 20GB 7200rpm ATA-100 IDE pour Precision Western digital - Disque Dur - WD1200BB - 120 Go Seagate technology - Disque Dur - Barracuda ATA IV - 40 Go Seagate technology - Disque Dur - Barracuda ATA IV - 60Go Processeurs Intel Support : socket ou slot Cartes mères et BIOS Mémoires Les disques durs et interfaces (IDE) Processeurs Les ports (parallèles et séries) Les IRQ FPU Unité de calcul en virgule flottante (i. e. qui manipule des nombres réels) : C'est un circuit intégré Composant d'un microprocesseur qui est sollicitée de façon importante lors des calculs d'images ou de scènes en 3D Type de cache Write Back : Caractérise un cache dont le gestionnaire ne met pas forcément à jour la mémoire principale à chaque modification. Opposé à write-thru 155,48 € 167,44 € 329,00 € 109,00 € 119,00 € Processeurs Intel Processeurs Intel Pentium IV Du 4004 au 8088 Date de sortie Fréquence Largeur du bus de donné Largeur du bus d'adresse Mémoire adressable Nombre de transistor Taille de la gravure en micro Voltage externe Support 4004 4040 8008 8080 8085 8086 8088 Novenbre 71 Fevrier 72 Avril 72 avr-74 juin-76 juin-78 juin-79 108 KHz 747 KHz 200 KHz 2 Mhz 5 Mhz 5-8-10 Mhz 5-8 Mhz 4 bits 4 bits 8 bits 8 bits 8 bits 16 bits 8 bits 20 bits 10 bits 12 bits 14 bits 16 bits 20bits 20 bits 640 octect 640 octect 16 Ko 64 Ko 1 Mo 1 Mo 1 Mo 2 300 2 300 3 500 6 000 6 500 29 000 29 000 10 10 8 6 3 3 3 5V 5V 5V 5V 5V 5V 5V Soudé Soudé Soudé Soudé DIPP DIPP DIPP Processeurs 64 bits 1 To = 1024 Go Date de sortie Fréquences MHz Fréquences Bus CPU Largeur du bus de donné Largeur du bus d'adresse Mémoire adressable FPU interne Cache interne L1 Cache interne L2 Cache interne L3 Type de cache Taille de la gravure Nombre de transistor Voltage externe Format du CPU Support Fréquences GHz Fréquences Bus CPU Largeur du bus de donné Largeur du bus d'adresse Mémoire adressable FPU interne Cache interne L1 Cache interne L2 Type de cache Taille de la gravure Nombre de transistor Voltage externe Format du CPU Support Pentium IV Pentium IV Northwood Northwood A B janv-02 mai-02 2,26B-2,4B2,0A et 2,2A 2,53B-2,6et 2,4A 2,66-2,8 400 533 64 bits 64 bits 36 bits 36 bits 64 Go 64 Go Oui Oui 1x8 Ko et 1x8 Ko et 1x12 Ko 1x12 Ko 512 Ko Write Back 0,13 55 000 000 1,3 v PGA478 478 Socket Processeurs 64 bits Itanium : Intel Hammer : AMD Date de sortie Pentium IV Pentium IV Pentium IV Pentium IV Pentium IV Pentium IV Willamette Prescott M Xeon Xeon Xeon MP nov-00 Aout 2001 mars-02 mai-01 janv-02 mars-02 1,4-1,5-1,61,3-1,4-1,51,8-1,9-2,01,7-1,8-1,9- 1,4-1,5-1,71,6-1,7-1,8 1,9-2,0 2,0 2,0 1,4-1,5-1,6 2,2-2,4 400 400 400 400 400 400 64 bits 64 bits 64 bits 64 bits 64 bits 64 bits 36 bits 36 bits 36 bits 36 bits 36 bits 36 bits 64 Go 64 Go 64 Go 64 Go 64 Go 64 Go Oui Oui Oui Oui Oui Oui 1x8 Ko et 1x8 Ko et 1x8 Ko et 1x8 Ko et 1x8 Ko et 1x12 Ko 1x12 Ko 1x12 Ko 2x16 Ko 1x12 Ko 1x12 Ko 256 Ko + cache L3 = 512 ou 256 Ko 256 Ko 512 Ko 256 Ko 512 Ko 1024 Ko Write Back Write Back Write Back Write Back Write Back Write Back 0,18 0,18 0,13 0,18 0,13 0,13 42 000 000 42 000 000 1,7 et 1,75 1,7 et 1,75 1,3 v 1,85 1,75 1,7 PGA423 PGA478 uFC-BGA FC-BGA FC-BGA FC-BGA 423 Socket 478 Socket 478 Socket 603 Socket 603 Socket 603 Socket Itanium 2001 733-800 266 64 bits 44 bits 16 To Oui 2x16 Ko 96 Ko 2 Mo ou 4 Mo Write Back 25 000 000 3,3 PAC418 VLIF Socket Architecture 64 bits : IA64 nouvelles puces d'Intel destinées à remplacer les x86. rupture totale avec la série x86 le jeu d'instruction n'a plus rien à voir ni les éléments de l'architecture du processeur Résultat : nettement plus simple, donc plus rapide contrôle plus fin au logiciel (en particulier les compilateurs) sur le matériel. Attention à la compatibilité des applications 512 Ko Write Back 0,13 55 000 000 1,3 v PGA478 478 Socket Plan Les ports // et série Cartes mères et BIOS Initialement la communication entre les machines se faisait à travers les ports série et les ports parallèle. Mémoires Le port série Les disques durs et interfaces (IDE) Processeurs Les ports (parallèles et séries) Les IRQ Interface série Interface asynchrone le signal de cette interface n'est pas synchronisé avec celui d'un bus quelconque. les bits des données sont envoyés les uns après les autres (un seul fil pour l'émission et un autre fil pour la réception) chaque caractère est délimité par un signal de début (bit à 0) et par signal de fin standard qui peut correspondre à un ou deux bits de fin, cela permet d'indiquer que le caractère a été envoyé. L'interface asynchrone est orienté caractère on doit utiliser les signaux de début et de fin pour identifier un caractère. augmente la duré des transferts de presque 25 %. En effet pour chaque ligne de 8 bits il faut au minimum 2 bits. périphériques fonctionnant en mode bidirectionnel avec l'ordinateur (modems, scanners, souris, certaines imprimantes, lecteur de code barre, config routeur) Le port parallèle essentiellement utilisé avec des imprimantes. Port parallèle Pour le port série, les bits étaient envoyés les uns après les autres sur un seul fil. Pour le port parallèle, on utilise 8 fils pour l'émission et 8 fils pour la réception. on envoie simultanément 8 bits (taux de transfert * 8) généralement utilisée par les imprimantes, car elles utilisent beaucoup de donnés. Limite physique lié aux problèmes de diaphonie entre les fils limitation de la longueur des câbles parallèles (au delà de 10 m atténuation significative du signal) Ceci dit il existe des amplificateurs de signal Port parallèle Évolution des besoins en débit des imprimantes différents types de ports parallèles sont apparus : Unidirectionnel ( 4 bits ) Bidirectionnel ( 8 bits ) Type I ( Standard ) Type 3 DMA ( Spécifique à IBM ) EPP ( Port Parallèle étendu ) ECP ( Port à Capacités étendues ) Plan Cartes mères et BIOS Mémoires Les disques durs et interfaces (IDE) Processeurs Les ports (parallèles et séries) Les IRQ (Interruption matériel) E/S : Entrées / Sorties Clavier (entrée) 0.01 Ko/ s Souris (entrée) 0. 02 Ko/ s Disquette (sauvegarde) 50 Ko/ s Imprimante Laser (sortie) 100 Ko/ s CD- Rom (sauvegarde) 500 Ko/ s Disque Dur (sauvegarde) 5000 Ko/ s Écran graphique (sortie) 30000 Ko/ s Le processeur doit gérer des périphériques : de différents rôles (entrée, sortie, sauvegarde) de différentes vitesses ! avec des « langages » différents Sous-traitance de cette gestion à des contrôleurs E/S : Périphérique et contrôleur Chaque périphérique est « piloté » par un contrôleur qui contient souvent son propre microprocesseur, ses registres et sa mémoire « tampon » s’occupe des commandes détaillées du périphérique : gestion des incidents détection d’erreurs conversion de format ... E/S : Périphérique et contrôleur E/S par scrutation Le dialogue Processeur/ Contrôleur s ’effectue grâce aux registres du contrôleur (ses ports) contenant : des données l ’état du contrôleur les commandes à effectuer Chaque E/ S est « implantée » en mémoire : une partie de la mémoire est réservée aux E/ S lire/ écrire dans cette zone = commander le périphérique (TP1) Modes de transfert : par scrutation par interruption direct entre le contrôleur et la mémoire E/S par interruption Avantages : simplicité (le programme fait tout le travail) Inconvénients : consomme beaucoup de temps processeur E/S par transfert direct (DMA) Le processeur envoie au contrôleur DMA : l’adresse de début la longueur des données le sens du transfert puis il déclenche le transfert. Le contrôleur DMA prend en charge Avantages : prg utilisateur arrêté que pendant le temps du transfert Inconvénients : besoin de plus de matériel contrôleur doit savoir générer une interruption processeur doit savoir la détecter, ... Avantages : les commandes pour le contrôleur de périphériques les commandes et adresses pour la mémoire DMA externe / processeur transfert de données sans passer par le processeur ! DMA prioritaire sur le Bus Interruptions IRQ : exemples Appelées IRQ 16 IRQ reconnues par leur numéro Conflit si deux contrôleurs utilisent le même numéro d'IRQ sauf sur le BUS PCI = partage d'interruption Windows : Panneau de configuration / Système / Gestionnaire de périphériques : pour voir les IRQ utilisées Exemple : port série Quand un caractère est reçu par un port série il doit attirer l'attention de l'ordinateur en activant un canal de requête d'interruption. Les ordinateurs à bus ISA 8 bits comportent 8 canaux de ce type. Les ordinateurs à bus ISA 16 bits en comportent 16. IRQ : port série et parallèle Bus ISA 8bits ISA 8 bits ISA 8 bits ISA 16 bits ISA 16 bits ISA 16 bits Tous MCA Tous MCA Tous MCA Port Standard LPT1 LPT1 LPT1 LPT1 LPT1 LPT2 LPT1 LPT2 LPT3 Sur une configuration standard, le port série COM1 utilise l'IRQ4 et le port série COM2 utilise l'IRQ3. Lorsqu'un port série est installé sur un ordinateur, il doit être configuré pour utiliser des adresses d'E/S spécifiques (appelées "ports") et des interruptions (appelées IRQ) Port Série Autre 3BCh LPT2 LPT3 LPT2 LPT3 Port E/S 378h 278h 3BCh 378h 278h 3BCh 789h 278h Système Tous Tous Bus ISA Bus ISA Bus ISA Bus ISA Bus ISA Bus ISA IRQ IRQ7 Aucune Aucune IRQ7 IRQ7 Aucune IRQ7 IRQ7 IRQ7 COMx COM1 COM2 COM3 COM4 COM5 COM6 COM7 COM8 Port // Port 3F8h - 3FF 2F8h - 2FF 3E8h - 3EF 2E8h - 2EF 3EOh 2EOh 338h 238h IRQ IRQ4 IRQ3 IRQ4* IRQ3* IRQ4* IRQ3* IRQ4* IRQ3*