Plan du cours. Architecture des Ordinateurs. Licence Informatique 3ème Année. Plan du cours. Plan du cours. Architecture des ordinateurs
|
|
|
- Martin Beauséjour
- il y a 10 ans
- Total affichages :
Transcription
1 Architecture des Ordinateurs Licence Informatique 3ème Année Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Plan du cours Architecture des ordinateurs Des concepts et théories de base au fonctionnement général des micro-processeurs et ordinateurs Première partie : concepts/théories Codage et représentation des nombres Algèbre de Boole [email protected] 1 2 Plan du cours Deuxième partie : introduction à l'électronique numérique Portes, fonctions et circuits logiques Se basant sur l'algèbre de Boole Etude de composants basiques Additionneur, multiplexeur, comparateur... Réalisation de circuits plus complexes Plan du cours Troisième partie : fonctionnement des processeurs/ordinateurs Architecture de Von Neumann Fonctionnement des processeurs actuels et techniques d'optimisation des performances Mémoire cache, pipeline, parallélisme... Mémoires Bus Assembleur x86 3 4
2 Codage des nombres Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Représentation de l'information Un ordinateur manipule des données Besoin de coder et représenter ces données, pouvant être De nature différente Des nombres Des chaînes de caractères Des informations de tout genre De taille différente Taille fixe de X chiffres : numéro de téléphone, code postal... De taille variable : nom, adresse, texte, film vidéo Codage des nombres Plusieurs bases de codage possibles Base 10 (décimale) : base de calcul usuelle Base 24 : heures Base 60 : minutes, secondes, degrés Base 12 : douzaine Bases les plus utilisées Pour les êtres humains : base décimale Pour un ordinateur Chaque civilisation (Grecs, Romains, Chinois, Base binaire (2) et dérivées : base hexadécimale (16) ou Mayas...) avait développé des octale (8) Systèmes et bases de numérotation Origine de l'utilisation du binaire:absenceouprésence Méthodes pour compter et calculer de courant électrique (0 ou 1) comme base de codage 3 4 Historique Codage des nombres : dans un but de calcul Apparition du calcul Dès la préhistoire on comptait avec des cailloux et avec ses doigts Calcul vient du latin calculi signifiant caillou Antiquité
3 Historique Origine des systèmes de numérotation Base 10 : nombre des doigts des 2 mains Chiffres romains : V = 5 et X = 10 Base 20 : mains et pieds Moins pratique, a disparu... Base 12 : 3 phalanges et 4 doigts (le pouce sert à positionner le chiffre) Base 60 : les doigts de la deuxième main comptent le deuxième chiffre (60 = 5 x 12) Codage en base B Pour une base B, ilyab symboles différents (les chiffres de cette base) Base10:0,1,2,3,4,5,6,7,8,9 Base2:0,1 Base 4 :,,, Base 8 : 0, 1, 2, 3, 4, 5, 6, 7 unchiffre=unbit(binary digit) Base16:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 5 6 Codage en base B Dans une base B, un nombre entier positif N s'écrit sous la forme : (N) B =a n a n-1 a n-2... a 1 a 0 Avec a x qui est un des B chiffres de la base Exemples Base décimale : 1234 De droite à gauche : chiffre des unités, des dizaines, des centaines, des milliers... Base binaire : Base hexadécimale : 1C04 Base4: 7 Base B vers décimal (addition) Valeur en décimal (base 10) d'un nombre «a n a n-1... a 1 a 0»codédansunebaseB a n B n +a n-1 B n a 1 B+a 0 En prenant la valeur décimale de chaque chiffre a x Exemples (1234) 10 =1x x x10+4 (11001) 2 =1x2 4 +1x2 3 +0x2 2 +0x2+1 =16+8+1=25 (1C04) 16 =1x x x16+4 = x =7172 avec A = 10, B = 11, C = 12, D = 13, E = 14, F = 15 8
4 Base B vers décimal (Horner) Schéma de Horner Pour calculer la valeur décimale N de «a n a n-1...a 1 a 0» codé en base B P n =a n B+a n-1 P n-1 =P n B+a n-2 P n-2 =P n-1 B+a n-3... P 1 =P 2 B+a 0 =N Exemple pour (1234) 10, B=10, n=3 p 3 =a 3 xb+a 2 =1x10+2=12 p 2 =p 3 xb+a 1 =12x10+3=123 p 1 =p 2 xb+a 0 = 123 x = Base B vers décimal (Horner) Autres exemples (11001) 2,B=2,n=4 p 4 =1x2+1=3 p 3 =3x2+0=6 p 2 =6x2+0=12 p 1 =12x2+1=25 (1C04) 16, B=16, n=3 p3=1x16+12=28 p2 = 28 x = 448 p1 = 448 x = Décimal vers base B On procède par division entière par B Division du nombre décimal N par B : donne une valeur v 0 et un reste r 0 On divise v 0 par B :donnev 1 et reste r 1 On recommence pour v1 et ainsi de suite Quand v x <B,c'estfini (N) B =v x r x-1...r 1 r 0 Note:sioncontinueuneétapedeplus,r x+1 =v x avec v x+1 = 0 et on ne peut plus diviser 11 Décimal vers base B Exemple : (1234) 10 en décimal 1234 / 10 = 123 reste / 10 = 12 reste 3 12 / 10 = 1 reste 2 1 < 10 donc on arrête Résultat :
5 Décimal vers base B Exemple : (25) 10 en binaire 25 / 2 = 12 reste 1 12 / 2 = 6 reste 0 6/3=2reste0 3/2=1reste1 1 < 2 donc on arrête Résultat : (11001) Décimal vers base B Exemple : (7172) 10 en hexadécimal 7172 / 16 = 448 reste / 16 = 28 reste 0 28 / 16 = 1 reste 12 = C 1 < 16 donc on arrête Résultat : (1C04) C Cas particuliers Conversion du binaire à l'octal/hexadécimal ou inverse 1 chiffre octal = un groupe de 3 chiffres binaires 1 chiffre hexadécimal = un groupe de 4 chiffres binaires (000) 2 = 0, (001) 2 = 1... (110) 2 = 6, (111) 2 =7 Avec 3 bits on code les 8 chiffres de la base octale (0000) 2 = 0, (0001) 2 = 1... (1110) 2 =14=(E) 16, (1111) 2 =15=(F) 16 Avec 4 bits, on code les 16 chiffres de la base hexadécimale 15 Cas particuliers Exemple : ( ) 2 en octal On regroupe par groupes de 3 bits : On rajoute des zéros au début au besoin (010) 2 =2,(110) 2 =6,(001) 2 =1,(101) 2 =5 ( ) 2 = (2615) 8 16
6 Cas particuliers Exemple : ( ) 2 en hexadécimal On regroupe par groupes de 4 bits : (0011) 2 = 5, (1000) 2 = 8, (1101) 2 =13 ( ) 2 =(58D) 16 Cas particuliers Exemple : (254) 8 en binaire 2=(010) 2, 5 = (101) 2, 4 = (100) 2 On concatène dans l'autre base ces groupes de 3 bits : (254) 8 = ( ) 2 Exemple : (D46C) 16 en binaire D = 13 = (1101) 2, 4 = (0100) 2, 6 = (0110) 2, C = 12 = (1100) 2 On concatène dans l'autre base ces groupes de 4 bits : (D46C) 16 = ( ) Codage des nombres Onavulecodagedesnombresentierspositifs dans différentes bases Mais on doit aussi pouvoir manipuler des Nombres réels Nombres négatifs Codage des nombres réels Codage d'un nombre entier positif en base B : (N) B =a n a n-1 a n-2... a 1 a 0 Pour coder un nombre réel positif : on rajoute une partie fractionnaire après une virgule (N) B =a n a n-1... a 1 a 0, b 1 b 2... b m-1 b m La valeur en décimal d'un tel nombre est alors donnée par le calcul de a n B n +a n-1 B n a 1 B+a 0 + b 1 B -1 +b 2 B b m-1 B -m+1 +b m B -m 19 20
7 Conversion réel base B en décimal Exemples : 123,45 = 1 x x x x x10-2 (101,101) 2 =1x2 2 +0x2 1 +1x2 0 +1x2-1 +0x2-2 +1x2-3 =4+1+0,5+0,125=5,625 (AB,4E) 16 =10x x x x16-2 = x 0, x 0, = 171, Conversion réel décimal en base B Conversion d'un nombre décimal réel en base B Pour la partie entière Utiliser la méthode de la division entière comme pour les entiers Pour la partie fractionnaire Multiplier la partie fractionnaire par B Noter la partie entière obtenue Recommencer cette opération avec la partie fractionnaire du résultat et ainsi de suite Arrêter quand la partie fractionnaire est nulle Ou quand la précision souhaitée est atteinte Car on ne peut pas toujours obtenir une conversion en un nombre fini de chiffres pour la partie fractionnaire La partie fractionnaire dans la base B est la concaténation des parties entières obtenues dans l'ordre de leur calcul 22 Conversion réel décimal en base B Exemple : conversion de 12,6875 en binaire Conversion de 12 : donne (1100) 2 Codage des nombre réels en virgule flottante Principe et intérêts Conversion de 0,6875 Avoir une virgule flottante et une précision limitée 0,6875 x 2 = 1,375 = 1 + 0,375 0,375 x 2 = 0,75 = 0 + 0,75 Ne coder que des chiffres significatifs 0,75 x 2 = 1,5 = 1 + 0,5 0,5 x 2 = 1 = N=+/-MxB E (12,6875) 10 = (1100,1011) 2 N = nombre codé M = mantisse : nombre de X chiffres de la base B Exemple : conversion de 171, en hexadécimal E = exposant : nombre de Y chiffres de la base B Conversion de 171 : donne (AB) 16 +/- = codage du signe : positif ou négatif Conversion de 0, Le nombre est présenté sous forme normalisée pour 0, x 16 = 4,875 = 4 + 0,875 0,875 x 16 = 14,0 = déterminer la mantisse et exp. (171, ) 10 =(AB,4E) Pas de chiffre avant la virgule : 0,XXXXX x B E 24
8 Codage des nbs réels en virgule flottante Exemple : 1234,5 en base 10 On normalise pour n'avoir que des chiffres après la virgule : 0,12345 x 10 4 Mantisse codée = 12345, exposant = 4, signe = + Standard IEEE 754 : codage binaire de réels en virgule flottante Précision simple : 32 bits 1 bit de signe, 8 bits exposant, 23 bits mantisse Précision double : 64 bits 1 bit de signe, 11 bits exposant, 52 bits mantisse Codage des entiers signés en binaire Codage des entiers signés en binaire : trois méthodes Utiliser un bit de signe et coder la valeur absolue La méthode du complément logique La méthode du complément arithmétique Pour toutes ces solutions On aura toujours un bit utilisé pour préciser le signe du nombre Précision étendue : sur 80 bits Entier signé binaire : méthode du signe et valeur absolue Principe : considérer que le bit de poids fort code le signe 0 = entier positif, 1 = entier négatif Bit de poids fort : le plus à gauche Bit de poids faible : le plus à droite Les autres bits codent le nombre en valeur absolue Nécessité de savoir sur combien de bits on code le nombre pour déterminer quel bit code quoi Exemples si codage sur 4 bits Codage sur n bits Un ordinateur manipule des nombres binaires sousformede8bits=unoctet Données codées sur un ou plusieurs octets : 8 bits, 16 bits, 32 bits, 64 bits... Avec p bits, on code N valeursavec0 N 2 p -1 Avec 16 bits, on peut coder 2 16 = valeurs différentes Soit les entiers de 0 à pour les entiers positifs (0111) 2 = 7 car bit de poids fort à 0 (1111) 2 = -7 car bit de poids fort à
9 Codage sur n bits : entiers signés Pour un entier signé sur 16 bits : Nombres positifs : 0XXXXXXXXXXXXXXX Nombres négatifs : 1XXXXXXXXXXXXXXX On a 15 bits pour coder la valeur absolue du nombre soit 2 15 = valeurs possibles Pour le positif : de 0 à Pour le négatif : de -0 à Pour p bits : -(2 p-1-1) N 2 p-1-1 Inconvénient : on code 2 fois le 0 29 Entier signé binaire : complément à 1 Complément logique d'un nombre binaire Les 1 deviennent 0 et les 0 deviennent 1 Complément logique est dit «complément à 1» Codage des nombres signés avec complément logique Nb positif : comme pour un entier non signé Nb négatif : complément logique de son opposé positif Bit de poids fort code le signe : 0 = positif, 1 = négatif Exemple, codage sur un octet : ( ) 2 =7 Complément à 1 : ( ) 2 = -7 (et pas 248) Inconvénient : toujours 2 façons de coder le 0 30 Entier signé binaire : complément à 2 Complément arithmétique Complément logique du nombre auquel on rajoute la valeur de 1 Dit «complément à 2» Codage nombres signés avec complément arithmétique Entier signé binaire : complément à 2 Pour p bits, on code - 2 p-1 N 2 p-1 1 valeurs Sur 16 bits : N Ce codage est le plus utilisé, c'est le standard de fait pour coder les entiers signés Intérêts Nb positif : comme pour un entier non signé Plus qu'une seule façon de coder le 0 Grace au «+1» qui décale l'intervalle de codage des négatifs Nb négatif : complément arithmétique de son opposé positif Facilite les additions/soustractions en entier signé Bit de poids fort code le signe : 0 = positif, 1 = négatif Propriétés du complément à 2 Exemple : 6 = (0110) 2 avec précision de 4 bits comp 2 (N)+N=0 Complément à 1 : 1001 comp Complément à 2 : = (comp 2 (N))=N 31 32
10 Entiers signés en binaire : résumé Exemple pour codage de -57 pour les 3 méthodes, sur 8 bits 57 = ( ) 2 Signe et valeur absolue : Complément à 1 : Complément à 2 : Dans tous les cas Si bit de poids fort = 0 : entier positif Si bit de poids fort = 1 : entier négatif 33 Complément sur les compléments Compléments arithmétique et logique Utilisables dans n'importe quelle base, pas que en binaire Avec les mêmes propriétés dans toute base Complément logique d'un nombre N en base B Nombre pour lequel chaque chiffre a x de N est remplacé par le chiffre de valeur B 1 a x Exemple en base 8 : comp log (235) = 542 Complément arithmétique = complément logique + 1 Exemple en base 8 : comp ari (235) = = 543 Rajoute la valeur 1 quelle que soit la base considérée 34 Calculs dans une base B Les opérations arithmétiques (addition, soustraction, multiplication, division) sont réalisables dans toute base B Avec mêmes règles que pour la base décimale Retenues également mais dépendant de la base Quand on additionne 2 chiffres a et b dans la base B Si la somme des valeurs décimales de a et b dépasse ou égale B alors il y a une retenue Exemple : principes de l'addition binaire Addition binaire Exemple : : 0010 = = = 13 Autre exemple : : 1101 = = = 23 Addition de 2 nombres de 4 bits : on a besoin dans 0+0=0 cet exemple de 5 bits 0+1=1 Potentiel problème de débordement = 10 soit 0 avec une retenue de
11 Débordement Débordement : la taille allouée (8, bits) au codage d'un entier est trop petite pour coder ou stocker le résultat d'un calcul Exemple avec addition, sur 8 bits, non signé : = Besoin de 9 bits pour coder le nombre Stockage du résultat impossible sur 8 bits Exemple avec addition, sur 8 bits, signé : = Addition de 2 positifs donne un négatif! 37 Multiplication binaire Comme en décimal N'utilise que du décalage de bits et additions Exemple : 101 x 110 : 101 = 5 x 110 = = 30 Décalage d'un bit vers la gauche = multiplication par 2 Décalage d'un bit vers la droite = division entière par 2 38 Soustraction binaire Soustraction binaire : peut faire comme en décimal Exemple : = = = 2 Autre technique Utiliser les compléments à 2 et ne faire que des additions 39 Addition/soustraction binaire en signé Codage en complément à 2 Simplifie les additions et soustractions On peut additionner directement des nombres, quels que soient leurs signes, le résultat sera directement correct (si pas de débordement) et «bien codé» Soustraction d'un nombre = addition de son complément à 2 A B=A+comp 2 (B) Valable dans tous les cas, quels que soient les signes de AetB Là aussi le résultat est directement valide si pas de débordement 40
12 Addition/soustraction binaire en complément à 2 : débordement Gestion des débordements différent de l'addition non signée Une retenue sur un bit supplémentaire par rapport à la précision ne veut pas forcément dire que le résultat n'est pas stockable avec la précision utilisée On regarde les retenues des deux derniers bits (poids forts) additionnés pour savoir s'il y a eu débordement Si retenues identiques (00 ou 11) : pas de débordement Si retenues différentes (01 ou 10) : débordement On néglige systématiquement la retenue sur le bit supplémentaire pour déterminer le résultat final S'il n'y a pas de débordement, le résultat tient dans la précision requise, la retenue n'a aucune signification 41 Addition/soustraction binaire en complément à 2 : débordement Débordement (suite) Règles valables pour toute addition ou soustraction utilisant des entiers signés codés en complément à 2 Avec ce mode de codage des nombres signés, le débordement est différent du codage des entiers non signés Signe du résultat : regarde le bit de poids fort Si 0 : résultat est un nombre positif Si 1 : nombre négatif Le résultat est directement codé en complément à 2 Sa valeur absolue est trouvée par le calcul du complément à 2 42 Add./soustr. binaire en complément à 2 Exemples de calcul avec codage des entiers signés en complément à 2, précision de 5 bits Add./soustr. binaire en complément à 2 Calcul de 9 8 = calcul de 9 + comp(8) =calculde9+(-8) 9=(01001) 2 8 = (01000) 2 5 = (00101) 2-9 = (10111) 2-8 = (11000) 2-5 = (11011) 2 Calcul de : 01 --> retenues = = > retenues = = Résultat ne tient pas sur 5 bits mais calcul correct Car 2 dernières retenues sont identiques Le bit de débordement (le 6ème bit) est à ignorer, il n'a aucune signification Résultat tient sur 5 bits mais calcul faux Le 5 ème bit = 0 : nombre positif Car 2 dernières retenues sont différentes 43 Résultat = (00001) 2 =1 44
13 Add./soustr. binaire en complément à 2 Calcul de 5 8 = calcul de 5 + comp(8) = calcul de 5 + (-8) 00 --> retenues = = Calcul correct car 2 dernières retenues sont identiques Le 5ème bit = 1 : nombre négatif Add./soustr. binaire en complément à 2 Calcul de -9 8 = calcul de comp(9) + comp(8) = calcul de (-9) + (-8) 10 --> retenues = = Calcul incorrect car 2 dernières retenues sont différentes Valeur absolue du résultat = comp 2 (11101) = (00011) 2 =3 Doncrésultatde5 8= Add./soustr. binaire en complément à 2 Calcul de -5 8 = calcul de comp(5) + comp(8) = calcul de (-5) + (-8) 11 --> retenues = = Calcul correct car 2 dernières retenues sont identiques Le 5ème bit = 1 : nombre négatif Valeur absolue du résultat = comp 2 (10011) = (01101) 2 =13 On ignore systématiquement le 6ème bit Donc résultat de =
14 Algèbre de Boole Système algébrique constitué de l'ensemble { 0, 1 } Algèbre de Boole Eric Cariou Université de Pau et des Pays de l'adour Département Informatique [email protected] Variable booléenne : variable qui prend une valeur 0 ou 1 Trois opérateurs de base NON / NOT ( a ) Inverse/complémente la valeur de la variable a ET / AND ( a.b ou ab ) Retourne 1 si a et b sont à 1, sinon retourne 0 OU / OR ( a + b ) Retourne 1 si a ou b est à 1, sinon retourne 0 Origine 1 Mathématicien anglais Georges Boole, Propriétés de base Propriétés de base Involution : Idempotence : Complémentarité : Éléments neutres : Absorbants : aa aaa a.aa a.a0 aa1 aa.11.aa a00aa a11 a.00 Associativité : Distributivité : Règles de De Morgan : Optimisations : a.b.ca.b.c abcabc a.bca.ba.c ab.cab.ac aba.b a.bab aabab abcabac 3 4
15 Fonction logique Fonction logique Prend en entrée une ou plusieurs variables booléennes Retourne une valeur booléenne fonction des variables d'entrée Définition d'une fonction logique : deux méthodes Par son expression logique Combinaison des variables de la fonction via les opérateurs de base de l'algébre de boole Exemple : fonction f de trois variables a, b et c fa,b,cabbcac Par sa table de vérité Table qui définit la valeur de la fonction pour chaque combinaison de valeurs possibles en entrée 5 Tables de vérité Table de vérité pour une fonction à p variables Pour chacune des combinaisons différentes de p valeurs, préciser le résultat de la fonction Table de vérité des opérateurs de base _ a a a b a + b a b a.b Fonction logique Equivalence/passage entre expression logique etlatabledevéritédelafonction On peut toujours déterminer l'une à partir de l'autre Deux fonctions logiques sont identiques si On peut montrer via les propriétés de l'algèbre de Boole que leurs expressions logiques sont identiques Leurs tables de vérité sont identiques Note Quand on parle de fonction logique, on parle souvent de la forme correspondant à l'expression logique 7 Formes canoniques d'une fonction Pour une fonction logique à x variables Un minterme : groupe des x variables (pouvant être complémentées) liées par des ET Un maxterme : groupe des x variables (pouvant être complémentées) liées par des OU Forme canonique d'une fonction logique Première forme : union (OU) de mintermes Second forme : intersection (ET) de maxtermes 8
16 Exemples de formes canoniques Fonction à 3 variables a, b et c, exemples: Mintermes : abc,a bc,abc,abc,... Maxtermes : abc,abc,abc,abc,... Première forme canonique : fa,b,cabca bca bcabc Seconde forme canonique : ga,b,cabc.abc.abc.abc Passage aux formes canoniques Partir de la fonction et la transformer pour faire apparaître des mintermes/maxtermes complets Pour la transformation On s'appuie sur les propriétés de l'algèbre de Boole, et notamment des invariants : x.x = 0 et x + x = Exempledepassageàlapremière forme canonique Soit Premier minterme ab Il manque la variable c Transforme ab en ab(c+c) car c+c=1 Même chose pour les 2 autres mintermes D'où : fa,b,cabbcac fa,b,cabccbcaaacbb =abcabca bca bca bc 11 Exemple de passage à la seconde forme canonique Soit On passe par x = x Après développement : f(a,b,c)ababcaca bc Reste à transformer les mintermes à 2 variables : abacabccacbb Au final Et fa,b,cabbcac f(a,b,c)abca bcabc fa,b,cabcabcabc 12
17 Passage de la fonction logique à la table de vérité Pour chaque combinaison de valeurs possibles pour les variables, on détermine la valeur booléenne de f(x) (X = ensemble des variables) Exemple : fa,b,cabbcac a b c b c ab bc ac f(a,b,c) Passage de la table de vérité à la fonction logique A partir de la table de vérité : fonction sous première forme canonique Pour chaque valeur de f(x) égale à 1 On définit un minterme de toutes les variables tel que Si une variable X i = 1 on note X i, sinon on note X i La première forme canonique de f(x) est le OU de ces mintermes 14 Passage de la table de vérité à la fonction logique A partir de la table de vérité : fonction sous seconde forme canonique Pour chaque valeur de f(x) égaleà0 On définit un minterme de toutes les variables tel que Si une variable X i = 1 on note X i, sinon on note X i Le OU de ces mintermes = f(x i ) Après calcul de f(x i ), on obtient la seconde forme canonique 15 Exemple de calcul de la fonction logique sous première forme A partir de la table de vérité de l'exemple précédent f(a,b,c) = 1 quand : a = 0, b = 0 et c = 1 d'où le minterme a = 1, b = 0 et c = 0 d'où le minterme a = 1, b = 0 et c = 1 d'où le minterme a = 1, b = 1 et c = 0 d'où le minterme a = 1, b = 1 et c = 1 d'où le minterme On fait le OU de ces mintermes a bc a bc a bc abc abc fa,b,c=abcabca bca bca bc 16
18 Exemple de calcul de la fonction logique sous seconde forme A partir de la table de vérité de l'exemple précédent f(a,b,c) = 0 quand : a = 0, b = 0 et c = 0 d'où le minterme a bc a = 0, b = 1 et c = 0 d'où le minterme abc a = 0, b = 1 et c = 1 d'où le minterme abc On fait le OU de ces mintermes f(a,b,c)a bcabcabc Au final : fa,b,cabcabcabc 17 Minimisation des fonctions logiques Les formes canoniques d'une fonction logique sontunedéfinitioncorrectedelafonction,mais elles peuvent être simplifiées Pour écrire la même fonction avec le moins de termes et les plus simples possibles Pour réaliser la fonction avec moins d'éléments électroniques (portes logiques) Deux méthodes pour simplifier l'écriture d'une fonction logique Utiliser les propriétés de l'algèbre de Boole Utiliser la méthode des tableaux de Karnaugh 18 Simplification via algèbre de Boole A partir des propriétés de l'algèbre de Boole, transformer la fonction pour la simplifier Principes généraux Simplifier la fonction initiale à l'aide des propriétés de l'algèbre de Boole Appliquer la propriété d'involution (x = x) à la fonction simplifiée est parfois intéressant, mais calculs longs... Essayer de déduire d'autres simplifications après chaque simplification Exemple de simplification via algèbre de Boole Soit fa,b,c=abcabca bca bca bc En factorisant, on obtient : fa,b,c=abccbcca bc =aa bc =abc (car x + xy = x + y) On ne peut pas simplifier plus 19 20
19 Exemple de simplification via algèbre de Boole Autre exemple : On distribue et calcule le non : fa,b,ca bcbc En utilisant l'involution : f(a,b,c)bc D'où : fa,b,cbc fa,b,c(a + b)cbc On aurait pu aussi simplifier en remarquant que cbccb (car x + xy = x + y et donc x + xy = x + y) Simplification par la méthode des tableaux de Karnaugh Principes généraux Représentation sous une forme particulière de la table de vérité d'une fonction logique Détermination des blocs rectangulaires de taille 2 n (1, 2, 4, 8...) bits adjacents à 1 On en déduit la fonction simplifiée associée à la table de vérité Simplification par la méthode des tableaux de Karnaugh On représente un tableau à 2 dimensions Chaque dimension concerne une ou 2 variables Le passage d'une colonne à une colonne adjacente ou d'une ligne à une ligne adjacente modifie la valeur d'une seule variable 21 Le tableau se referme sur lui-même : la colonne la plus à gauche est voisine de la colonne la plus à droite, idem pour les lignes du haut et du bas Pour les 2 colonnes (2 lignes) extrêmes, là aussi, une seule variable doit changer de valeur entre ces 2 colonnes (lignes) Une case du tableau contient une valeur booléenne, déterminée à partir de la table de vérité et des valeurs des variables 23 Simplification par la méthode des tableaux de Karnaugh Regroupement en blocs rectangulaires des bits à 1 adjacents Tous les bits à 1 du tableau doivent être englobés dans au moins unbloc(unblocàunetaillede1,2,4,8...bits) Un bit à 1 peut appartenir à plusieurs blocs On doit créer les blocs les plus gros possibles A chaque bloc correspond un terme formé comme suit Pour le bloc, si une une variable prend les valeurs 0 et 1, on ne la prend pas en compte On ne conserve que les variables qui ne varient pas. Si une variable a resteà1:onnotea, siresteà0:onnotea Le terme logique du bloc correspond au ET de ces variables qui ne changent pas La fonction logique simplifiée est le OU de tous les termes des 24 blocs trouvés 22
20 Exemple de tableau de Karnaugh Table pour 2 variables \ a a b f(a,b) b \ groupes de 2 bits adjacents : Pour le vertical : on a toujours a = 1 donc cela donne le terme a Pour l'horizontal : idem mais avec b f(a,b) = a + b 25 Exemple de tableau de Karnaugh Table pour 3 variables a b c g \ ab c \ Bloc le plus petit : a = 0, b = 0, c = 1 Donne le terme a bc 26 Exemple tableau de Karnaugh Mais simplification pas suffisante La table se referme sur elle-même On doit également regrouper en bloc les plus grands possibles mêmes si des bits appartiennent à plusieurs blocs Le bit seul à gauche doit donc être regroupé avec la case a=1,b=0,c=1 à droite en bas de la table \ ab c \ Au final pour ce bloc, on a donc : bc 27 Exemple de tableau de Karnaugh Bloc le plus gros : a resteà1,b passede0à1etc passe de 0 à 1 On ne conserve que les variables qui ne changent pas. Donc on a le terme : a Au final : Pourquoi pour le bloc de 4 on obtient juste a? ga,b,cabc Si on fait le OU de tous les mintermes pour lequel la valeur est 1, cela donne pour ce bloc de 4 : bloc=abcabca bca bc =abccbcca Les variables d'un bloc prenant les valeurs de 0 et 1 sont donc systématiquement non significatives 28
21 Exemple de tableau de Karnaugh Tableau pour 4 variables \ ab cd \ On doit là aussi regrouper en les plus gros blocs possibles même si on recoupe d'autres blocs La table se referme sur elle-même 3 blocs : 8cases:d 4cases:bc 2cases:abc Au final : f(a,b,c,d)=d+bc+abc 29
22 Circuits logiques Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Circuit logique Circuit électronique réalisant une ou plusieurs fonctions logiques Un circuit logique est composé D'un ensemble de portes logiques De circuits logiques Le tout interconnectés entre eux 2 types de circuits logiques Circuits combinatoires : S = f(e) Circuits séquentiels : notion d'état et de mémoire 1 2 Sj= f(ei) Circuit combinatoire Circuits Logiques (1) Circuits Combinatoires Les sorties Sj sont fonctions uniquement de la valeur des entrées Ei Un circuit combinatoire est défini par une ou plusieurs fonctions logiques Définition de la valeur des sorties en fonction des entrées du circuit Algèbre de Boole et les fonctions logiques sont donc le support théorique des circuits combinatoires Un circuit se représente par un logigramme 3 4
23 Portes logiques Une porte logique Circuit combinatoire de base Réalisant une opération logique de base Exemple : OU, ET, NON, correspondant aux opérateurs de l'algèbre de Boole Une porte possède Une table de vérité et/ou une expression logique définissant son résultat en fonction de son/ses entrée(s) Un symbole graphique Porte NON (NOT) 1 entrée, 1 sortie NON a est noté a _ a a Porte NON 5 6 Porte ET Porte OU Porte ET (AND) 2 entrées, 1 sortie aetbest noté a.b ou ab ou a^b a b a.b Porte OU (OR) 2 entrées, 1 sortie aoubest noté a+bou avb a b a + b
24 Porte OU exclusif Porte NON ET Porte OU-exclusif (XOR) Porte NON ET (NAND) 2 entrées, 1 sortie a OU-exclusif b est noté a b a b a b entrées, 1 sortie anandbest noté a.b a b a.b 9 10 Porte NON OU Porte NON OU (NOR) 2 entrées, 1 sortie anorbest noté a + b a b a + b 11 Autres portes Pour chaque porte à 2 entrées Variantes à 3, 4,... entrées (mais toujours une seule sortie) Généralisation de la fonction logique de base à plus de 2 variables en entrée Le symbole graphique utilisé est identique mais avec plus de 2 entrées Exemples PorteETà3entréesa, b et c a pour expression logique : abc Porte NOR à 4 entrées a, b, c et d apourexpression logique : a + b + c + d 12
25 Synthèse d'un circuit logique A partir d'une fonction logique Trouver le logigramme correspondant à cette fonction Principe Simplifier la fonction logique avec 2 méthodes La méthode algébrique (algèbre de Boole) La méthode des tableaux de Karnaugh En déduire le logigramme correspondant Analyse de circuit logique Apartirdulogigrammed'uncircuit Trouver sa fonction logique Principe Donner l'expression des sorties de chaque porte/composant en fonction des valeurs de ses entrées En déduire au final la (ou les) fonction(s) logique(s) du circuit On peut ensuite Déterminer la table de vérité du circuit 13 Simplifier la fonction logique à l'aide des propriétés de l'algèbre de Boole ou les tableaux de Karnaugh 14 Exemple d'analyse de circuit Exemple de circuit logique 3 entrées, 1 sortie Composé uniquement de portes logiques Exemple d'analyse de circuit Quelle est la fonction logique de ce circuit? A partir de son logigramme fa,b,cab.b.c Après simplification fa,b,cabc En nombre de portes minimales fa,b,cacb 15 16
26 Exemple d'analyse de circuit Tabledevéritédel'exemple a b c a+b=x b b.c=y x.y x.y Exemple d'analyse de circuit Table de vérité de la fonction simplifiée a b c a c a+b+c On trouve les mêmes valeurs dans les 2 tables Les fonctions sont bien égales 18 Exemple de synthèse de circuit Additionneur demi-bit Exemple de circuit : un additionneur demi-bit Soit la fonction fa,b,cabca bca bca bc Après simplification, on obtient fa,b,cacbc 19 Réalise l'addition de 2 nombres codés chacun sur 1 bit Doit pouvoir gérer l'éventuel débordement Table de vérité du circuit avec : S : la somme des 2 bits R:laretenue x y S R Note : on parle de «demi-bit» car ne prend pas en compte une retenue en entrée (voir suite) 20
27 Additionneur demi-bit Fonctions logiques de S et R Sx yxyx Rxy y Additionneur demi-bit Additionneur n bits Faitunesommede2bits Additionneur n bits Fait l'addition de 2 nombres de n bits Deux réalisations possibles Concevoir entièrement l'additionneur à partir de rien Concevoir l'additionneur en réutilisant d'autres composants : des additionneurs 1 bit Additionneur n bits Additionneur n bits Additionneur 1 bit complet Si on veut le construire à partir de n additionneurs 1 bit Additionneur 1 bit complet Doit prendre en compte les retenues intermédiaires générées Entrées : bits x, y et retenue R et leur propagation > retenue générée par l'addition des chiffres Sorties : résultat S et retenue R 010 précédents à additionner en plus aux 2 chiffres idées pour définir l'additionneur 1 bit complet Déterminer la table de vérité de {S, R 1 }=f(x,y,r 0 ) Additionneur demi-bit précédent On obtient un nouveau circuit, plus complexe Insuffisant : prend seulement 2 bits en entrée, pas la retenue Utiliser le demi-additionneur vu précedemment On parlait donc de demi-additionneur On réutilise le circuit déjà défini Additionneur qui prend en compte une retenue en entrée : 23
28 Additionneur 1 bit complet En réutilisant le demi-additionneur Le calcul de S se fait via 2 additions x+y=zet S=z+R 0 Chaque addition est effectuée par un demi-additionneur La retenue finale R 1 est le OU des 2 retenues générées par les 2 additions Si la première addition génère une retenue : on aura forcément une retenue au final Si la seconde addition génère une retenue : on aura aussi une retenue au final Donc on fait le OU des 2 retenues 25 Additionneur 1 bit complet Additionneur 1 bit complet S : résultat de l'addition des bits a et b et de la retenue R 0 R1 : retenue générée 26 Additionneur n bits Exemple pour additionneur 4 bits On enchaîne en série 4 additionneurs 1 bit complet Le résultat est connu après propagation des valeurs calculées le long de tout le circuit C = A + B, en précision 4 bits. R : retenue globale 27 Ensembles complets de fonctions logiques de base Dans les exemples précédents On a construit des circuits avec n'importe quelles portes : ET, OU, NON, NAND, NOR, XOR... Il existe des ensembles complets de portes (fonctions logiques de base) Les portes d'un ensemble complet permettent de réaliser n'importe quel circuit (fonction logique) Peut être utile pour limiter le coût d'un circuit Le nombre de transistors utilisés pour réaliser une porte peut varier du simple au double selon les portes 28
29 Ensembles complets de fonctions logiques de base 3 ensembles complets de fonctions {ET, OU, NON} {NOR} {NAND} Pour prouver que ces ensembles sont complets Montrer qu'on peut spécifier toutes les fonctions de base à partir des fonctions d'un ensemble Ensembles complets de fonctions logiques de base Ensembles complets minimaux : contenant le moins d'éléments {ET, OU, NON} : pas minimal car aba.b : OU se définit avec ET et NON a.bab : ET se définit avec OU et NON {ET, NON} et {OU, NON} sont 2 ensembles complets mais on ne peut pas les simplifier plus Ensembles complets de fonctions logiques de base Au final : 2 ensembles complets minimaux {NAND} et {NOR} Preuve pour NAND On doit pouvoir définir à partir d'un NAND : NON : NON(a) = NAND(a,a) aa.a OU : OU(a,b) = NAND(NAND(a,a),NAND(b,b)) aba.a. b.b ET : ET(a,b) = NAND(NAND(a,b),NAND(a,b)) a.ba.b.a.b NOR, XOR : combinaisons de NON, ET et OU donc peut s'exprimer avec des NAND 31 Simplification des fonctions/circuits Pour une fonction logique, pour une question de lisibilité, on préfère la version Avec les termes les plus simples Reliés par le moins d'opérateurs En pratique, lors de la réalisation du circuit Ca ne sera pas forcément la version la moins coûteuse en terme d'éléments électroniques (transistors) Une porte NAND ou NOR est moins coûteuse en transistors qu'une porte OU ou ET 32
30 Simplification des fonctions/circuits Pour un circuit logique, on cherchera donc à le réaliser avec des portes NAND ou NOR Permet de diminuer le nombre total de transistors Permet de ne pas multiplier le nombre de portes différentes à utiliser Exemple : demi-additionneur 1 bit Sx,yx yxy On va exprimer R et S avec des NAND et Rxy Demi-additionneur avec NAND Pour transformer R et S, on passe par l'involution Sx,yx yxy S(x,y)x yxyx y x y Rxyxyxy On utilise également des NON pour simplifier Table de vérité -> circuit en portes NAND Méthode pour passer de la table de vérité au circuit réalisé avec des NAND (et des ET) 2 couches de portes NAND Première couche : Pour chaque valeur de f(x i ) égale à 1 On fait un NAND de tous les Xi en prenant Xi si Xi =1 ou Xi si Xi =0 Deuxième couche : on fait un NAND de toutes les sorties des NAND de la première couche Nécessite des portes NAND a plus de 2 entrées 35 Table de vérité -> circuit en portes NAND Exemple : avec additionneur complet 1 bit R0 x y S R Avantage de la méthode : construction systématique Inconvénient : pas toujours optimal en nb de portes 36
31 Logique à 3 états Algébre de Boole et circuits logiques : logique à 2 états Etat 0 (état «faux» ou état physique «courant électrique nul») Etat 1 (état «vrai» ou état physique «courant électrique non nul») Logique à 3 états Extensiondelalogiqueà2étatsavecuntroisième état : «état indéfini» Utilité principale : activer ou désactiver des parties d'un circuit liées aux mêmes sorties ou éléments 37 Logique à 3 états Une porte, un élément de circuit de logique à 3 états possède une entrée supplémentaire E : Enable Si E = 1, alors les sorties de cette porte/élément sont actives et ont une valeur de 0 ou 1 Si E = 0, alors les sorties ne sont pas activées et n'ont pas de signification, comme si les sorties étaient «déconnectées» E : variante complémentée Activé à 0 et désactivé à 1 On peut connecter deux sorties ensemble, seule celle qui est activée positionnera la valeur (0 ou 1) du conducteur connectant ces deux sorties Multiplexage (voir suite) 38 Logique à 3 états Exemples de portes/composants de logique à 3 états Logique à 3 états Exemple de circuit Portes (1) et (2) (1) (2) (3) Eléments les plus simples : active ou désactive la sortie o selonlavaleurdee Pour (1) : si E=1alors o=i,sie=0,alorso=?(indéfini) Pour (2) : si E=0alors o=i,sie=1,alorso=?(indéfini) Porte (3) : active les 4 sorties en fonction de E Selon la valeur de x, S correspond à la sortie d'une des 2 portes Si x = 0 alors Sab Si x = 1 alors Saba b Si E=1, alors chaque o x =i x pour tous les x, sinon tous les o x sont indéfinis 39 40
32 Circuits logiques de base Dans beaucoup de circuits, on retrouvera certaines fonctionnalités/composants logiques Additionneur 1 bit complet et additionneur n bits Multiplexeur : une des X entrées vers 1 sortie Démultiplexeur : 1 entrée vers une des X sorties Décodeur : active une des X sorties selon un code en entrée Codeur : pour 1 entrée active, fournit un code Transcodeur : pour un code A fournit un code B 41 X entrées et 1 sortie Multiplexeur Selon une adresse, la sortie prend la valeur d'une des X entrées Circuit combinatoire avec Une sortie K Une adresse codée sur n bits 2 n entrées k x 42 Multiplexeur à 4 entrées 4 entrées, adresse sur 2 bits : a et b Tabledevérité a b K k k k K 3 Ka,bk 0 a bk 1 abk 2 a bk 3 ab D'autres choix de multiplexage sont possibles 43 Multiplexeur 4 entrées Logigramme et symbole pour le multiplexeur à 4 entrées 44
33 Multiplexeur 4 entrées Variante avec logique à 3 états Selon la valeur de a et b, on ne redirige qu'un des quatre k x vers K 1 entrée, X sorties Démultiplexeur Selon une adresse, une des X sorties prend la valeur de l'entrée Circuit combinatoire avec 2 n sorties k x 1entréeK Une adresse codée sur n bits Démultiplexeur à 4 sorties 4 sorties, adresse sur 2 bits : a et b Valeurs des k x sortiesselonaetb a b k0 k1 k2 k K K K K k0a bk k2a bk k1abk k3abk 47 Démultiplexeur à 4 sorties Logigramme et symbole pour le démultiplexeur à4sorties 48
34 Codeur Active un code selon l'une des X entrées actives 2n (en général) entrées 1 entrée active (valeur 1) Les autres sont toutes désactivées (valeur 0) Code en sortie : sur n bits Exemple classique de codeur Numérotationde0à2 n -1 des entrées Le code représente le numéro de l'entrée codé en binaire Codeur sur 3 bits 3bitsS x en sortie et 8 entrées E y E0 E1 E2 E3 E4 E5 E6 E7 S0 S1 S Décodeur Active une des X sorties selon un code Code : sur n bits Nombre de sorties : 2 n (en général) Exemple classique de décodeur Numérotation de 0 à 2 n -1 des sorties Le code représente le numéro codé en binaire de la sortie à activer 51 Décodeur sur 3 bits 3bitsS x :8sortiesE y S2 S1 S0 E0 E1 E2 E3 E4 E5 E6 E
35 Transcodeur Fait correspondre un code A en entrée sur n lignes à un code B en sortie sur m lignes Exemple avec n = 3 et m = 5 Circuits Logiques (2) Circuits Séquentiels a2 a1 a0 b4 b3 b2 b1 b Circuits séquentiels Circuits combinatoires Les sorties ne dépendent que des valeurs des entrées Circuits séquentiels Ajout des notions d'état et de mémoire Ajout de la notion de temps (horloge) Circuits séquentiels Les valeurs de sorties du circuit dépendent Des valeurs en entrée De valeurs calculées précédemment De l'état dans lequel on se trouve Théories utilisées pour étudier/spécifier les différents types de circuits Circuits combinatoires : algèbre de Boole Circuits séquentiels : théorie des automates finis 55 56
36 Automate fini Un automate fini possède un nombre fini d'états Il est caractérisé, pour un couple d'instants (t, t+1), par Sa réponse S Son entrée E Son état Q Automate fini 3 façons de déterminer un automate Fonctions de transfert S(t+1)=f(Q(t),E(t)):sortieàt+1 dépend des entrées et états à t Q(t+1) = g ( Q(t), E(t) ) : état à t+1 dépend des entrées et états à t Tables de transition : tables des fonctions f et g Valeurs de Q(t+1) et S(t+1) pour chaque combinaison de valeurs de E(t) et Q(t) Diagrammes d'états ou de transitions Exemple d'automate fini Mémoire binaire : stocke 1 bit 1entrée Si 0, on mémorise la valeur 0 Si 1, on mémorise la valeur 1 2 états : valeur 0 ou valeur 1 Principe A t on est dans un état X, à t+1, on passe dans un état Y selon la valeur de l'entrée à t La sortie S à t+1 prend la valeur de l'état à t 59 Exemple d'automate fini Fonctions de transfert S(t+1) = Q(t) : la sortie à t+1est égale à l'état à t Q(t+1) = E(t) : l'état à t+1est égal à l'entrée passée à l'état t Tables de transitions : valeurs de Q(t+1) et S (t+1) en fonction de E(t) et Q(t) \ E(T) 0 1 \ E(t) 0 1 Q(t) Q(t) S(t+1) Q(t+1) 60
37 Exemple d'automate fini Diagramme d'états/transitions Caractéristiques électriques et temporelles D'un point de vue électrique et idéal Un0correspondà0volt(parfoisà-V m volts) Un 1 correspond à +V m volts En pratique 2 niveaux : niveau haut V h et niveau bas V b 0<V b <V h <V m Pour un voltage v 0<v<V b : représente un 0 V h <v<v m : représente un 1 61 V b <v<v h : indéfini 62 Caractéristiques électriques et temporelles Changement de valeur (0 -> 1 ou 1 -> 0) Idéalement : instantané En pratique : prend un certain temps, délai de montée (0 -> 1) et de descente (1 -> 0) Passaged'unsignalautraversd'uneporte Délais Exemple : traversée d'une porte NON E=1puispasseà0,S=E Idéalement : instantané En pratique : prend un certain temps Délai de propagation 63 64
38 Délais Voltages V m : voltage correspondant au 1 idéal V h : voltage haut, minimum pour avoir un 1 V b : voltage bas, maximum pour avoir un 0 Délais Sitempsdemontéeoudedescentetroplong On reste relativement longtemps entre V b et V h : état indéfini La sortie oscille alors entre 0 et 1 Délais t d :tempsdedescente,passagede0à1(voltagedev h àv b ) t m : temps de montée, passage de 0 à 1 (voltage de V b àv h ) t p : temps de propagation dans la porte (pris à la moyenne de V h et V b ) Contraintes temporelles des circuits Un circuit est formé de plusieurs portes Chemin critique : chemin le «plus long» pour la propagation des signaux à travers le circuit Détermine le temps total de propagation des signaux à travers tout le circuit Temps minimal à attendre pour avoir une sortie valide Intuitivement : chemin passant par le plus grand nombre de portes Mais dépend aussi du temps de propagation de chaque type de porte 67 Horloge A cause de tous les délais (montée, descente, propagation) Un signal n'est pas dans un état valide en permanence Idée : on ne lit ses valeurs qu'à des instants précis et à des intervalles réguliers Instants donnés par une horloge Horloge Indispensable aussi dans le cas des circuits séquentiels synchrones pour savoir quand on passe de t à t+1 68
39 Horloge Signal périodique Horloge 1demi-périodeà0,l'autreà1 Début d'une nouvelle période : instant t i Pour exemple précédent du NON Instant t 1 :E=1,S=0 Mémoire sur 1 bit Circuit séquentiel basique : mémoire sur 1 bit Possède une variable binaire codée sur 1 bit Sa valeur est conservée ou modifiable dans le temps Mémoires 1 bit peuvent être réalisées avec des bascules Instant t 2 :E=0,S=1 CLK = Clock = signal d'horloge Bistable et bascule Bistable : 2 états stables dans le temps Principe général d'une bistable : 2 portes non (inverseurs) en opposition Bascule : composant qui met en oeuvre une bistable Entrée/sorties 2 entrées : R et S Bascule RS 1 sortie Q qui correspond à l'état stocké Principe : la valeur de Q à t+1 dépend de R, SetdelavaleurdeQàt R=reset:remiseà0deQ S=set:miseà1deQ Possibilité de passer d'un état à l'autre, de changer S=1etR=0:Qmisà1 l'état mémorisé S=0etR=1:Qmisà0 Plusieurs façons de gérer et changer l'état S=0etR=0:Qgardesavaleur,maintien S=1 et R=1 : Q indéterminé Plusieurs types de bascules : RS, D, JK
40 Bascule RS Table de vérité/transition du circuit et son tableau de Karnaugh Q R S Q \ RS Q \ X X X X Q+SQR Q + : valeur de Q à l'instant suivant Bascule RS Tables de vérité/transition dérivées R S Q+ Q -> Q+ R S Q 0 0 X X X Logigramme de la bascule RS, avec des portes NOR Dans tableau : X = valeur non connue mais sans influence, on peut regrouper dans les blocs à types de bascules Bascule asynchrone Sorties recalculées à chaque changement des valeurs en entrée Plus précisement : recalculées «en permanence» Exemple : la bascule RS précédente Bascule synchrone Sorties recalculées en fonction d'un signal d'horloge en entrée Nécessite une entrée de contrôle pour ce signal d'horloge 2 modes Sur niveau (dit «latch») Recalcule les sorties et l'état quand le signal d'horloge est à 1 Sur front (dit «flip-flop») 3 types de bascules Détermination du temps suivant (passage de t à t+1) selon le type de bascule Asynchrone Recalcule au moment où le signal d'horloge change de valeur Frontmontant:passagede0à1 Front descendant : passage de 1 à 0 Quand on recalcule, les valeurs prises pour l'état et les entrées Note : on utilise en général un signal d'horloge sur l'entrée de sont celles juste avant de passer à t+1, quand on est encore à t contrôle, mais n'importe quel signal peut être utilisé en pratique Quand les entrées changent et la sortie est recalculée Synchrone sur niveau Quand le niveau (1 en général, mais 0 aussi) est atteint Synchrone sur front Au moment du passage de 0 à 1 ou de 1 à 0 selon le type de front utilisé par la bascule Dans tous les cas
41 D=delay 2 entrées Bascule D latch D : la valeur en entrée C : entrée de contrôle, généralement un signal d'horloge 1sortieQ Q + =DsiC=1 Q + = Q si C = 0 Si C est un signal d'horloge Retarde le signal en entrée D d'une période d'horloge Bascule D latch TabledevéritédelabasculeD D C Q Q Q+DCQC Versions condensées : (C=1) D Q+ C Q Q D Bascule D latch Réalisation d'une bascule D à partir d'une bascule RS S=CDetR=CD Pour S Pour bascule D, Q+ = 1 si C = 1 et D = 1 Pour bascule RS, Q+ = 1 si S = 1 et R = 0 Pour R Pour bascule D, Q+ = 0 si C = 1 et D = 0 Pour bascule RS, Q+ = 0 si S = 0 et R = 1 Avec S = CD et R = CD, tout est cohérent Et le maintien Q += Q de la bascule D lorsque C=0 est cohérent avec le maintien de la RS : R=S=0 79 Bascule D latch Logigramme de la bascule D latch 80
42 Bascule D flip-flop Bascule D flip-flop Variante de la D latch Passage à t+1quand front montant de l'horloge En pratique, la D latch fonctionne de la même façon Exemple de chronogramme avec D = et Q(0) = 0 81 Bascule JK asynchrone JK = «rien de particulier», variante de RS Comme pour RS mais ajoute le cas de R=S=1 Si J = K = 1 alors Q+ = Q J K Q Q+ Q+J QKQ \ JK Q \ J K Q Q Q Représentation des différents types de bascule Bascule asynchrone Pas d'entrée CLK ou de contrôle Bascule synchrone Entrée CLK Synchrone sur front : rajoute un triangle sur l'entrée de contrôle Si «rond inverseur» Bascule latch Modifie la sortie quand valeur d'horloge à 0 (1 par défaut) Bascule flip-flop Représentation des différents types de bascule De gauche à droite Bascule RS asynchrone Bascule D latch sur niveau 1 Bascule D flip-flop sur front montant Bascule D latch sur niveau 0 Bascule D flip-flop sur front descendant Actif sur front descendant (montant par défaut) 83 84
43 Utilisation des bascules Utilisation des bascules pour créer des circuits ayant un état Compteurs Registres Mémorisation d'un mot mémoire, décalage vers la droite/gauche du mot... Mémoires (voir le cours sur les mémoires) Exemple : compteur cyclique sur 3 bits Compteur 3 bits Utilisation de 3 bascules D Principe Chaque bascule prend en entrée D un signal d'horloge Fournit en sortie un signal d'horloge de fréquence divisée par 2 En mettant en série les 3 bascules 3 signaux d'horloge à 3 fréquences différentes Représente les combinaisons de bits pour les valeurs de 0 à 7 Valeur en décimal sur 3 bits Incrémentation de +1 à chaque période d'horloge Repasse à 0 après Compteur 3 bits Chronogramme du compteur 3 bits Version idéale, ne prend pas en compte les temps de propagation à travers les bascules (voir TD/TP) Registre Registre : mot mémoire de X bits Composant utilisé en interne dans un processeur pour stocker des valeurs lors de l'exécution d'un programme par ce processeur Exemple : registre 4 bits 4 bascules D stockent les 4 bits 4bitsIx en entrée pour écrire le mot 4bitsOx en sortie pour récupérer la valeur du mot 87 Une entrée L (pour «load») précise si on conserve la valeur du mot stocké (valeur 0) ou écrit le mot avec les 4 bits en entrée (valeur 1) 88
44 Registre 4 bits Selon la valeur de L, à chaque front montant de l'horloge, les sorties des multiplexeurs prennent les valeurs i x ou reprennent les valeurs déjà stockées par les bascules Circuits synchrone et asynchrone Circuit synchrone Tous les éléments/composants du circuit devant être synchronisés le sont avec le même signal d'horloge Circuit asynchrone Tous les éléments/composants du circuit devant être synchronisés ne le sont pas avec le même signal d'horloge Circuits synchrone et asynchrone Exemple du compteur 3 bits Circuit est asynchrone car plusieurs signaux d'horloges différents utilisés par les bascules Chaque bascule calcule donc sa sortie à des moments différents Même si certains sont communs à plusieurs bascules Les bascules D utilisées sont des bascules synchrones flipflop mais le circuit lui est bien asynchrone Exempleduregistre4bits Synchrone car les 4 bascules D flip-flop utilisent toutes les 4 le même signal d'horloge 91
45 Historique et architecture générale des ordinateurs Eric Cariou Département Informatique Université de Pau et des Pays de l'adour Ordinateur Ordinateur : une définition (Hachette) Machine capable d'effectuer automatiquement des opérations arithmétiques et logiques (à des fins scientifiques, administratives, comptables,... ) à partir de programmes définissant la séquence de ces opérations. But d'un ordinateur Définir et exécuter des séquences de calcul [email protected] 1 2 Apparition du calcul Historique Dès la préhistoire on comptait avec des cailloux et avec ses doigts Calcul vient du latin calculi signifiant caillou Antiquité Chaque civilisation (Grecs, Romains, Chinois...) avait développé des Systèmes et bases de numérotation Méthodes pour compter et calculer Ensuite sont apparus les outils pour aider aux calculs 3 Outils de calcul Historique Les premiers : boulier chinois, abaque 17 ème siècle : la science s'intéresse de plus en plus aux outils de calcul 1620 : règle à calcul (selon les principes de Neper) 1623, Shickard : première machine à calculer, roues dentées et retenues 1642, Pascal : machine faisant des additions et soustractions de 6 chiffres (la Pascaline) 1674, Leibniz : calculatrice avec 4 opérations arithmétiques 4
46 Historique Automatisation des calculs 1728, Falcon : planchette de bois trouée pour commander un métier à tisser 1805, Jacquard : utilise à la place des cartons perforés, perfectionne le système 1834, Babbage : utilise un système de commande pour des machines à calculer On pouvait programmer des calculs Le «premier ordinateur» Notions de processeur, entrées/sorties, mémoire... Mais trop complexe pour la technologie de l'époque 5 Historique Avancées théoriques 1854, Boole : algèbre de Boole, logique symbolique 1938, Shannon : liens entre nombres binaires, algèbre de Boole et les signaux électriques 1936, Turing : machine de Turing Naissance de l'ordinateur Fin des années 30/début 40, plusieurs prototypes fonctionnant en binaire et basés sur logique booléenne Ex : 1941, Zuse : Z3, calculateur utilisant une technologie électro-mécanique 1945, Eckert & Mauchly : ENIAC (Electronical Numerical Integrator And Calculator) 6 ENIAC Historique Premier calculateur/ordinateur moderne Entièrement électronique Utilise des tubes à vide et des relais Machine universelle, programmable Utilise un système décimal Inconvénient : difficulté de passer d'un programme à un autre (6000 commutateurs connectables pour programmer) 30 tonnes, forme de U de 6 mètres de large et 12 de long 7 Historique Avancée majeure : Von Neumann, 1945 Idée : stocker le programme à exécuter dans la mémoire de l'ordinateur Avant : suite séquentielle d'instructions Programme était généralement entré via des cartes perforées Maintenant Le programme peut prendre des décisions selon des résultats intermédiaires Changer de chemin dans la séquence d'instructions Effectuer des tests, des boucles, des sauts conditionnels... Von Neumann définit également une architecture générale : naissance de l'ordinateur 8
47 Machine de Von Neumann Machine de Von Neumann = ordinateur Machine universelle contrôlée par un programme Les instructions du programme sont stockées en mémoires et codées en binaire Les instructions sont exécutées en séquence par défaut Mais le programme peut en modifier l'ordre d'exécution Création d'instructions pour ruptures de séquences Le programme peut se modifier 9 Architecture de Von Neumann Von Neumann a également défini l'architecture générale d'un ordinateur 5 éléments principaux Unité arithmétique et logique (UAL ou ALU) Unité de commande Unité d'entrées Unité de sorties Mémoire centrale Cette architecture est toujours en vigueur de nos jours 10 Avancées technologiques Avancées technologiques Génération 0 : 17 ème siècle à 1945 Calculateurs mécaniques Première génération : Tubes à vide Premiers calculateurs électroniques Ex: ENIAC Seconde génération : Transistors remplacent les tubes à vides Premières séries commerciales d'ordinateurs 11 Troisième génération : Circuits intégrés : permettent de placer un nombre important de transistors sur une même puce de silicium Début de la montée en puissance et de la miniaturisation 1971 : Intel 4004 Première unité de calcul (sur 4 bits) intégrée entièrement sur une seule puce Premier micro-processeur 12
48 Avancées technologiques Quatrième génération : 1980 à aujourd'hui VLSI : Very Large Scale Integration Intégration de millions de transistors sur une même puce Toujours plus de puissance et de miniaturisation à un coût toujours moindre Cinquième génération :???? Éléments principaux d'un ordinateur UAL : réalise des opérations élémentaires Arithmétique : addition, soustraction, multiplication... Logique : ET, OU, comparaison... Unité de commande Coordinateur général Lit les instructions du programme en mémoire Commande l'ual pour exécuter ces instructions Éléments principaux d'un ordinateur Mémoire centrale Stocke les programmes et les données Enregistre les résultats intermédiaires et/ou finaux Unités d'entrées et de sorties, pour communication avec En entrée : clavier, souris, disque dur,... En sortie : carte graphique, disque dur,... Éléments principaux d'un ordinateur Processeur central Contient UAL Unité de commande Mémoire cache Mémoire intermédiaire pour optimiser les performances Aussi appelé CPU (Central Processing Unit) CPU communique avec La mémoire, les entrées, les sorties via des bus 15 16
49 Bus Les systèmes/éléments sont reliés par Un ensemble de câbles faisant transiter les informations (signaux électriques) Besoin de communication entre tous les éléments Bus Maillage complet : chaque élément relié à tous les autres éléments Autre solution : partage des câbles via bus Relie plusieurs systèmes via le même câblage électrique : canal partagé (multiplexage) Seuls 2 éléments communiquent simultanément CPU Mémoire Disque dur Vidéo Bus 17 Bus En pratique : plusieurs bus +/- rapides ou partagés Dans un PC, bus rapides Bus système (FSB ou Front Side Bus) Bus de communication avec le CPU Bus mémoire : communication avec la mémoire Bus AGP (ou PCI-X) : communication avec la carte graphique Dans un PC, bus plus lents PCI : cartes réseaux, son... Connexion périphérique de stockage (DD, CD, DVD...) ATA, SATA, SCSI... Connexion de périphériques extérieurs USB, FireWire Bus AGP Carte mère PC Chipset : dispositif interconnectant tous ces bus Composé de 2 éléments PCI North Bridge Pont nord (NorthBridge) : pour les bus rapides Pont sud (SouthBridge) : pour les bus lents Cache L2 CPU FSB AGP Vidéo North Bridge RAM Mémoire USB South Bridge PCI ATA Stockage South Bridge ATA CPU RAM 19 20
50 Mémoire Les mémoires Eric Cariou Département Informatique Université de Pau et des Pays de l'adour Mémoire Dispositif capable d'enregistrer, de conserver et de restituer des informations Informations binaires pour un ordinateur On classe les mémoires selon Caractéristiques : capacité, débit... Type d'accès : séquentiel, direct... [email protected] 1 2 Organisation de l'information Unitédebase:bit Le plus petit élément de stockage Octet (ou byte) : groupe de 8 bits Le caractère (7, 8 ou 16 bits) Codage selon un standard (ASCII, Unicode...) Mot : groupement d'octets (8, 16, 32, 64...) Unité d'information adressable en mémoire Enregistrement : bloc de donnée Fichier : ensemble d'enregistrements 3 Caractéristiques des mémoires Adresse Valeur numérique référençant un élément de mémoire (un mot ou un fichier) Capacité ou taille Nombre d'informations que peut contenir la mémoire S'exprime en nombre de mots ou d'octets 128 Mmots de 64 bits, 60 Go, 512 Ko Temps d'accès Temps s'écoulant entre le lancement d'une opération de lecture/écriture et son accomplissement 4
51 Caractéristiques des mémoires Cycle mémoire Temps minimal entre 2 accès successifs à la mémoire Cycle > temps d'accès Car besoin d'opérations supplémentaires entre 2 accès (stabilisation des signaux, synchronisation...) Débit Nombre d'informations lues ou écrites par seconde Exemple : 300 Mo/s Volatilité Conservation ou disparition de l'information dans la mémoire hors alimentation électrique de la mémoire 5 Accès séquentiel Méthodes d'accès Pour accéder à une information on doit parcourir toutes les informations précédentes Accès lent Exemple : bandes magnétiques (K7 vidéo) Accès direct Chaque information a une adresse propre On peut accéder directement à chaque adresse Exemple : mémoire centrale 6 Méthodes d'accès Types de mémoire Accès semi-séquentiel Intermédiaire entre séquentiel et direct Exemple : disque dur Accès direct au cylindre Accès séquentiel au secteur sur un cylindre Accès associatif/par le contenu Une information est identifiée par une clé On accède à une information via sa clé Exemple : mémoire cache 7 2 grandes familles Mémoires non volatiles : ROM (Read Only Memory) dites mémoires mortes Leur contenu est fixe (ou presque...) Conservé en permanence Mémoires volatiles : RAM (Random Access Memory) dites mémoires vives Leur contenu est modifiable Perte des informations hors alimentation électrique Random : à prendre dans le sens «accès sans contraintes» (et non pas aléatoire) 8
52 ROM Mémoires non volatiles (ROM) «Câblage en dur» de l'information Premier type de mémoire morte, on a gardé son nom pour toute cette famille PROM : mémoire programmable une seule fois EPROM : mémoire reprogrammable (via des ultra-violets) EEPROM : mémoire reprogrammable (électriquement) Exemple : BIOS d'un ordinateur 9 Mémoires volatiles (RAM) 2 grands types de RAM DRAM : Dynamic RAM Dynamique : nécessite un rafraîchissement périodique de l'information Peu coûteuse SRAM : Static RAM Statique : ne nécessite pas de rafraîchissement Beaucoup plus rapide que la DRAM Mais beaucoup plus chère 10 Hiérarchie mémoire Dans un ordinateur, plusieurs niveaux de mémoire + - Vitesse Capacité Registres Mémoire cache Mémoire centrale Registres Se trouvent intégrés dans le CPU Un registre est un mot stockant des informations relatives à une instruction Opérandes Paramètres Résultats Peu nombreux dans un CPU - Mémoiredemasse + 11 Très rapides (vitesse du CPU) Voir le cours sur les processeurs 12
53 Mémoire cache Mémoire intermédiaire entre le processeur et la mémoire centrale Mémoire cache est intégrée dans le processeur et est cadencée à la même fréquence But de la mémoire cache Débit de la mémoire centrale très lent par rapport au débit requis par le processeur On accélère la vitesse de lecture des informations par le CPU en les plaçant (en avance) dans le cache Mémoire associative Mémoire centrale Taille : quelques centaines de Mo à quelques Go Accès direct De type DRAM car moins cher Vitesse relativement lente De type SRAM car doit être rapide Taille : de quelques centaines de Ko à quelques Mo Comparaison vitesse cache/centrale Mémoire : SDRAM-DDR 2100 Processeur : AMD Athlon XP (1.8 Ghz) Dans les 2 cas : lecture de mots de 64 bits Mémoire Fréquence de 133 Mhz et mots de 64 bits 2 accès par cycle horloge (DDR = Double Data Rate) Débit théorique maximum de 2,1 Go/s (moins en pratique) Mémoiredemasse Mémoire de grande capacité : plusieurs centaines de Mo à plusieurs centaines de Go Mémoire non volatile Stockage Très lente Exemples Processeur Disque dur Cache L1 du processeur : débit mesuré de 18 Go/s Bande magnétiques Cache L2 du processeur : débit mesuré de 5,6 Go/s DVD ou CD source :
54 Hiérarchie mémoire : conclusion Organisation de façon à ce que Le CPU accède le plus rapidement possible aux données les plus utilisées Hiérarchie Mémoire cache : rapide et petit Mémoire centrale : moins rapide et plus gros Mémoire de masse : lent et très gros Plus une mémoire est lente, moins elle est chère Pour les DRAM Réalisation de mémoires Un bit = un transistor et un condensateur Le condensateur stocke la valeur binaire Doit être rafraîchit régulièrement (pour conserver la valeur stockée dans le condensateur) Ralentit la vitesse d'accès à la mémoire Pour les SRAM Un bit = 4 transistors = 2 portes NOR Peut notamment les construire à partir de bascules RS Mémoires à partir de bascules RS Une bascule stocke un bit Un mot = un groupe de bits (8, 16...) Correspond à un groupe de 8, bascules Accès aux informations/bascules Lecture/écriture de tous les bits d'un mot en parallèle et en même temps Accès mot par mot et non pas bit par bit 19 Mémoires à partir de bascules RS Principe général pour accès aux données Bits de contrôle pour déclencher opération lecture/écriture X bits de données à écrire et X bits de données lus X = taille du mot d'accès à la mémoire Bits de contrôle Un bit d'écriture et un bit de lecture par mot Si à 1, sélectionne le mot en écriture/lecture Bits de données Un bit d'écriture en entrée par bit Sibitd'écrituredumotà1: valeurdubitàécrire Un bit de lecture en sortie par bit Si bit de lecture du mot à 1 : contient la valeur du bit lu 20
55 Mémoires à partir de bascules RS Opération d'écriture Le bit d'écriture du mot à écrire est positionné à 1 (les autres à 0) Les X bits d'écriture de bits sont positionnés et seront écrits dans le mot sélectionné Opération de lecture Le bit de lecture du mot à lire est positionné à 1 (les autres à 0) Les X bits de lecture de bits contiennent les bits du mot sélectionné 21 Mémoires à partir de bascules RS Pour un bloc mémoire de 16 mots de 8 bits En entrée du bloc mémoire Lecontenudumotàécrire:8bits La sélection des mots à lire/écrire : 16 bits Un bit pour différencier l'opération d'écriture ou de lecture. Écriture = 1, Lecture = 0 En sortie du bloc mémoire Le contenu du mot lu : 8 bits Pour sélection du mot à lire/écrire Peut utiliser un décodeur sur 4 bits : 4 vers Mémoires à partir de bascules RS Bloc mémoire général Constitué de blocs élémentaires Chque bloc élémentaire stocke un bit d'un mot Au total : matrice de 8 x 16 blocs élémentaires Pour un bloc élémentaire Mémoire à partir de bascules RS Schéma général d'une matrice 16 x 8 bits En entrée Me : bit d'écriture de mot Ml : bit de lecture de mot Be : valeur du bit à écrire En sortie Bl : valeur du bit lu 23 24
56 Mémoires à partir de bascules RS Mémoire à partir de bascules RS Pour l'écriture, en entrée de la bascule R=MeBeetS=MeBe Table de vérité Me Be R S Q Q Q blocs élémentaires Me = 0 : pas d'écriture = maintien de la valeur mémorisée dans la bascule 25 Me=1:onabienQ+=Be=lebitàécrire 26 Mémoire à partir de bascules RS Pour la lecture : portes logique à 3 états Ml = 0, pas de lecture Mémoire à partir de bistables RS Détail de la matrice 16 x 8 Ml = 1, lecture du bit Le bit lu est placé dans Bl Tables de vérité Ml Q Bl Ml Bl X 0 X 0 1 X 1 Q
57 Mémoire cache Processeur a besoin d'un débit soutenu en lecture d'instructions et de données Pour ne pas devoir attendre sans rien faire La mémoire cache Problème Mémoire centrale qui stocke ces instructions et données est beaucoup trop lente pour assurer ce débit Idée Utiliser une mémoire très rapide intermédiaire entre la mémoire centrale et le processeur Mémoire cache (ou cache tout court) Problèmes Mémoire Cache Mémoire cache doit être petite (quelques centaines de Ko ou quelques Mo) pour être efficace en terme de débit Ne peut donc pas y stocker tout un programme et ses données Solutions Algorithmes pour «deviner» et mettre dans le cache les données/instructions avant que le CPU en ait besoin Recherche bon compromis entre tailles, types de cache (données/instructions), niveaux de cache, techniques d'accès au cache... pour meilleures performances 31 Organisation en niveaux Cache est organisé en plusieurs niveaux Niveaux L1 et L2, voire L3 pour certains processeurs Cache Li+1 joue le rôle de cache pour le niveau Li Cache Li+1 plus grand que Li mais moins rapide en temps d'accès aux données Cache L1 : généralement scindé en 2 parties Mémoire Centrale Instructions Données L3 L2 L1 CPU 32
58 Organisation en niveaux Relation entre les niveaux de cache Cache inclusif Le contenu du niveau L1 se trouve aussi dans L2 Cache exclusif Le contenu des niveaux L1 et L2 sont différents Cache inclusif Taille globale du cache : celle du cache L2 Cache exclusif Taille globale du cache : taille L1 + taille L2 33 Organisation en niveaux Avantages et inconvénients de chaque approche Exclusif Cache plus grand au total L2 de taille quelconque Mais doit gérer la non duplication des données : prend du temps, L2 moins performant Inclusif Cache L2 plus performant Mais taille totale plus faible Et contraintes sur la taille de L2 (ne doit pas être trop petit par rapport à L1) Cache inclusif : historiquement le plus utilisé Mais trouve aujourd'hui des CPU à cache exclusif (AMD) 34 Performance Evaluation de la performance d'une mémoire cache Taux de succès le plus élevé possible Succès : la donnée voulue par le CPU est dans le cache L1 Ou la donnée voulue par le cache L1 est dans le cache L2... Echec : la donnée voulue n'y est pas Doit la charger à partir du niveau de cache suivant ou de la mémoire centrale A prendre en compte également Temps d'accès à la mémoire, latences : nombre de cycle d'horloges requis pour Lire une donnée dans le cache en cas de succès Performance : niveaux Choix de taille du cache et du nombre de niveaux Augmentationdelatailledelamémoirecache Augmenteletauxdesuccès Mais ne gagne pas forcément en performance car augmentation du temps d'accès proportionnellement à la taille Augmentation du nombre de niveaux (plus de 3) Pas de gain supplémentaire vraiment significatif Cache inclusif Le cache L2 doit être bien plus grand que le cache de niveau L1 car sinon on stocke peu de données supplémentaires dans L2 Aller la récupérer en cas d'échec au niveau supérieur par rapport à L1 et donc taux de succès de L2 faible Latences dépendent de la taille des niveaux et de l'organisation des données dans les niveaux 35 Ne pas oublier le coût élevé de ce type de RAM 36
59 Localité et pre-fetching Localité temporelle Une donnée référencée à un temps t aura de très fortes chances d'être référencée dans un futur proche Localité spatiale Si une donnée est référencée à un temps t, alorsilya de très fortes chances que les données voisines le soient dans un futur proche for (i=0; i < N; i++) somme += A[i]; Localité spatiale : A[i] (A[i+1], A[i+2]...) Localité temporelle : N, A, i 37 Localité et pre-fetching Pour améliorer le taux de succès du cache Pre-fetching : chargement en avance des données dont le CPU devrait avoir besoin Algorithmes de pre-fetching sont basés sur les principes de localité Localité temporelle Garder en mémoire cache les dernières données référencées par le programme Localité spatiale Charger en avance les données/instructions contiguës à une donnée/opération référencée 38 Accès par lignes mémoire Note : dans les transparents qui suivent, pour simplifier les explications, on considère que l'on a qu'un seul niveau de cache Mémoire cache = sous-partie de la mémoire centrale Comment est déterminée cette sous-partie? Principe Accès par lignes mémoire Pour le processeur Les échanges d'informations entre mémoire de niveaux Adressage via ligne : index de la ligne et déplacement différents se font par blocs d'adresses consécutives dans la ligne index déplacement Une ligne mémoire nbits mbits Car pas beaucoup plus coûteux de lire une ligne qu'un seul mot Correspondance entre les 2 adresses adresse mémoire = index taille_ligne + déplacement Et s'adapte bien au principe de localité spatiale La présence de la mémoire cache est transparente Le CPU demande toujours à accéder à une adresse en mémoire centrale (pour lecture ou écriture) Adressage d'un mot mémoire Adressage direct : adresse du mot en mémoire
60 Cohérence données cache/mémoire Lecture/écriture en mémoire centrale via cache Le cache contient une copie d'une partie de la mémoire centrale : nécessité de cohérence mutuelle Opérations de lecture/écriture sont effectuées dans le cache avec répercution sur la mémoire centrale Opération de lecture Pas de modification de valeurs : toujours cohérent Opération d'écriture Modification du contenu du cache : la partie équivalente en mémoire centrale n'est plus cohérente 41 Cohérence données cache/mémoire Cohérence cache/mémoire en écriture, 2 techniques Écriture simultanée (write-through) Quand écrit un mot d'une ligne du cache, on écrit simultanément le mot de la même ligne en mémoire centrale Écriture plus longue car accès mémoire centrale Écriture différée ou réécriture (write-back) On n'écrit le mot que dans la ligne du cache Quand cette ligne est supprimée du cache, on l'écrit en mémoire centrale 42 Cohérence données cache/mémoire Intérêt du write-back Limitation des écritures en mémoire centrale Inconvénient du write-back Problème si d'autres éléments accèdent à la mémoire en écriture Périphériques en mode DMA (Direct Memory Access) Multi-processeurs avec mémoire commune Nécessite alors des algorithmes supplémentaires pour gérer la cohérence 43 Correspondance lignes cache/mémoire Mémoire cache Contient des lignes de mots de la mémoire centrale Trois méthodes pour gérer la correspondance entre une ligne dans le cache et une ligne de la mémoire centrale Correspondance directe Correspondance associative totale Correspondance associative par ensemble Exemples avec Lignes de 32 octets Mémoire cache de 512 Ko : lignes Mémoire centrale de 128 Mo : doit être gérée via les 512 Ko de cache et ses lignes 44
61 Correspondance lignes cache/mémoire Correspondance directe (direct mapped) L lignes en cache La ligne d'adresse j en mémoire centrale sera gérée par la ligne i en cache avec i = j mod L A partir de l'adresse d'une ligne en mémoire on sait directement dans quelle ligne du cache elle doit se trouver Exemple Chaque ligne du cache correspond à 128 x 1024 x 1024 / = 8192 octets = 256 lignes Correspondance lignes cache/mémoire Correspondance directe (direct mapped) Avantage Une ligne i du cache contiendra à un instant donné une des 256 lignes j de la mémoire tel que i = j mod On sait immédiatement où aller chercher la ligne Accès très rapide à la ligne (latence d'1 cycle d'horloge) Inconvénient Devra parfois décharger et charger souvent les mêmes lignes alors que d'autres lignes sont peu accédées Peu efficace en pratique Taux de succès entre 60 et 80% Correspondance lignes cache/mémoire Correspondance associative totale (fully associative) Une ligne de la mémoire cache correspond à n'importe quelle ligne de la mémoire centrale Avantages Correspondance lignes cache/mémoire Correspondance associative par ensemble (N-way associative) Solution intermédiaire aux 2 précédentes On regroupe les lignes du cache en ensembles de N lignes Très souple et efficace pour gérer les lignes de manière Une ligne de la mémoire centrale est gérée par un optimale en terme de succès d'accès ensemble donné donc peut être une de ses N lignes Inconvénient Avantages Doit au pire parcourir toutes les lignes du cache pour savoir Plus souple et efficace que la correspondance directe si la ligne cherchée s'y trouve ou pas Temps d'accès court = 2.5 cycles pour N = 4 Au final Taux de succès : 80% à 90% Taux de succès de l'ordre de 90 à 95% Mais temps d'accès de l'ordre de (L / 2) cycles d'horloge47 Méthode utilisée en pratique car meilleur compromis 48
62 { Correspondance lignes cache/mémoire Directe Associatif total Associatif 2-way Remplacement des lignes Le cache contient une partie des lignes de la mémoire centrale Si lecture ou écriture par le CPU dans une ligne qui n'est pas dans le cache On doit charger en cache cette ligne Nécessité d'enlever des lignes pour y mettre d'autres lignes 3 méthodes pour choisir la ligne à remplacer Aléatoire La plus ancienne La moins utilisée 50 Remplacement des lignes Remplacement aléatoire Simple à mettre en oeuvre Peu efficace car peut supprimer des lignes très accédées Remplacement de la plus ancienne LRU : Last Recently Used Nécessite des compteurs associés aux lignes Dans chaque ensemble de N lignes du cache, on marque la ligne dernièrement accédée LFU : Least Frequently Used Quand besoin de remplacer une ligne dans l'ensemble, on Nécessite également des compteurs 51 prend au hasard une des N 1 lignes non marquées 52 Remplacement de la moins utilisée Remplacement des lignes Avec correspondance directe Pas besoin de choisir : on ne peut forcément remplacer qu'une seule ligne Avec les 2 autres types de correspondance Pourra utiliser une des 3 méthodes de remplacement Avec une associativité par ensemble, on peut avoir une approche intermédiaire simple (si N > 2) souvent utilisée en pratique Entre remplacement aléatoire et LRU : pseudo-lru
63 Conclusion sur mémoire cache Performances globales de la mémoire cache dépendent de plusieurs facteurs corrélés Taille de la mémoire cache et organisation des niveaux Méthode d'association des lignes entre mémoire centrale et cache Rapidité d'accès à la bonne ligne dans le cache Méthode de remplacement des lignes Algorithmes de pre-fetching Chargement en avance dans le cache de données/instructions dont le processeur devrait avoir besoin But : un taux de succès global qui doit être le plus élevé possible tout en assurant un temps d'accès bas 53 Généralement autour de 90% de nos jours
64 Les Bus et Entrées/Sorties Bus Les systèmes/éléments dans un ordinateur sont reliés par Un ensemble de câbles/lignes faisant transiter les informations (signaux électriques : bits) Ces câbles sont partagés par tous les éléments Eric Cariou Université de Pau et des Pays de l'adour Département Informatique [email protected] Bus Relie plusieurs systèmes via le même câblage électrique CPU Mémoire Disque dur Vidéo Bus 1 2 Lignes d'un bus Câbles : 3 ensembles pour un même bus Lignes d'adresse Pour identifier l'élément connecté sur le bus auquel on veut accéder Lignes de données Pour les données échangées entre les éléments via le bus Lignes de contrôle Pour gestion, contrôle du bus Timing : préciser la validité des données et adresses sur les autres lignes Commande à réaliser : lecture, écriture... Maîtres/esclaves On peut classer les éléments connectés à un bus en 2 catégories Les esclaves Ils sont passifs et répondent à des requêtes Exemple : mémoire Les maîtres Ils sont actifs et initient des requêtes Ilsprennentlecontrôledubus Exemple : processeur Il ne peut pas y avoir 2 maîtres actifs simultanément Besoin d'arbitrage 3 4
65 Transaction Transaction pour communication entre maître et esclave Obtention du contrôle du bus par le maître Transfert Transfert des données Précision des adresses et des données Envoi d'une adresse On envoie d'abord l'adresse Puis on envoie/reçoit ensuite les données Qui identifie l'esclave Lecture/écriture non-multiplexée Exemple : la mémoire centrale Adresses et données sont envoyées en même temps Et identifie des éléments chez l'esclave Exemple : une adresse en mémoire Envoi/réception des données Envoi d'une requête (lecture, écriture...) Donnée par donnée Par blocs de données Envoi de données vers l'esclave On précise une adresse Ou/et envoi de données par l'esclave On envoie/reçoit un bloc de données qui sera écrit/lu à partir Libération du bus 5 de cette adresse et aux adresses contiguës 6 Lecture/écriture multiplexée Arbitrage Contrôle d'accès au bus Pour gérer l'accès au bus si plusieurs maîtres connectés Définit la politique d'accès des maîtres Un seul maître contrôle le bus à la fois Propriétés à respecter Priorité Certains maîtres sont plus prioritaires que d'autres Équité Tous les maîtres auront leur requêtes d'accès satisfaites au bout d'un temps fini 7 Contrôle d'accès au bus Arbitrage statique Chaque maître obtient le droit de contrôle du bus à tour de rôle Avantages Trèssimpleàmettreenoeuvre Inconvénients Passe la main aux maîtres ne désirant pas accèder au bus Pas de gestion des priorités 8
66 Contrôle d'accès au bus Arbitrage dynamique Quand un maître veut accéder au bus, il en fait la requête La gestion des accès est alors faîte dynamiquement Les maîtres font leur demande d'accès en envoyant un signal de contrôle particulier Plusieurs variantes pour gérer des demandes simultanées d'accès Centralisé Par chaînage Décentralisé 9 Contrôle d'accès au Bus Arbitrage centralisé Un élément particulier centralise toutes les requêtes d'accès au bus des maîtres Lignes spécialisées sur le bus pour ces requêtes Il connaît les priorités de chacun A partir de là, c'est lui qui donne l'accès au bus au maître le plus prioritaire Lignes spécialisées sur le bus pour cette attribution 10 Contrôle d'accès au Bus Arbitrage par chaînage Contrôle d'accès au Bus Arbitrage par chaînage (suite) Les maîtres forment une chaîne avec les plus prioritaires au début de la chaîne Il y a une ligne de requête et une ligne d'occupation du bus Un élément voulant accéder au bus envoie un signal sur la ligne de requête L'arbitre envoie alors un jeton d'allocation le long de la chaîne Le premier maître qui veut accéder au bus récupère l'allocation et utilise le bus Il envoie un signal sur la ligne d'occupation pour préciser que le bus est utilisé 11 Quandlemaîtreactifàfinison opération, il désactive la ligne d'occupation Si la ligne de requête est encore active, le maître renvoie un autre jeton d'allocation Pour éviter la famine (un maître n'a jamais accès au bus) Arbitre On interdit à un maître venant d'accéder au bus de faire une nouvelle requête d'accès tant que la ligne de requête n'est pas inactive Allocation M0 Occupation M1... Mn-1 Mn Requête d'accès 12
67 Contrôle d'accès au Bus Arbitrage décentralisé Plusieurs lignes/bit de priorité sont utilisées 4 lignes : 16 niveaux de priorité Si un élément veut contrôler le bus Compare son niveau de requête à celui des requêtes en cours Pourra déterminer s'il pourra contrôler le bus 13 Accès synchrone/asynchrone Émission d'informations sur les différentes lignes en 2 modes Synchrone : signal d'horloge Horloge partagée entre l'émetteur et le récepteur Signal d'horloge généralement émis sur une ligne On sait le type d'information qui passe à tel cycle d'horloge dans une transaction (donnée, adresse, contrôle) Asynchrone : pas de signal d'horloge Nécessité d'envoyer des informations de contrôle supplémentaires Prévenir du début d'une émission De la bonne réception de la part du récepteur (acquittement) But : créer une synchronisation entre maître et esclave 14 Accès synchrone/asynchrone Synchrone A réserver pour des petites distances : < 50 cm Car problème de dispersion de signal d'horloge et de synchronisation sur longue distance Utilisé généralement Pour bus internes au CPU Bus rapides (mais court) Asynchrone Permet des bus plus longs Plus lents que le synchrone Permet de connecter des éléments fonctionnant à des vitesses différentes 15 Performances Les performances du bus sont caractérisées par Le largeur du bus Nombre de bits/lignes du bus La fréquence de fonctionnement du bus Nombre d'émission/reception de bits par ligne par seconde Type de transferts Par bloc plus efficace pour grosses données Synchronicité du bus Nombre d'éléments que l'on peut connecter sur le bus Partage de la bande passante ou attente de disponibilité du bus 16
68 Exemple : bus PCI PCI (Peripheral Component Interconnect) Exemple : bus USB USB (Universal Serial Bus) Pour connexion de carte réseau, son, contrôleurs Connexion de périphériques extérieurs de disques... Imprimantes, scanners, APN, disque dur... Fréquence : 33 Mhz ou 66 Mhz Connexion et déconnexion à chaud Largeur : 32 ou 64 bits Série Débit max théorique Une seule ligne pour émission des informations 127 Mo/s en 33 Mhz et 32 bits Débit max 509 Mo/s en 66 Mhz et 64 bits 1.5 Mo/s en version 1.1 et 60 Mo/s en 2.0 Multiplexage adresses et données 127 périphériques simultanés au plus Pas de lignes séparées pour données et adresses Bande passante partagée entre tous Envoi synchrone par blocs de données Longueur max des câbles : 5 mètres Arbitrage centralisé Entrées/Sorties Dispositif d'entrées/sorties Clavier, souris, disque dur,... Un contrôleur d'entrées/sorties gère tout cela Gestion des entrées/sorties, 2 modes Interrogatif (polling) Le CPU interroge le contrôleur à intervalles réguliers pour connaître l'état d'une E/S Interruptif Le CPU est informé par le contrôleur qu'une tâche est à réaliser via l'envoi d'une requête d'interruption Le CPU s'arrête et active le contrôleur qui réalise la tâche d'e/s 19 Entrées/Sorties Choix entre les 2 modes Dépend de la nature du périphérique d'entrée/sortie Exemples Souris En polling, 60 fois par seconde (60 Hz) Car même si la récupération de l'état de la souris prend plusieurs dizaines ou centaines de cycles d'horloge 60 x nbcycles est négligeable devant quelques millions (les CPU ont des fréquences de plusieurs Ghz) Disque dur Avec interruption Car débit très important, prend trop de temps de regarder si une opération de lecture est en cours ou pas 20
69 Plan Fonctionnement des processeurs Fonctionnement et performance des processeurs Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Unités de calcul et de commande Registres Modes d'adressage mémoire Bus internes Architecture X bits Optimisation des performances Pipeline Prédiction de branchement Jeux d'instructions Architectures superscalaire, multi-core ExempleavecAthlon64 1 Conclusion sur évolution des performances 2 Unités de calculs Unités réalisant des calculs : 3 types Calculs logiques et arithmétiques sur les entiers : ALU Calculs sur les flottants : FPU Calculs multimédia UAL (ALU : Arithmetic and Logic Unit) La plus importante, utilisée par tous les programmes Calculs simples sur les entiers Calculs logiques (comparaison, OR, NOT,...) FPU (Floating Point Unit) Calculs sur des flottants Unité multimédia Unités de calcul Diffèreselonletypeetlamarque:IntelMMXetSSE, AMD3DNow!... Fait principalement des calculs vectoriels Exécution en parallèle d'une même instruction sur plusieurs données Un processeur peut intégrer plus d'une unité de chaque type Exemple : AMD Athlon 64 3 ALU et 3 FPU : calculs en parallèle possibles Fonctions mathématiques avancées:sqrt,sin
70 Unitédecommande Unité qui coordonne le fonctionnement des autres éléments Dans le but d'exécuter une séquence d'instructions (le programme) Pour exécuter une instruction, 2 cycles se succèdent Cycle de recherche de l'instruction Cycle d'exécution de l'instruction 5 Unité de commande Constituée de plusieurs éléments Compteur Ordinal (CO) : registre contenant l'adresse du mot mémoire stockant le code de la prochaine instruction Registre d'instruction (RI) : reçoit le code de la prochaine instruction à exécuter Le décodeur : à partir du code de l'instruction, détermine l'opération à exécuter L'horloge : pour synchroniser les éléments Le séquenceur : coordonne le tout Utilise également pour l'accès en mémoire Registre d'adresse (RA) : registre contenant l'adresse du mot à accéder en mémoire Registre Mémoire (RM) : registre contenant le mot lu ou à écrire en mémoire 6 Unitédecommande 2 / 8 RA Mémoire RM CO RI Accumulateur 4 7 Décodeur 6 Horloge Séquenceur 10 UAL Unité de commande 7 Unité de commande Exemple dans le cas d'une opération utilisant une seule opérande en mémoire centrale Cycle de recherche (1) CO contient l'adresse de l'instruction à exécuter : on la place dans RA (2) Transfert de la donnée stockée en mémoire à l'adresse indiquée dans RA dans RM (3) La donnée stockée dans RM est placée dans RI Cette donnée est le code de l'opération à exécuter + adresse de l'opérande 8
71 Unité de commande Cycle de recherche (suite) (4) Le décodeur lit cette donnée et détermine L'adresse en mémoire de l'opérande Le type d'opération qui doit être exécuter (5) Le décodeur place dans RA l'adresse où est stockée l'opérande en mémoire (6) Le décodeur informe le séquenceur du type d'opération à exécuter (7) CO est incrémenté pour pointer vers la prochaine instruction à rechercher Cycle d'exécution Unitédecommande (8) L'opérande est lue en mémoire et placée dans RM (9) Le contenu de RM est placé dans un «accumulateur» ou un registre qui stocke les données en paramètres des opérations (10) Le séquenceur demande à l'alu d'exécuter l'opération 9 10 Unitédecommande Cycle d'exécution, variantes selon les instructions Si opération de branchement (saut dans la séquence d'instructions) On place le contenu de RM dans CO Pas de calcul à réaliser Si opération d'écriture en mémoire du résultat d'une opération précédente On place le contenu d'un registre de l'accumulateur dans RM pour l'écrire ensuite en mémoire Pas de calcul à réaliser 11 Unité de commande : horloge Horloge Définit le cycle de base : cycle machine (clock cycle) Utilisée pour synchroniser chaque étape des cycles de recherche et d'exécution Temps exécution d'un cycle de recherche ou d'exécution Prend un certain nombre de cycles de base Cycle CPU = temps d'exécution minimal d'une instruction (recherche + exécution) 12
72 Unité de commande : séquenceur Séquenceur Automate générant les signaux de commande contrôlant les différentes unités 2 façons de réaliser cette automate Séquenceur câblé Séquenceur micro-programmé (firmware) Avantages Câblé : un peu plus rapide Micro-programmé : plus souple et plus simple à réaliser 13 Unité de commande : séquenceur Séquenceur cablé Circuit séquentiel réalisé avec des portes de base Pour chaque instruction exécutable Un sous-circuit réalisant le contrôle des éléments pour réaliser l'opération Un seul des sous-circuits est activé selon le code renvoyé par le décodeur Séquenceur micro-programmé Une ROM contient des micro-programmes constitués de micro-instructions Le séquenceur sait exécuter en séquence des microinstructions 14 Registres Registre = mots mémoire internes au processeur Les registres de fonctionnement Compteur Ordinal (CO), Registre Instruction (RI),... Accumulateur Registres internes à l'ual Stockent les opérandes et le résultat d'un calcul Registres généraux Registres accessibles par le programmeur Servent à stocker Des valeurs souvent utilisées Des résultats intermédiaires Sans avoir besoin de repasser par la mémoire Registres Registres d'indice ou d'index (XR : index Registers) Utilisés pour parcourir plus rapidement des tableaux Jeu d'instruction particulier pour incrémenter et décrémenter leurs valeurs Possibilité d'incrémentation ou décrémentation automatique de ces registres après leur utilisation Registres de pile (SP : Stack Pointer) Pour simuler une pile dans la mémoire centrale Gain de performance et de temps 15 16
73 Registres Registres d'état (PSW : Program Status Word) Ensemble de bits représentant chacun un état particulier (drapeau ou flag) C : dépassement de capacité après un calcul de l'ual Z : résultat de l'opération est égal à 0 Jeu d'instruction pour tester ces drapeaux Exemple : saut si Z = 0 La plupart des registres sont manipulables par programme (voir le cours sur l'assembleur) 17 Modèles d'accès mémoire Le processeur exécute des opérations Avec des opérandes comme paramètres Plusieurs combinaisons possibles Exemple sur une opération d'addition : A = B + C A, B et C étant des valeurs se trouvant en mémoire centrale Peut-on y accéder directement? Doit-on les placer avant dans des registres généraux? Doit-on les placer dans l'accumulateur de l'ual? Plusieurs modèles généraux d'accès mémoire Notation : (m,n) avec m : nombre maximum d'opérandes par opération (addition...) n : nombre d'opérandes accessibles directement en mémoire centrale pour une opération 18 Modèles d'accès mémoire Modèle mémoire-mémoire @C 3 opérandes, toutes accessibles directement en mémoire Modèle mémoire-accumulateur (1,1) L'instruction LOAD place le contenu lu dans le registre accumulateur de l'ual Modèles d'accès mémoire Modèle mémoire-registre (2,1) LOAD ; R1 = contenu adr. B ADD ; R1 = R1 + contenu adr. C STORE ; place contenu R1 à adr. A L'accumulateur contient ce résultat après le calcul, le STORE le place à l'adresse mémoire précisée ADD Fonctionnement des premiers CPU 8bits Variante (2,0) possible avec ADD R1,R2 Fonctionnement classique des processeurs 16 bits Modèle pile (0,0) Utilisation d'une pile pour stocker les opérandes et les résultats
74 Modèles d'accès mémoire Modèle registre-registre (3,0) Aucun accès direct en mémoire pour une opération de calcul Tout passe par des registres LOAD LOAD ADD R3, R1, R2 STORE Architecture typique des processeurs RISC Architecture dominante actuellement Appelé aussi modèle chargement-rangement 21 Bus internes au CPU Au coeur du CPU, utilisation de bus Pour envoi de données entre les éléments Contrôleur mémoire, unités de calculs, registres... Pour envoi d'adresse Lecture/écriture en mémoire ou dans un registre... Pour commander, coordonner les éléments Chemin de données Unités gérant le traitement des données Unités de calculs Registres de tout type Pour modèle accès mémoire (3,0) on aura 3 bus de données dans ce chemin 22 Bus internes au CPU 23 Bus internes au CPU Figure transparent précédent Fonctionnement très simplifié et schématique d'un CPU de type chargement-rangement Les bus S1 et S2 : entrées de l'ual : bus d'adresse pour accès en mémoire centrale (via le cache) Data : bus de données à écrire ou lues dans mémoire centrale Manque le bus de commande entre tous les éléments Autres éléments + : incrémentation automatique du CO pour pointer sur la prochaine instruction A, B et C : registres internes de l'ual 24
75 Architecture X bits Processeurs sont souvent différenciés selon leur architecture 16, 32 ou 64 bits Historiquement : taille des registres (8, 16 bits...) Mais dans processeurs récents : registres de toute taille (16, 32, 64, 80 ou 128 bits) Selon que l'on manipule des entiers, des adresses, des flottants, des vecteurs... Normedefaitdenosjours Taille des registres généraux Un processeur 64 bits a des registres généraux de 64 bits 25 Architecture X bits Conséquences Unités de calcul entier doivent gérer des nombres de même taille que les registres généraux Bus internes doivent avoir aussi cette même taille Registre général peut contenir une adresse mémoire Définit alors aussi la taille maximale de mémoire adressable par le processeur 32 bits : 2 32 octets = 4 Go 64 bits : 2 64 octets = 18 Millions de To En pratique : codage d'adresses sur moins de bits AMD Athlon 64 : 48 bits = 256 To théorique mais 1 To en pratique 26 Augmentation des performances Recherche permanente de l'augmentation des performances des CPU Optimisation et augmentation des performances des processeurs Évolution des architectures Points principaux de cette évolution Fréquence de fonctionnement Mémoire cache Parallélisation et optimisation des séquences d'instructions Pipeline Architectures superscalaires Jeu d'instructions Chaque point influence en bien ou en mal un autre 27 Recherche du meilleur compromis 28
76 Fréquence Temps d'exécution d'une instruction Cycle CPU Idée : diminuer ce cycle Augmentation de la fréquence de fonctionnement Avantages Plus d'instructions exécutées en moins de temps Problèmes Technologiques et physique Temps de propagation des signaux électriques Dégagement de chaleur 29 Problèmes (suite) Temps de propagation Solution Fréquence Les signaux mettent un certain temps à traverser les éléments du processeur ou à circuler sur un conducteur Diminuer la finesse de gravure Conducteurs plus courts, propagation plus rapide Diminue le dégagement de chaleur Chercher d'autres technologies de réalisation de transistors et des conducteurs 30 Fréquence Problèmes (suite) Architecture, fonctionnement interne influence également la montée en fréquence Certaines opérations effectuées par le processeur ne sont plus réalisables en un temps trop court En général, pour une génération/architecture de processeur, on a une plage de fréquences Exemple avec CPU Intel : passage du P3 au P4 Intel P3 : de 450 Mhz à 1.3 Ghz Intel P4 : de 1.5 Ghz à 3.8 Ghz et plus Avec modification intermédiaire de l'architecture du P4 Changement important d'architecture pour monter en fréquence 31 Mémoire cache Processeur a besoin d'un débit soutenu en lecture d'instructions et de données Pour ne pas devoir attendre sans rien faire Utilisation de mémoire cache Mémoire intermédiaire très rapide entre la mémoire centrale et le processeur Avec algorithmes pour «deviner» et mettre dans le cache les données/instructions avant que le CPU en ait besoin Recherche bon compromis entre tailles, types de caches, niveaux de cache, technique d'accès au cache... pour optimiser les performances du cache Voir le cours sur les mémoires 32
77 Pipeline Principe du pipeline par l'exemple Restaurant Universitaire On passe, dans l'ordre devant 4 éléments Un présentoir pour les entrées Un présentoir pour les desserts Un présentoir pour les plats de résistance Une caisse Entrées Desserts Plats Chaîne de service de repas Pipeline Intérêts du deuxième mode Caisse Plusieurs personnes se servent en même temps 33 Gain de temps : plus de personnes passent pendant une même durée Meilleure gestion des éléments : toujours utilisés Inconvénients du deuxième mode Plus difficile de faire «demi-tour» dans la chaîne d'éléments Nécessite des synchronisations supplémentaires et des éléments dont le parcours prend un temps proche pour une bonne optimisation 35 Pipeline 2 modes d'utilisation pour se servir un repas Une seule personne à la fois dans toute la chaîne de service Quand elle a passé toute la chaîne et est sortie, une autre personne entre se servir Plusieurs personnes à la fois, en décalé Pers. 1 Pers. 2 Pers. 3 Pers. 4 Une personne à chaque présentoir/élément Une personne passe à l'élément suivant quand il est libre et qu'elle en a fini avec son élément courant Entrée Des. Plat Caisse Entrée Des. Plat Caisse Entrée Des. Plat Caisse Entrée Des. Plat Caisse 34 temps Pipeline Dans un processeur, utilisation d'un pipeline pour exécution d'une opération Une opération comporte plusieurs sous-opérations Pipeline pour exécution de ces sous-opérations Une sous-opération utilise une sous-unité du processeur qui n'est pas utilisée par d'autres sous-opérations (si possible...) Exemple de pipeline simple (fictif) LE : Lecture de l'instruction en mémoire DE : Décodage de l'instruction CH : Chargement des registres sources dans l'unité de calcul EX : Exécution du calcul ENR : Enregistrement du résultat dans le registre destination 36
78 Pipeline fictif détail des étapes En reprenant le chemin de donnée précédent, en modèle chargement-rangement LE : lecture instruction Accès en mémoire pour lire le mot mémoire placé à l'adresse contenue dans CO et correspondant à la prochaine instruction Résultat placé dans RM DE : décodage instruction Copie de RM dans RI puis décodage de l'opération CH : chargement des registres Pour un calcul Pour un calcul Chargement des registres A et B à partir des registres du banc Copie du registre C de l'ual dans le registre destination du banc Pour un accès en mémoire Pour un accès en mémoire Chargement de RA à partir d'un registre du banc Dans le cas d'une écriture en mémoire, chargement en plus de RM à partir Ecriture : rien à faire d'un registre du banc 37 Lecture : copie de RM dans le registre destination du banc 38 Pipeline fictif détail des étapes EX : exécution de l'instruction Pour un calcul UAL effectue le calcul Résultat disponible dans C Pour un accès en mémoire Accès à la mémoire via les bus mémoire, RA et/ou RM Si opération de lecture, RM contient le mot lu à l'adresse contenue dans RA ENR : enregistrement du résultat Pipeline Exécutions décalées de plusieurs instructions en même temps Instr. 1 Instr. 2 Instr. 3 Instr. 4 Instr. 5 Le De Ch Ex Enr Le De Ch Ex Enr Le De Ch Ex Enr Le De Ch Ex Enr Le De Ch Ex Enr Gain important en utilisant le pipeline Sans : exécution séquentielle de 2 instructions en 10 cycles Avec : exécution parallèle de 5 instructions en 9 cycles Gain théorique car nombreux problèmes en pratique... Pour optimisation : temps de passage dans chaque étape identique (ou très proche) 39 Pipeline profondeur En pratique actuellement : autour de 12/15 étages Exemples de profondeur de pipeline (nombre d'étages) pour processeurs actuels Processeurs Intel Core 2 Duo et Mobile : 14 et 12 P4 Prescott : 30 P4 (avant architecture Prescott) : 20 Génération précédente : Intel P3 : 10 Processeurs AMD Athlon 64 : 12 Génération précédente : AMD Athlon XP : 10 Processeurs de type RISC Sun UltraSparc IV : 14 IBM Power PC 970 : 16 40
79 Pipeline profondeur Intérêts d'avoir un pipeline plus profond Plus d'instructions en cours d'exécution simultanée Permet une montée en fréquence du processeur Limite de la montée en fréquence Temps de propagation des signaux A travers une unité et entre les unités du CPU Plus d'unités plus petites = temps de propagation plus courts entre les unités On peut raccourcir le temps de réalisation d'un cycle Et donc augmenter la fréquence du processeur Mais un pipeline profond pose plus de problèmes qu'un pipeline court Avec les aléas de contrôles principalement 41 Aléas Pipeline aléas Problèmes rencontrés lors de l'exécution d'instructions par le pipeline 3 familles d'aléas Aléas structurels Des sous-unités du CPU doivent être utilisées simultanément par plusieurs étages du pipeline Aléa de données Une instruction de calcul en cours d'exécution dépend d'une valeur non encore calculée Aléas de contrôle L'instruction suivante dépend du résultat d'une instruction pas encore connu (test) 42 Pipeline aléas structurels Exemple d'aléa structurel, pour notre pipeline simple Accès à la mémoire dans les étapes LE : lecture de l'instruction suivante en mémoire EX dans le cas d'une opération de lecture/écriture en mémoire Utilise une même sous-unité (accès mémoire) du processeur Solutions Attendre pour une instruction que l'unité soit disponible Peu efficace Dupliquer dans le processeur ces sous-unités Accès mémoire : intérêt de découper le cache L1 en deux parties Partie «données» avec accès via RM et RA Partie «instructions» avec accès via CO et RI Peut alors faire un EX d'accès mémoire et un LE en même temps : 2 accès mémoires en parallèle sur les 2 parties différentes du cache L1 43 Pipeline aléas structurels Aléa structurel EX de instr. 2 et LE de instr. 5 : accès à la mémoire Instr. 1 Instr. 2 Instr. 3 Instr. 4 Instr. 5 Le De Ch Ex Enr Le De Ch Ex Enr Le De Ch Ex Enr Le De Ch Ex Enr Le De Ch Ex Enr Instr. 1 Le De Ch Ex Enr Solution par attente : Instr. 2 Le De Ch Ex Enr décalage de toutes les Instr. 3 Le De Ch Ex Enr instructions suivantes Instr. 4 Le De Ch Ex Enr Instr. 5 Le De Ch Ex Enr Instr. 6 Le De Ch Ex Enr 44
80 Pipeline aléas de données Aléa de données R1 = 10 + R2 R3 = R1 x 20 (R1, R2 et R3 sont des registres) Problème Le calcul de R3 ne peut se faire que quand R1 est connu R1 est écrit R1 = 10 + R2 Le De Ch Ex Enr R3 = R1 x 20 Le De Ch Ex Enr Instr. 3 Le De Ch Ex Enr Instr. 4 R1 doit être lu Le De Ch Ex Enr Instr. 5 mais n'est pas encore écrit Le De Ch Ex Enr Pipeline aléas de données Aléa de données Suspension du pipeline R1 = 10 + R2 R3 = R1 x 20 Le De Ch Ex Enr Le De Ch Ex Enr La deuxième instruction est suspendue tant que R1 n'est pas écrit Court-circuit du pipeline 45 Pipeline aléas de données Aléa de données : solutions Arrêter l'exécution du calcul de R3 tant que R1 n'est pas connu : peu efficace Changer l'ordre d'exécution des opérations pour éviter ou réduire le problème Court-circuiter au plus tôt le pipeline quand la valeur de R1 est connue Le résultat du dernier calcul est dans le registre C de l'ual On peut le réinjecter au cycle suivant dans le registre A ou B de l'ual Pipeline nouveau chemin de données Nouveau chemin de données avec court-circuit du pipeline et accès mémoire via 2 parties du cache 46 Après l'étape EX de la première instruction, on connaît la valeur de R1 : on la réinjecte directement dans l'ual sans attendre son écriture au niveau du banc de registre R1 = 10 + R2 R3 = R1 x 20 Le De Ch Ex Enr Le De Ch Ex Enr 47 48
81 Pipeline aléas de données Aléa de données : cas avec réordonnancement R1 = 10 + R2 R3 = R1 x 20 R4 = 2 x R5 R6 = 10 + R5 Dépendance de données entre les 2 premières instructions : aléa de données dans le pipeline Réordonnancement pour éviter cet aléa On place les 2 autres instructions entre ces 2 instructions R1 = 10 + R2 R4 = 2 x R5 R6 = 10 + R5 R3 = R1 x Pipeline aléas de données Aléa de données : réordonnancement R1 = 10 + R2 R4 = 2 x R5 R6 = 10 + R5 R3 = R1 x 20 Le De Ch Ex Enr R1 est écrit Le De Ch Ex Enr R1 est lu Le De Ch Ex Enr Le De Ch Ex Enr Grâce à ce réordonnancement : pipeline non suspendu pour aucune des 4 instructions Utilisation optimale du pipeline 2 types de réordonnancement Logiciel : fait par le compilateur Matériel : fait par le processeur en interne 50 Pipeline aléas de contrôle Aléas de contrôle if (R1 > 30) then R3 = 10 + R1 else R3 = 20 + R1 Fonctionnement du saut conditionnel En fonction du résultat du test, le contenu de CO est modifié avec l'adresse de la prochaine instruction Phase EX : exécution de la comparaison par l'ual PhaseENR:écrituredeCOenfonctiondurésultatdutest Problème Doit connaître la valeur du test de valeur de R1 pour savoir quelle est l'instruction suivante à exécuter 51 Pipeline aléas de contrôle Aléas de contrôle (suite) Solutions Attendre que le bon CO soit connu : peu efficace Réordonnancer le code : pas toujours suffisant et possible Prédire quelle sera la valeur de R1 et commencer le calcul suivant selon cette prédiction Solution avec attente CO est écrit saut cond. Le De Ch Ex Enr instr. suivante Le De Ch Ex Enr lecture de CO Doit attendre le ENR précédent avant de faire le LE : on passe en exécution purement séquentielle! 52
82 Prédiction de branchement Aléas de contrôle : prédictions de branchement pour en limiter les conséquences Indispensable pour efficacité du pipeline A l'aide de tables statistiques dynamiques Prédit le résultat d'un test On commence ensuite l'instruction suivante prédite Problème si prédiction erronée On a commencé des calculs inutiles Vidage du pipeline pour reprendre dans un état correct Trés couteux en temps Très pénalisant pour des pipelines profonds Prédiction de branchement Deux éléments pour fonctionnement Tampon des branches cibles (BTB : Branch Target Buffer) Contient les adresses des branches du programme Table de l'historique des branchements (BHT : Branch History Table) Mémoriser l'historique des choix de branchements faits précédemment pour faire des prédictions Fonctionnement dépend de l'algorithme utilisé Exemple basique : 2 bits associés à chaque branche 00 : branchement jamais pris jusqu'à présent 01 : branchement parfois pris jusqu'à présent 10 : branchement souvent pris jusqu'à présent 11 : branchement toujours pris jusqu'à présent Mise à jour des BTB et BHT pendant l'exécution du programme Prédiction de branchement Principesdelaprédiction Mémoriser les adresses des branches du programme et regarder celles qui sont souvent atteintes Exemple 1 R0 = R2-3 2 if R1 = 0 jump suite 3 R3 = 2 x R1 4 R4 = R3 + R1 suite: 5 R3 = 0 Deux branches : adresses 3 et 5 Prédiction : lors du saut conditionnel à l'adresse 2, on prendra la branche la plus souvent atteinte 54 Prédiction de branchement Pour plus d'efficacité des prédictions Augmenter la taille du BTB et du BTH Pour pouvoir gérer plus de branches (BTB) Si BTB trop petit, il ne stocke pas toutes les branches : pas de prédictions possibles pour toutes les branches Pour avoir un historique plus long et précis (BHT) Pb : temps d'accès plus long car tables plus grandes Augmenter la qualité de la prédiction avec des algorithmes plus efficaces Pb : prend un temps plus long qu'avec des algorithmes plus simples Dans les 2 cas : augmentation du temps de la prédiction Contraire au besoin de connaître au plus tôt la prédiction Limite la montée en fréquence du processeur Efficacité des prédictions En moyenne, autour de 90% des prédictions sont correctes 56
83 Pipeline conclusion Influence de la profondeur du pipeline Avantage d'un pipeline long Plus d'instructions en exécution parallèle Montée en fréquence du processeur facilitée Donc gain en nombre d'instructions exécutées en un temps donné Inconvénient d'un pipeline long Une erreur de prédiction est plus coûteuse Plus d'opérations en cours d'exécution à annuler Solution globale Trouver le bon compromis entre gain d'un coté et perte de l'autre Améliorer les algorithmes et unités de prédiction de branchement 57 Parallélisation Généralisation de la parallélisation d'exécution d'instructions On a vu le système du pipeline : plusieurs instructions simultanées en exécution décalée Approches complémentaires Ajouter des unités (approche superscalaire) Unités de calculs, de commandes ou même pipeline complet Permettre l'exécution complète ou partielle de plusieurs instructions en parallèle Exemple : AMD Athlon 64 3 UAL, 3 FPU et 3 unités de décodage d'instructions Mettre plusieurs processeurs sur la même puce Approche «multi-core» 58 Parallélisation Intérêts de l'ajout d'unités Peut faire plusieurs calculs/traitements en même temps Problèmes de l'ajout d'unité Nécessite plus de synchronisation entre unités Prend du temps Pas toujours pleine utilisation de toutes les unités Exemple : on n'a pas forcément des séries de X additions en permanence même après réordonnancement Coût important en terme de transistors et de place Allongement des distances : temps de propagation Coût de fabrication plus important Parallélisation : calcul vectoriel Autre technique Unités de calcul vectoriel Effectuer un même calcul avec plusieurs valeurs en parallèle (vecteur de 4, 2 ou 1 valeurs) Au final : rarement plus de 2 ou 3 unités d'un type 59 Que X unités complètes standard non vectorielles 60 Parallélisme SIMD : Single Instruction, Multiple Data Avantages Généralement plus simple et moins lourd de paralléliser Addition standard Addition vectorielle à 4 valeurs En ayant une unité vectorielle avec vecteurs de taille X
84 Parallélisation : multi-core Approche multi-core Mettre plusieurs coeurs de processeurs sur la même puce (le même «die») 2 cores dans les approches actuelles : dual-core Evolutions futures prévisibles : 4, 8... cores par die Utilité : faire du multi-processeur mais avec un seul Possibilité de multi-processeur sur des cartes mères ayant un seul support physique de processeur Au niveau logiciel, permet l'exécution de threads en parallèle Plusieurs applications en parallèle Plusieurs threads d'une même application Parallélisation : multi-core 3 approches actuellement chez Intel/AMD Intel Pentium D / XE : approche «basique» Deux processeurs entièrement dupliqués sur la même puce, avec chacun embarquant Unités de commande Unités de calculs Mémoire cache (niveaux L1 et L2) Chaque core communique directement et uniquement avec le chipset via le FSB Pb de performances pour communication entre 2 cores car on passe par le chipset Occupation inutile du FSB avec les communications entre les cores Parallélisation : dual-core ApprocheAMDAthlon64X2 Parallélisation : dual-core 2 cores entièrement dupliqués également mais avec Un bus de communication interne au CPU très rapide entre les 2 cores Améliore les performances de communication entre les 2 cores Approche Intel Core 2 Duo Duplication des 2 cores mais avec un cache L2 commun Meilleure performance pour communication entre 2 cores On passe par le cache directement sans passer par un bus dédiéoulefsb 63 Problème dans tous les cas Gérer la cohérence des données entre les caches et la mémoire centrale 64
85 Jeux d'instruction Deux grands types de jeux d'instructions CISC : Complex Instruction Set Computing Exemples : processeurs Intel et AMD : familles x86 Fonctionne en modèle mémoire (3,3) généralement RISC : Reduced Instruction Set Computing Exemples : Sun Sparc et IBM PowerPC Et les disparus : DEC Alpha, MIPS, HP PA... Fonctionne en modèle mémoire (3,0) généralement Différences fondamentales Jeux d'instruction Exemple de calcul Faire la somme du registre R1 et de la valeur à l'adresse 100 en mémoire et placer le résultat à l'adresse 200 En CISC Intructions en nombre réduit pour le RISC Une seule opération nécessaire : Instructions de taille fixe (code opération + opérande) pour le RISC En RISC Jeux d'instructions Calculs uniquement avec des registres Plusieurs types d'additions gérant de multiples modes d'accès en mémoire et aux registres Exemples : R = accès registre, A = accès adresse mémoire ADDR,R,R ADD R, A, A ADD A, A, A... Jeux d'instructions Comparaison RISC / CISC Accès en mémoire : uniquement 2 types Avantage CISC Lecture mémoire vers un registre Plus d'instructions disponibles : programmation plus simple et Écriture mémoire à partir d'un registre souple Exemple précédent : besoin de 3 instructions Inconvénients LOAD Plus d'instructions à gérer dans le processeur ADD R3, R1, R2 (R3 = R1 + R2) Taille d'instruction non fixe : plus compliqué à lire et décoder STORE Duréed'exécutiondel'instructionvariable(selonnombre Conséquence sur nombre de registres d'un mode (3,0) accès mémoire, registres...) Un processeur RISC possèdent beaucoup plus de registres Plus difficile à paralléliser généraux qu'un processeur CISC Premier CPU x86 (CISC) : 8 registres On trouve généralement 32 registres dans les CPU RISC 67 68
86 Jeux d'instructions Comparaison RISC / CISC Avantages RISC Taille fixe des instructions : plus facile à lire et décoder Nombre d'instructions plus faibles : plus simple à gérer Instructions plus simple et «homogènes» : plus courte à exécuter et plus simple à paralléliser (pipeline) Inconvénient Plus d'instructions à exécuter pour un même programme Mais instruction plus simples et rapides à exécuter 69 Jeux d'instructions L'architecture RISC a montré qu'elle était plus performante Tous les processeurs fonctionnent en RISC de nos jours Pour un processeur avec un jeu d'instruction CISC Traduction interne des instructions CISC en micro-opérations de type RISC C'est le cas pour tous les processeurs AMD et Intel x86 Apparition de ce fonctionnement avec le PentiumPro chez Intel Autre avantage de la traduction en micro-instructions Permet une meilleure gestion des unités de calculs et d'optimiser le code grâce à un réordonnancement des micro-instructions Certains processeurs RISC transforment aussi les instructions natives RISC en micro-instructions internes Exemple : derniers PowerPC d'ibm 70 Conclusion sur performances Techniques pour augmenter les performances Augmentation de la fréquence de fonctionnement Parallélisation pour exécuter plusieurs instructions simultanément Pipeline Prédiction de branchement Réordonnancement des séquences d'instructions Duplication des unités de calculs et commandes Unités de calculs vectoriels Architecture multi-core Mémoire cache Conclusion sur les performances Problèmes Ne peut pas jouer sur tous les points en même temps car interdépendances Exemples Augmentation de la taille du pipeline Permet montée en fréquence Mais réduit efficacité de la parallélisation Augmentation de la prédiction de branchement Diminue les aléas de contrôle Maislimitelamontéeenfréquence Recherche du meilleur compromis entre tous ces points Jeu d'instruction (interne) de type RISC 71 72
87 Exemple : AMD Athlon 64 Étude des éléments d'un processeur récent Exemple de l'athlon 64 & Evolution des performances AMD Athlon 64 Commercialisé depuis fin 2003 Décliné en plusieurs versions et modèles Y compris une version dual-core Caractéristiques générales Processeur avec jeu d'instructions x86 Fréquence : à partir de 2.2 Ghz Cache L1 de taille 2 x 64 Ko Cache L2 de taille 512 Ko ou 1024 Ko selon modèle 73 L1 et L2 sont exclusifs 74 Exemple : AMD Athlon 64 Cache L1 Exemple : AMD Athlon Ko pour données et 64 Ko pour instructions Taille d'une ligne : 64 octets Associatif par ensemble de 2 (2-way associative) Ecriture différée : write-back Latence : 3 cycles d'horloge Cache L2 512 Ko ou 1024 Ko Taille d'une ligne : 64 octets Associatif par ensemble de 16 (16-way associative) Latence : 5 cycles d'horloge Pre-fetching pour charger en avance des données/instructions dans le cache L
88 Mémoire cache Exemple : AMD Athlon 64 Level 1 instruction cache : cache L1 pour instructions Level 1 data cache : cache L1 pour données Level 2 cache : cache L2 TLB : tampon de traduction anticipée Cache pour correspondance entre adresses virtuelles et physiques ECC : contrôle de parité pour vérifier l'intégrité des données Exemple : AMD Athlon 64 Prédiction de branchement 2k branch targets : tampon des branches cibles d'une taillede2ko 16k history counter : table de l'historique des branchements, taille de 16 Ko Communication avec mémoire Memory Controller, System Request Queue, Cross Bar Le contrôleur mémoire est intégré au processeur pour l'athlon 64 au lieu d'être dans le pont nord du chipset Exemple : AMD Athlon 64 Réalisation du pipeline, exécution des instructions Eléments en plusieurs exemplaires 3 unités de calculs entiers : ALU Calculs simples (addition, ou, décalage...) en 1 cycle d'horloge Multiplication : 3 cycles d'horloge en 32 bits et 5 en 64 bits 3 unités de calculs d'adresses mémoire : AGU 3 unités de calculs flottants : FADD, FMUL, FMISC Qui font aussi les calculs scalaire MMX, 3D Now!, SSE1 et 2 3 unités de décodage et gestion de l'exécution des instructions 3blocsDecode1/Decode2 et éléments suivants 79 Exemple : AMD Athlon 64 ALU FPU 1 Fetch1 2 Fetch2 3 Pick 4 Decode 1 5 Decode 2 6 Pack 7 Pack/Decode 8 Dispatch Dispatch 9 Schedule Stack Rename 10 Exec Register Rename 11 Data Cache 1 Write Schedule 12 Data Cache 2 Schedule 13 Register Read 14 FX 0 15 FX 1 16 FX 2 17 FX 3 Description du pipeline 12 étages en calculs entiers 17 étages en flottants 80
89 Exemple : AMD Athlon 64 Étapes du pipeline, pour calcul entier (1, 2 & 3) fetch et pick Récupère les instructions suivantes via le cache L1 d'instructions et la prédiction de branchement Fournit une instruction à chacune des 3 unités de décodage (4 & 5) : decode 1 et 2 Décodent les instructions x86 et les transforment en microopérations (µops) de longueur fixe Pour fonctionnement interne en mode RISC (6 & 7) : pack et pack/decode Continue décodage pour instructions longues Regroupement de µops en pack 81 Exemple : AMD Athlon 64 Étapes du pipeline, pour calcul entier (suite) (8 & 9) dispatch et schedule Les packs sont distribués aux unités de calcul (ALU, FPU selon les µops) (10) exec Exécution des µops (11 & 12) data cache 1 et 2 Accès en cache L1 de données, en lecture et/ou écriture selon les µops Lecture pour chargement dans un registre Écriture résultat d'un calcul 82 Exemple : AMD Athlon millions de transistors Consommation électrique : 90 Watts «Die» de 193 mm2 4cm Mesures de performances Plusieurs types de calcul des performances IPC : Instruction Per Cycle Nombre moyen d'instructions exécutées par cycle d'horloge Dépend du programme utilisé Nombre d'accès mémoire, entrée/sortie, aléas générés pour le pipeline... Exemple AMDAthlonXP:2à2,5instructionsparcycled'horloge Intel P4 : 1,5 à 2 instructions par cycle d'horloge IPC > 1 car parallélisation généralisée dans le processeur MIPS : Millions d'instructions Par Seconde 83 MIPS = Fréquence (en Mhz) x IPC 84
90 Mesures de performances Pour comparer les performances des processeurs Utilise un benchmark Logiciel réalisant un certain calcul/traitement On exécute ce même traitement sur tous les processeurs pour pouvoir comparer le temps d'exécution 2 benchmarks pour calculs Spec Int 2000 : calculs sur des entiers Spec Fp 2000 : calculs sur des flottants Il existe de très nombreux autres types de benchmarks Loi de Moore En 1965, Gordon Moore (PDG d'intel) prédit Que le nombre de transistors utilisés dans les circuits intégrés doublerait tous les ans En prenant en compte Les avancées technologiques Les coûts de fabrication Prédiction réactualisée en 1975 Doublement tous les 2 ans au lieu de tous les ans Complexité grandissante des circuits Doublement de la puissance de calcul tous les 18 mois Loi de Moore Loi de Moore Source : 87 Source : 88
91 Visualisation évolution CPU 3 processeurs Intel pour ordinateurs portables Toujours plus de transistors, de cache Mais toujours diminution de la finesse de gravure Quelques sources d'information En ligne Articles sur les principes de fonctionnement des processeurs, mémoires, caches... & Plus de détails sur le fonctionnement et performances pratiques des processeurs (notamment l'ahtlon 64 sur X86-secret) Nombreux cours sont disponibles en ligne dont Cours principalement sur le fonctionnement d'un processeur Livres : cours et exercices corrigés 89 Andrew Tanenbaum, Architecture de l'ordinateur, Dunod Paolo Zanella et Yves Ligier, Architecture et technologie des ordinateurs, Dunod 90
92 Assembleur x86 Eric Cariou Université de Pau et des Pays de l'adour Département Informatique 1 Niveaux de programmation Du plus bas niveau (1) au plus abstrait (6) 1) Impulsions électriques : 0 et 1 dans portes/composants 2) Micro-instructions Séquencement via unité de commande, chemin de données 3) Micro-opérations internes Traduction opérations complexes CISC en µop de type RISC 4) Langage machine Codage binaire des opérations : code opération + codes opérandes 5) Assembleur Langage machine avec codes mnémotechniques à la place des codes opération en binaire 6) Langage haut niveau : C, JAVA... 2 Niveaux de programmation Jeu d'instructions Jeu d'instruction Le compilateur Traduit un programme écrit en assembleur ou langage de haut niveau En un programme en langage machine exécutable par le processeur Assembleur Le langage de plus bas niveau utilisable par un être humain Utilise le jeu d'instructions du processeur 3 Ensemble des instructions machine (et donc assembleur) qu'un processeur sait exécuter Deux grandes familles de jeu d'instruction CISC : Complex Instruction Set Computing Instructions nombreuses et pouvant être complexes et de taille variable Peuderegistres Exemple : Intel x86 RISC : Reduced Instruction Set Computing Intructions limitées et simples et de taille fixe Adressage mémoire : chargement/rangement (que via des registres) Nombre relativement importants de registres Exemples : Sun SPARC, IBM PowerPC 4
93 Architecture Intel x86 Architecture Intel x86 Date du processeur 8086 en et toujours en vigueur aujourd'hui dans les processeurs Intel et AMD Données sur 16 bits Adresses mémoire sur 20 bits : 1 Mo addressabe 8 registres généraux de 16 bits Architecture vieillisante Trop peu de registres et de taille trop petite Evolution de cette architecture avec les nouvelles gammes de processeurs Intel et compatibles En gardant la compatibilité avec architecture originelle x86 5 Architecture Intel x86 Première évolution Architecture IA32 du processeur Intel 386 en 1985 Passage au 32 bit : 8 registres généraux 32 bits Adresses sur 32 bits Ajout de registres, opérations et unités FPU avec le 486 en 1989 Evolution récente : exemple du AMD Athlon registres 64 bits Dont 8 utilisables en version 32 bits en mode IA32 Et 8 utilisables en version 16 bits du x86 originel Registres multimédia : 16 registres 128 bits Registres flottants (x87) : 8 registres 80 bits 6 Registres de l'amd 64 7 Registres x86 8 registres 16 bits généraux AX, BX, CX, DX, DI, SI, BP, SP Chaque registre peut avoir une fonction particulière implicite selon l'instruction utilisée AX : accumulateur BX : base (adresse mémoire) CX : compteur DX : donnée, entrées/sorties SI : index source DI : index destination BP:basedelapile SP : pointeur sur le sommet de la pile 8
94 Registres x86 Les registres en «X» peuvent être utilisés sous laformede2registres8bits xx = xh + xl H : partie haute, L : partie basse xx = 256 * xh + xl AX = AH et AL BX = BH et BL CX = CH et CL DX = DH et DL Registres x86 Autres registres IP : pointeur d'instruction FLAGS : flags (drapeaux 1 bit) Registres de segments mémoires CS : code DS : données (data) SS : pile (stack) ES : extra Registres IA32 8 registres généraux sur 32 bits 9 Extensions des 8 registres 16 bits en 32 bits Ajout de la lettre E devant : EAX, EBP, Segments et adresses mémoire Bus d'adresse de l'architecture x86 20 bits soit 1 Mo de mémoire adressable Mais registres n'ont que 16 bits 64 Ko de mémoire adressable Pour avoir des adresses mémoire sur 20 bits avec des registres de 16 bits Oncombine2registres Le premier donne l'adresse de base d'un segment Segments et adresses mémoire Adressage sur 20 bits avec 2 registres 2 registres 16 bits : peut coder adresses sur 32 bits Pour uniquement 20 bits Décale le premier registre de 4 bits et l'additionne au second Adresse notée A:B Adresse réelle : A * 16 + B Exemple (les nombres sont en hexa) 3100:27EE correspond à l'adresse EE = 337EE Décaler de 4 bits en binaire revient à décaler d'un chiffre en hexa Le second donne le déplacement dans ce segment Segment = zone mémoire de 64 Ko 11 12
95 Segments et adresses mémoire 4 segments d'adresses : CS, DS, SS, ES Peut utiliser 2 registres pour adresser des mots mémoires Le premier est le registre de segment Le second un registre général On l'appelle l'offset (décalage) Addresse : segment:offset Exemples CS:IP : adressee de la prochaine instruction à exécuter DS:SI : adresse d'une donnée SS:SP : adresse du haut de la pile 13 Segments et adresses mémoire Addressage mémoire en IA32 Adresses mémoire codables sur 32 bits Segment est codé sur 16 bits Offset codé sur 32 bits Extensions possibles pour coder des adresses sur 36 bits Depuis Pentium Pro en Go adressables Deux segments supplémentaires en IA32 FS et GS : données 4 segments de données au total : DS, ES, FS, GS 14 Segments et adresses mémoire Addressage à plat possible également Sans passer par les segments Pourquoi des segments? Modes d'adressage Plusieurs modes d'adressage des données Par registre Valeur immédiate A l'origine ADD AX, 2 Pour pouvoir adresser plus de 64 Ko de mémoire dans un «h» et «b» pour noter que le nombre est en hexa ou binaire programme 20h, b Car registres 16 bits Adressage mémoire En pratique aujourd'hui ADD AX, [1000h] Permet de séparer clairement des zones mémoires selon ADD AX, [BX] leur rôle Exemple : la pile ne peut pas être écrasée par des données ou déborder sur des données/code Adressage mémoire indexée ADD AX,[BX+DI] Mais (très) contraignant ADD AX, BX
96 Le registre d'état Registre d'états Registre sur 16 bits voire 32 en IA32 Un bit est un drapeau Propriété vérifiée (=1) ou pas (=0) après l'appel d'une opération Certains bits n'ont aucune signification Principaux drapeaux (flags) CF (bit 0) : opération génère une retenue Débordement si entiers non signés PF (bit 2) : résultat de l'opération est pair ZF (bit 6) : résultat de l'opération est 0 SF (bit 7) : signe du résultat de l'opération (0=positif, 1=négatif) OF (bit 11) : si opération génére un débordement de capacité (overflow) Gère les débordements en entiers signés 17 Opérations Opérations sont classées en plusieurs grandes catégories Arithmétiques Addition, multiplication... Logiques Et, ou, xor... Transfert de données Mémoire vers registre, registre vers registre, gestion de la pile... Décalage et rotations de bits Instructions de contrôle Sauts conditionnels, appels de procédures... Structure de données Bit à bit, chaîne de caractères Opérations Signification des opérandes, format général 2 opérandes au plus Les opérandes servent de paramètres Si résultat calculé, la première opérande contient ce résultat Implicitement, selon l'opération, des registres peuvent être modifiés ou utilisés pour stocker le résultat Exemple ADD AX, BX ; AX = AX + BX ; modifie les flags selon résultat ; (débordement, résultat nul...) 19 Opérations arithmétiques (entiers) ADD : addition ADC : addition avec retenue de 1 ajoutée si CF = 1 SUB : soustraction SBB : soustraction avec retenue de -1 ajoutée si CF = 1 IMUL : multiplication avec entiers signés (résultat sur taille double) MUL : multiplication avec entiers non signés (résultat sur taille double) IDIV : division entière signée DIV : division entière non signée INC : incrémentation de 1 DEC : décrémentation de 1 NEG : opposé CMP : comparaison sous forme de soustraction sans stockage résultat 20
97 Opérations logiques 4 opérations logiques : fonctionnement bit à bit AND : Et logique Application d'un masque sur une donnée : garde les bits de la donnée pour lesquels le masque est à 1, sinon met le bit à 0 OR : OU logique XOR:XORlogique NOT : inverse les bits Exemples Transferts de données Copies de données entre mémoire centrale et registres Une opération unique pour copie : MOV Exemples 0110 AND 0011 = 0010 MOV AX, [BX] ; AX = contenu adresse référencée par BX 0110 OR 0011= 0111 MOV [3000h], 'D' ; met caractère D à l'adresse XOR 0011 = 0101 MOV [BX], DX ; copie la valeur de DX à l'adresse NOT 0110 = ; référencée par BX 22 Plusieurs combinaisons MOV registre, mémoire MOV mémoire, registre MOV registre, registre MOV mémoire, immédiate MOV registre, immédiate Décalage Décalage et rotations Les bits de la donnée sont décalés vers la droite ou la gauche, avec remplissage par 0 Exemple > décalage gauche -> Onperdlebit1depoiddefortetonajouteun0enpoidfaible Rotation Les bits sont décalés vers la droite ou la gauche Les bits qui «débordent» d'un coté sont copiés de l'autre Exemple > rotation gauche -> Le 1 de poid fort devient 1 de poid faible 23 Décalage et rotations 8opérations SAR : décalage arithmétiques droite SHR : décalage logique droite SAL : décalage arithmétique gauche SHL : décalage logique gauche ROL : rotation gauche ROR : rotation droite RCL : rotation gauche de la donnée + la retenue RCR: rotation droite de la donnée + la retenue Dans les 8 cas : CF contient le bit qui sort de la donnée Décalage arithmétique : conserve le signe 24
98 Instructions de contrôle Par défaut, exécution séquentielle des instructions Possibilité de sauter à d'autres endroits du programme de 2 façons Saut à une adresse du programme Saut conditionnel à une adresse du programme Pasdestructuresdecontrôleplusévoluées Pas de boucles Pas de if then else ou de switch 25 Instructions de contrôle Dans le code du programme en assembleur Peut placer des labels pour marquer un endroit de la séquence d'instructions Instruction de saut : JMP JMP label Exemple MOV AX, [1000h] MOV BX, [1004h] JMP calcul suite: MOV [BX],AX.. calcul: ADD AX, BX JMP suite 26 Instructions de contrôle Sauts conditionnels En fonction de l'état de drapeaux positionnés par l'exécution d'une opération Ou après une opération de comparaison : CMP 33 types de saut conditionnel! Exemples de quelques instructions de sauts conditionnels Instructions de contrôle On peut avec des sauts conditionnels reproduire des instructions de contrôle de plus haut niveau If... then... else if (AX = 3) then BX = 5 else BX = DX JE:sautsiégal JZ:sautsirésultatestzéro CMP AX, 3 JG:sautsiplusgrand JNE else ; si pas égal, on saute à else JEG : saut si plus grand ou égal (equal or above) MOV BX, 5 ; sinon on est dans le then JNGA : saut si pas égal ou pas plus grand (not equal or above) JMP endif ; on saute le then pour aller à la fin du if JL : saut si plus petit (less) else: MOV BX, DX JC : saut si retenue (carry) JNO : saut si pas déborbement (not overflow) endif: 28
99 Instructions de contrôle for (cx=0; cx<5; cx++) ax = ax + cx MOV AX,0 ; initialisation de AX et CX à 0 MOV CX,0 ; CX est le compteur de boucle for: CMPCX,5 ;comparecxà5 JGE endfor ; si CX >= 5, on sort de la boucle ADD AX, CX ; fait le calcul INC CX ; CX est incrémenté de 1 JMP for ; on reprend au début de la boucle endfor: Instructions de contrôles Exemple avec saut sur drapeau ADD AX, BX JO erreur... erreur: MOV AX, 0 Si débordement (overflow) lors de l'addition de AX et BX, on saute au label erreur Instructions de contrôle Pour boucle for précédente, peut utiliser une autre instruction LOOP label Décrémente CX et fait le saut à label si CX > 0 for (cx=5; cx>0; cx--) ax = ax + cx MOV AX,0 MOV CX,5 for: ADD AX,CX LOOP for ; CX est le compteur de boucle ; fait le calcul ; décrémente CX. Si CX > 0 fait ;lesautàfor Procédures On peut définir des procédures en assembleur x86 Pour les paramètres des procédures et la valeur de retour, 2 méthodes Utiliser des registres Simple Mais registres peu nombreux et doit toujours utiliser les mêmes à chaque appel donc assez contraignant Passer par la pile On empile les paramètres de la procédure On appelle la procédure On dépile les paramètres et résultats Plus compliqué mais plus général 30 32
100 Gestiondelapile Gestion de la pile, 4 opérations PUSH : empiler une valeur sur la pile POP : dépiler une valeur de la pile PUSHA : empiler les 8 registres généraux sur la pile POPA : positionne les valeurs des 8 registres à partir des 8 valeursausommetdelapile PUSHA et POPA permettent de sauvegarder et restorer simplement l'état des registres Avant un appel de procédure par exemple Egalement des opérations pour dépiler/empiler registre d'état Pour lire des éléments de la pile sans les dépiler Procédures Déclaration d'une procédure nomproc PROC... instructions de la procédure... RET nomproc ENDP Appel d'une procédure CALL nomproc Quand appelle une procédure, le registre IP est MOV AX, [SP] ; AX prend la première valeur en sommet de pile MOV AX, [SP+2] ; AX prend la deuxième valeur en sommet de 33 pile empilé sur la pile pour savoir où revenir 34 Procédures Exemple par registre Procédure qui retourne le double de la somme de AX et DX calcul PROC ADD AX, DX ; addition SHL AX, 1 ; décalage gauche = X 2 RET calcul ENDP... MOV AX, 10 MOV DX, 20 CALL calcul ; après l'appel, AX contient le résultat 35 Procédures Même exemple avec passage propre par pile Propre car les registres restent dans le même état calcul PROC PUSH BP ; sauvegarde base de la pile MOV BP, SP ; nouvelle base de pile = sommet pile PUSH AX ; sauvegarde AX MOV AX, [BP+4] ; récupère argument 2 ADD AX, [BP+6] ; addition AX et argument 1 SHL AX, 1 ; décalage gauche = X 2 MOV [BP+6],AX ; remplace argument 1 par résultat POP AX ; restaure AX POP BP ; restaure la base de la pile RET calcul ENDP 36
101 Procédures Appel de la procédure du transparent précédent Définitions segments et variables Dans segment de données : peut définir des variables Variable = zone mémoire PUSH 10 ; empile l'argument 1 PUSH 20 ; empile l'argument 2 CALL calcul POP AX ; dépile l'argument 2 POP AX ; AX contient le résultat 37 Assume CS:Code, DS:Donnees ; CS est le segment Code ; DS est le segment Donnees Donnees SEGMENT ; définit segment données var1 dw 12 ; var1 : variable sur 16 bits (dw) init à 12 var2 db? ; var2 : variable sur 8 bits (db) non initialisé Donnees ENDS ; fin de déclaration du segment Code SEGMENT ; définit segment code main: ; main sera le début du programme... MOV AX, var1 ; copie de var1 dans AX MOV var2, DH ; copie de DH dans var2... Code ENDS ; fin du segment END main ; précise que le programme commence au label main 38 Interruption Interruptions Pour appeler une opération système ou matérielle Généralement d'entrée/sortie Exemple d'interuption : interruption système DOS 21h Affectation des registres selon la fonction de l'interruption à utiliser MOV DL, ''E'' MOV AH, 2 INT 21h ; fonction 2 : affichage à l'écran du caractère ; stocké dans DL ; appel de l'interruption Conclusion Intérêt de programmer en assembleur de nos jours Pour une programmation «standard» : aucun Les compilateurs produiront toujours un code plus optimisé que celui qu'on écrirait à la main Le compilateur est généralement optimisé pour une architecture de CPU cible, il sait comment optimiser le code pour un type de CPU donné Mais utiles dans certains cas précis Programmation bas-niveau de pilotes de périphériques Utilisation de processeurs dans des cartes électroniques MOV AH,1 ; fonction 1 : lecture du caractère entré au clavier INT 21h ; le caractère lu est placé dans AL 39 40
IFT1215 Introduction aux systèmes informatiques
Introduction aux circuits logiques de base IFT25 Architecture en couches Niveau 5 Niveau 4 Niveau 3 Niveau 2 Niveau Niveau Couche des langages d application Traduction (compilateur) Couche du langage d
Architecture des ordinateurs TD1 - Portes logiques et premiers circuits
Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice
Système binaire. Algèbre booléenne
Algèbre booléenne Système binaire Système digital qui emploie des signaux à deux valeurs uniques En général, les digits employés sont 0 et 1, qu'on appelle bits (binary digits) Avantages: on peut utiliser
Algèbre binaire et Circuits logiques (2007-2008)
Université Mohammed V Faculté des Sciences Département de Mathématiques et Informatique Filière : SMI Algèbre binaire et Circuits logiques (27-28) Prof. Abdelhakim El Imrani Plan. Algèbre de Boole 2. Circuits
Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot
Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,
Conversion d un entier. Méthode par soustraction
Conversion entre bases Pour passer d un nombre en base b à un nombre en base 10, on utilise l écriture polynomiale décrite précédemment. Pour passer d un nombre en base 10 à un nombre en base b, on peut
Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.
Logique binaire I. L'algèbre de Boole L'algèbre de Boole est la partie des mathématiques, de la logique et de l'électronique qui s'intéresse aux opérations et aux fonctions sur les variables logiques.
Codage d information. Codage d information : -Définition-
Introduction Plan Systèmes de numération et Représentation des nombres Systèmes de numération Système de numération décimale Représentation dans une base b Représentation binaire, Octale et Hexadécimale
UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.
UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases
Représentation des Nombres
Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...
Logiciel de Base. I. Représentation des nombres
Logiciel de Base (A1-06/07) Léon Mugwaneza ESIL/Dépt. Informatique (bureau A118) [email protected] I. Représentation des nombres Codage et représentation de l'information Information externe formats
Les fonctions logiques
1 Les fonctions logiques Le fonctionnement des ordinateurs tout comme d autres appareils électroniques repose sur l emploi des circuits électroniques de logique binaire ou électronique numérique. Dans
Informatique Générale
Informatique Générale Guillaume Hutzler Laboratoire IBISC (Informatique Biologie Intégrative et Systèmes Complexes) [email protected] Cours Dokeos 625 http://www.ens.univ-evry.fr/modx/dokeos.html
V- Manipulations de nombres en binaire
1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,
RESUME DE COURS ET CAHIER D'EXERCICES
ARCITECTURE INFO-UP REUME DE COUR ET CAIER D'EXERCICE EPITA F. GABON Architecture EPITA INFO-UP F. Gabon COUR LIVRE D ARCITECTURE 3 REUME D'ELECTRONIUE LOGIUE 4 YTEME DE NUMERATION 6 ALGEBRE DE BOOLE 6
VIII- Circuits séquentiels. Mémoires
1 VIII- Circuits séquentiels. Mémoires Maintenant le temps va intervenir. Nous avions déjà indiqué que la traversée d une porte ne se faisait pas instantanément et qu il fallait en tenir compte, notamment
Les opérations binaires
Les opérations binaires Compétences associées A2 : Analyser et interpréter une information numérique Objectifs Etre capable: - De coder les nombres entiers en code complément à 2. - De résoudre les opérations
FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE
I/ GÉNÉRALITÉS I.1/ Fonction Un compteur binaire est utilisé : -pour compter un certain nombre d'évènements binaires -pour diviser la fréquence d'un signal logique par 2 m Page 1 FONCTION COMPTAGE BINAIRE
Cours Informatique 1. Monsieur SADOUNI Salheddine
Cours Informatique 1 Chapitre 2 les Systèmes Informatique Monsieur SADOUNI Salheddine Un Système Informatique lesystème Informatique est composé de deux parties : -le Matériel : constitué de l unité centrale
Représentation d un entier en base b
Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir
Patentamt JEuropaisches. European Patent Office Numéro de publication: 0 1 1 0 7 6 7 Office européen des brevets DEMANDE DE BREVET EUROPEEN
Patentamt JEuropaisches European Patent Office Numéro de publication: 0 1 1 0 7 6 7 Office européen des brevets ^ DEMANDE DE BREVET EUROPEEN Numéro de dépôt: 83402232.9 @ Int. Cl.3: G 06 F 7/52 Date de
Les portes logiques. Voici les symboles des trois fonctions de base. Portes AND. Portes OR. Porte NOT
Les portes logiques Nous avons jusqu ici utilisé des boutons poussoirs et une lampe pour illustrer le fonctionnement des opérateurs logiques. En électronique digitale, les opérations logiques sont effectuées
2.4 Représentation graphique, tableau de Karnaugh
2 Fonctions binaires 45 2.4 Représentation graphique, tableau de Karnaugh On peut définir complètement une fonction binaire en dressant son tableau de Karnaugh, table de vérité à 2 n cases pour n variables
Livret - 1. Informatique : le matériel. --- Ordinateur, circuits, codage, système, réseau. Cours informatique programmation.
Livret - 1 Informatique : le matériel --- Ordinateur, circuits, codage, système, réseau. RM di scala Cours informatique programmation Rm di Scala - http://www.discala.net SOMMAIRE Introduction 2 Notations
MPI Activité.10 : Logique binaire Portes logiques
MPI Activité.10 : Logique binaire Portes logiques I. Introduction De nombreux domaines font appel aux circuits logiques de commutation : non seulement l'informatique, mais aussi les technologies de l'asservissement
CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»
Corrigé Cours de Mr JULES v3.3 Classe de Quatrième Contrat 1 Page 1 sur 13 CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!» «Correction en rouge et italique.» I. Les nombres décimaux relatifs.
Chapitre 10 Arithmétique réelle
Chapitre 10 Arithmétique réelle Jean Privat Université du Québec à Montréal INF2170 Organisation des ordinateurs et assembleur Automne 2013 Jean Privat (UQAM) 10 Arithmétique réelle INF2170 Automne 2013
Concevoir son microprocesseur
Concevoir son microprocesseur structure des systèmes logiques Jean-Christophe Buisson Collection Technosup Ellipses Avant-propos Ce livre s adresse aux étudiants en informatique de licence et maîtrise,
Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.
1 Définitions, notations Calcul matriciel Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes. On utilise aussi la notation m n pour le
Structures algébriques
Structures algébriques 1. Lois de composition s Soit E un ensemble. Une loi de composition interne sur E est une application de E E dans E. Soient E et F deux ensembles. Une loi de composition externe
La conversion de données : Convertisseur Analogique Numérique (CAN) Convertisseur Numérique Analogique (CNA)
La conversion de données : Convertisseur Analogique Numérique (CAN) Convertisseur Numérique Analogique (CNA) I. L'intérêt de la conversion de données, problèmes et définitions associés. I.1. Définitions:
Cours Premier semestre
C.Belleudy, D.Gaffé Université de Nice-Sophia Antipolis DEUG Première année SM,MP,MI UECS EEA Électronique Numérique Cours Premier semestre C. Belleudy, D.Gaffé version 3. 2 Électronique Numérique Chapitre
IFT2880 Organisation des ordinateurs et systèmes
Représentation des nombres flottants Notation exponentielle Représentations équivalentes dans la base 10 de 1,234 1 2 3, 4 0 0. 0 x 1 0-2 1 2, 3 4 0. 0 x 1 0-1 1, 2 3 4. 0 x 1 0 1 2 3. 4 x 1 0 1 2. 3 4
Architecture de l ordinateur
Architecture de l ordinateur Emmanuel Lazard Université Paris-Dauphine mars 2011 Computers are my forte! BRAZIL (Terry Gilliam, 1985) Ce document a initialement été publié sous forme de livre : Emmanuel
Organisation des Ordinateurs
Organisation des Ordinateurs Bernard Boigelot E-mail : [email protected] URL : http://www.montefiore.ulg.ac.be/~boigelot/ http://www.montefiore.ulg.ac.be/~boigelot/cours/org/ 1 Chapitre 1 Les
Une version javascript sera disponible directement dans le cours prochainement.
Author : Cédric Vanconingsloo Ce cours est principalement axé sur la compréhension du fonctionnement d'un ordinateur et l'étude du seul langage qu'il connaisse, le binaire. De ce fait, le cours est relativement
GPA770 Microélectronique appliquée Exercices série A
GPA770 Microélectronique appliquée Exercices série A 1. Effectuez les calculs suivants sur des nombres binaires en complément à avec une représentation de 8 bits. Est-ce qu il y a débordement en complément
Le chiffre est le signe, le nombre est la valeur.
Extrait de cours de maths de 6e Chapitre 1 : Les nombres et les opérations I) Chiffre et nombre 1.1 La numération décimale En mathématique, un chiffre est un signe utilisé pour l'écriture des nombres.
Université de La Rochelle. Réseaux TD n 6
Réseaux TD n 6 Rappels : Théorème de Nyquist (ligne non bruitée) : Dmax = 2H log 2 V Théorème de Shannon (ligne bruitée) : C = H log 2 (1+ S/B) Relation entre débit binaire et rapidité de modulation :
ELP 304 : Électronique Numérique. Cours 1 Introduction
ELP 304 : Électronique Numérique Cours 1 Introduction Catherine Douillard Dépt Électronique Les systèmes numériques : généralités (I) En électronique numérique, le codage des informations utilise deux
QUESTION 1 {2 points}
ELE4301 Systèmes logiques II Page 1 de 8 QUESTION 1 {2 points} En se servant de paramètres électriques donnés dans le Tableau 1 ci-dessous, on désire déterminer la fréquence d opération du compteur présenté
Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès www.haouati.com [email protected]
Partie 1 Professeur : Haouati Abdelali CPGE Lycée Omar Ibn Lkhattab - Meknès www.haouati.com [email protected] Partie I : Généralités et algorithmique de base 1. Environnement matériel et logiciel
Vers l'ordinateur quantique
Cours A&G Vers l'ordinateur quantique Données innies On a vu dans les chapîtres précédents qu'un automate permet de représenter de manière nie (et même compacte) une innité de données. En eet, un automate
Introduction à l'informatique. Vincent Boyer et Jean Méhat
Introduction à l'informatique Vincent Boyer et Jean Méhat 19 février 2010 Copyright (C) 2009 Jean Méhat Permission is granted to copy, distribute and/or modify this document under the terms of the GNU
BCI - TPSP - Processeurs et Architectures Numériques
BCI - TPSP - Processeurs et Architectures Numériques Jean-Luc Danger Guillaume Duc Tarik Graba Philippe Matherat Yves Mathieu Lirida Naviner Alexis Polti Jean Provost c 2002-2011 groupe SEN, Télécom ParisTech
CHAPITRE VI ALEAS. 6.1.Généralités.
CHAPITRE VI ALEAS 6.1.Généralités. Lors de la synthèse des systèmes logique (combinatoires ou séquentiels), nous avons supposé, implicitement, qu une même variable secondaire avait toujours la même valeur
ASR1 TD7 : Un microprocesseur RISC 16 bits
{Â Ö Ñ º ØÖ Ý,È ØÖ ºÄÓ Ù,Æ ÓÐ ºÎ ÝÖ Ø¹ ÖÚ ÐÐÓÒ} Ò ¹ÐÝÓÒº Ö ØØÔ»»Ô Ö Óº Ò ¹ÐÝÓÒº Ö» Ö Ñ º ØÖ Ý»¼ Ö½» ASR1 TD7 : Un microprocesseur RISC 16 bits 13, 20 et 27 novembre 2006 Présentation générale On choisit
Calculons avec Albert!
Calculons avec Albert! Par : Guy Lefebvre, 1257 rue Principale, St-Prime, G8J 1V2, 418-251-2170 Guillaume Rainville, 610 8 e rue, St-Prime, G8J 1P6, 418-251-8290 Résumé : Lefebvre G. et Rainville G., 2001,
CHAPITRE VIII : Les circuits avec résistances ohmiques
CHAPITRE VIII : Les circuits avec résistances ohmiques VIII. 1 Ce chapitre porte sur les courants et les différences de potentiel dans les circuits. VIII.1 : Les résistances en série et en parallèle On
Architecture des ordinateurs Introduction à l informatique
Architecture des ordinateurs Introduction à l informatique 17 septembre 2004 1 2 3 4 5 6 Les interrupteurs... 0V 5V Ce sont des composants électroniques qui laissent pser un courant principal lorsque la
Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS = 7 10 1 + 5 10 2 + 2 10 3
8 Systèmes de numération INTRODUCTION SYSTÈMES DE NUMÉRATION POSITIONNELS Dans un système positionnel, le nombre de symboles est fixe On représente par un symbole chaque chiffre inférieur à la base, incluant
Microprocesseur + Logiciel
Microprocesseur + Logiciel Robot EVALBOT MOHAMED AKIL BUREAU 5253 UNITE IGI 1001 PROGRAMMATION DES MICROPROCESSEURS Présentation [IGI1001] CONTEXTE SCIENTIFIQUE... 4 1. OBJECTIFS DE L UNITE... 6 2. OBJECTIFS
J AUVRAY Systèmes Electroniques TRANSMISSION DES SIGNAUX NUMERIQUES : SIGNAUX EN BANDE DE BASE
RANSMISSION DES SIGNAUX NUMERIQUES : SIGNAUX EN BANDE DE BASE Un message numérique est une suite de nombres que l on considérera dans un premier temps comme indépendants.ils sont codés le plus souvent
CONVERTISSEURS NA ET AN
Convertisseurs numériques analogiques (xo Convertisseurs.doc) 1 CONVTIU NA T AN NOT PLIMINAI: Tous les résultats seront exprimés sous formes littérales et encadrées avant les applications numériques. Les
- Instrumentation numérique -
- Instrumentation numérique - I.Présentation du signal numérique. I.1. Définition des différents types de signaux. Signal analogique: Un signal analogique a son amplitude qui varie de façon continue au
Mathématiques appliquées à l informatique
Mathématiques appliquées à l informatique Luc De Mey Ces notes de cours sont disponibles à l adresse : www.courstechinfo.be/math_info.pdf Dernière révision : 6 mai 2013 Table des matières 1 Systèmes de
Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:
Travaux Pratiques 3. IFT 1002/IFT 1005. Structure Interne des Ordinateurs. Département d'informatique et de génie logiciel. Université Laval. Hiver 2012. Prof : Bui Minh Duc. Tous les exercices sont indépendants.
INITIATION AU LANGAGE C SUR PIC DE MICROSHIP
COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par
Algorithme. Table des matières
1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............
Initiation à LabView : Les exemples d applications :
Initiation à LabView : Les exemples d applications : c) Type de variables : Créer un programme : Exemple 1 : Calcul de c= 2(a+b)(a-3b) ou a, b et c seront des réels. «Exemple1» nom du programme : «Exemple
Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions
Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental
2.1 Le point mémoire statique Le point mémoire statique est fondé sur le bistable, dessiné de manière différente en Figure 1.
Mémoires RAM 1. LOGIUE STATIUE ET LOGIUE DYNAMIUE Le point mémoire est l élément de base, capable de mémoriser un bit. Il y a deux approches possibles. L approche statique est fondée sur la l'utilisation
Electronique Numérique
Electronique Numérique 1er tome Systèmes combinatoires Etienne Messerli Yves Meyer Septembre 2010 Version 1.4 Mise à jour de ce manuel La base du présent manuel a été écrit par M. Yves Meyer de l'école
MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C
Haute Ecole d Ingénierie et de Gestion Du Canton du Vaud MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Programmation en mode simulation 1. DOCUMENTS DE RÉFÉRENCE...
I- Définitions des signaux.
101011011100 010110101010 101110101101 100101010101 Du compact-disc, au DVD, en passant par l appareil photo numérique, le scanner, et télévision numérique, le numérique a fait une entrée progressive mais
Conception de circuits numériques et architecture des ordinateurs
Conception de circuits numériques et architecture des ordinateurs Frédéric Pétrot Année universitaire 2014-2015 Structure du cours C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 Codage des nombres en base 2, logique
Licence Sciences et Technologies Examen janvier 2010
Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.
Logique séquentielle
Bascules et logique séquentielle aniel Etiemble [email protected] Logique séquentielle Logique séquentielle Le système a des «états» ans un système séquentiel Éléments de mémorisation Les sorties dépendent des
OPÉRATIONS SUR LES FRACTIONS
OPÉRATIONS SUR LES FRACTIONS Sommaire 1. Composantes d'une fraction... 1. Fractions équivalentes... 1. Simplification d'une fraction... 4. Règle d'addition et soustraction de fractions... 5. Règle de multiplication
Chapitre 1 : Introduction aux bases de données
Chapitre 1 : Introduction aux bases de données Les Bases de Données occupent aujourd'hui une place de plus en plus importante dans les systèmes informatiques. Les Systèmes de Gestion de Bases de Données
Priorités de calcul :
EXERCICES DE REVISION POUR LE PASSAGE EN QUATRIEME : Priorités de calcul : Exercice 1 : Calcule en détaillant : A = 4 + 5 6 + 7 B = 6 3 + 5 C = 35 5 3 D = 6 7 + 8 E = 38 6 3 + 7 Exercice : Calcule en détaillant
UE 503 L3 MIAGE. Initiation Réseau et Programmation Web La couche physique. A. Belaïd
UE 503 L3 MIAGE Initiation Réseau et Programmation Web La couche physique A. Belaïd [email protected] http://www.loria.fr/~abelaid/ Année Universitaire 2011/2012 2 Le Modèle OSI La couche physique ou le
3 ème 2 DÉVELOPPEMENT FACTORISATIONS ET IDENTITÉS REMARQUABLES 1/5 1 - Développements
3 ème 2 DÉVELOPPEMENT FACTORISATIONS ET IDENTITÉS REMARQUABLES 1/5 1 - Développements Développer une expression consiste à transformer un produit en une somme Qu est-ce qu une somme? Qu est-ce qu un produit?
Chapitre 1 Introduction à la technologie des ordinateurs 1.1 DEFINITION DE L INFORMATIQUE L informatique (de information et automatique) est la «science du traitement rationnel (fondée sur la raison, conforme
Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application
Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un
Géométrie dans l espace Produit scalaire et équations
Chapitre 11. 2ème partie Géométrie dans l espace Produit scalaire et équations Terminale S Ce que dit le programme : CONTENUS CAPACITÉS ATTENDUES COMMENTAIRES 2ème partie Produit scalaire Produit scalaire
Initiation à la programmation en Python
I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de
Présentation du cours de mathématiques de D.A.E.U. B, remise à niveau
i Présentation du cours de mathématiques de D.A.E.U. B, remise à niveau Bonjour, bienvenue dans votre début d étude du cours de mathématiques de l année de remise à niveau en vue du D.A.E.U. B Au cours
Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique
Architecture d ordinateur : introduction Dimitri Galayko Introduction à l informatique, cours 1 partie 2 Septembre 2014 Association d interrupteurs: fonctions arithmétiques élémentaires Elément «NON» Elément
Conception de circuits numériques et architecture des ordinateurs
Conception de circuits numériques et architecture des ordinateurs Frédéric Pétrot et Sébastien Viardot Année universitaire 2011-2012 Structure du cours C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 Codage des
3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes
PLAN CYCLE DE VIE D'UN LOGICIEL EXPRESSION DES BESOINS SPÉCIFICATIONS DU LOGICIEL CONCEPTION DU LOGICIEL LA PROGRAMMATION TESTS ET MISE AU POINT DOCUMENTATION CONCLUSION C.Crochepeyre Génie Logiciel Diapason
I.1- DÉFINITIONS ET NOTIONS DE BASE
I.1- DÉFINITIONS ET NOTIONS DE BASE Informatique Information Automatique Logiciels (Software) Matériels (Hardware) Définition de l information : On appelle une information tout ce qui est transmissible
TD Architecture des ordinateurs. Jean-Luc Dekeyser
TD Architecture des ordinateurs Jean-Luc Dekeyser Fiche 1 Nombres de l informatique Exercice 1 Une entreprise désire réaliser la sauvegarde de ses données sur un site distant. Le volume de données à sauvegarder
Modules d automatismes simples
Modules d automatismes simples Solutions pour automatiser Modules d'automatismes Enfin, vraiment simple! Un concentré de solution Pour vos petites applications d'automatismes millenium gère : Temporisations
La mémoire. Un ordinateur. L'octet. Le bit
Introduction à l informatique et à la programmation Un ordinateur Un ordinateur est une machine à calculer composée de : un processeur (ou unité centrale) qui effectue les calculs une mémoire qui conserve
DOCM 2013 http://docm.math.ca/ Solutions officielles. 1 2 10 + 1 2 9 + 1 2 8 = n 2 10.
A1 Trouvez l entier positif n qui satisfait l équation suivante: Solution 1 2 10 + 1 2 9 + 1 2 8 = n 2 10. En additionnant les termes du côté gauche de l équation en les mettant sur le même dénominateur
Petit lexique de calcul à l usage des élèves de sixième et de cinquième par M. PARCABE, professeur au collège Alain FOURNIER de BORDEAUX, mars 2007
Petit lexique de calcul à l usage des élèves de sixième et de cinquième par M. PARCABE, professeur au collège Alain FOURNIER de BORDEAUX, mars 2007 page 1 / 10 abscisse addition additionner ajouter appliquer
t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :
Terminale STSS 2 012 2 013 Pourcentages Synthèse 1) Définition : Calculer t % d'un nombre, c'est multiplier ce nombre par t 100. 2) Exemples de calcul : a) Calcul d un pourcentage : Un article coûtant
Représentation d un nombre en machine, erreurs d arrondis
Chapitre Représentation d un nombre en machine, erreurs d arrondis Ce chapitre est une introduction à la représentation des nombres en machine et aux erreurs d arrondis, basé sur [], [].. Un exemple :
DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION
145 NOTION DE PROGRAMMATION 1/ Complétons notre microprocesseur Nous avons, dans les leçons précédentes décrit un microprocesseur théorique, cependant il s inspire du 6800, premier microprocesseur conçu
Cours 3 : L'ordinateur
Cours 3 : L'ordinateur Abdelkrim Zehioua 2éme année Licence Gestion Faculté des sciences Économiques et sciences de Gestion Université A, Mehri - Constantine 2 Plan du cours 1.Définitions de l'ordinateur
Bases de programmation. Cours 5. Structurer les données
Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et
De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que
Introduction. On suppose connus les ensembles N (des entiers naturels), Z des entiers relatifs et Q (des nombres rationnels). On s est rendu compte, depuis l antiquité, que l on ne peut pas tout mesurer
Architecture des ordinateurs. Robin FERCOQ [email protected]
Architecture des ordinateurs Robin FERCOQ [email protected] 1 Objectifs Introduction aux systèmes informatiques Introduction aux fondamentaux de l'informatique Codage binaire de l'information, quantité d'info.
ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.
ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. Sciences et Technologies de l Industrie et du Développement Durable Formation des enseignants parcours : ET24 Modèle de
Raisonnement par récurrence Suites numériques
Chapitre 1 Raisonnement par récurrence Suites numériques Terminale S Ce que dit le programme : CONTENUS CAPACITÉS ATTENDUES COMMENTAIRES Raisonnement par récurrence. Limite finie ou infinie d une suite.
REALISATION d'un. ORDONNANCEUR à ECHEANCES
REALISATION d'un ORDONNANCEUR à ECHEANCES I- PRÉSENTATION... 3 II. DESCRIPTION DU NOYAU ORIGINEL... 4 II.1- ARCHITECTURE... 4 II.2 - SERVICES... 4 III. IMPLÉMENTATION DE L'ORDONNANCEUR À ÉCHÉANCES... 6
LE PROBLEME DU PLUS COURT CHEMIN
LE PROBLEME DU PLUS COURT CHEMIN Dans cette leçon nous définissons le modèle de plus court chemin, présentons des exemples d'application et proposons un algorithme de résolution dans le cas où les longueurs
1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.
1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this
Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.
Eo7 Calculs de déterminants Fiche corrigée par Arnaud Bodin Eercice Calculer les déterminants des matrices suivantes : Correction Vidéo ( ) 0 6 7 3 4 5 8 4 5 6 0 3 4 5 5 6 7 0 3 5 4 3 0 3 0 0 3 0 0 0 3
