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 booléenne, portes logiques, circuits combinatoires Circuits séquentiels Construction circuits complexes Micro-architecture et fonctionnement des mémoires Machines à état Synthèse de circuits PC/PO Optimisation de circuits PC/PO Interprétation d'instructions Interprétation d'instructions Interprétation d'instructions Introduction aux caches 2 / 32
Intérêt Intérêt Pour des raisons technologiques, les ordinateurs utilisent la présence ou de l'absence de courant électrique pour travailler Les données sont donc codées en base 2, et l'ensemble des opérations que l'on peut eectuer se fait par conséquence en base 2 Les programmes informatiques se trouvent donc, par un processus complexe, ramenés à une suite d'opérations binaires sur des données binaires 3 / 32
Plan Plan détaillé du cours d'aujourd'hui 1 Interprétation des vecteurs de bits 2 Notations binaire usuelles 3 Rappels sur les booléens 4 Représentations des fonctions 4 / 32
Interprétation des vecteurs de bits Plan 1 Interprétation des vecteurs de bits 2 Notations binaire usuelles 3 Rappels sur les booléens 4 Représentations des fonctions 5 / 32
Interprétation des vecteurs de bits Représentation des données Ordinateur circuit électronique numérique Données manipulées informations électriques discrètes types de données variés nombres caractères achables agrégats taille des données variée chaînes de caractères entiers bornés... Tout est aaire d'interprétation! 6 / 32
Interprétation des vecteurs de bits Vecteur de bits Élément de base : le bit {0, 1}, (binary digit) Exemple :01001101111100010001010001111111 Nombre de bits ni l est le nombre de bits, en pratique l = 8 n n est le nombre d'octets (bytes), en pratique n = 2 p En programmation (machine 32 ou 64 bits ) : n = 1 est appelé un octet ou byte n = 2 est appelé un short n = 4 est appelé un entier ou int, ou un oat s'il représente un nombre pseudo-réel n = 8 est appelé un long long, ou un double s'il représente un nombre pseudo-réel 7 / 32
Interprétation des vecteurs de bits Entiers naturels (Unsigned integers) Soit un vecteur x de n bits : (x n 1, x n 2,..., x 1, x 0 ) avec x i {0, 1} Valeur de x interprété comme entier naturel : x = 0 i=n 1 x i 2 i Intervalle des 2 n valeurs représentables : Exemples au tableau 0 x 2 n 1 8 / 32
Interprétation des vecteurs de bits Conversion binaire/décimale des entiers naturels base 2 base 10 : application de la formule base 10 base 2 : 0 x = x i 2 i i=n 1 x = v 0 2 + x 0 v 0 = v 1 2 + x 1 v i = v i+1 2 + x i+1 Arrêt lorsque v j < 2 et x = (v j, x j,..., x 1, x 0 ) Exemples au tableau 9 / 32
Interprétation des vecteurs de bits Entiers relatifs (Signed integers) Principalement 2 possibilités pour représenter x : signe et grandeur x n 1 = { 0 si x 0, 1 si x < 0. et (xn 2, x n 3,..., x 1, x 0 ) = x Simple à comprendre Mais : deux 0 et implantation arithmétique non-signés complément à 2 (ou plus précisément à 2 n ) Moins simple à comprendre Mais : numération et implantation arithmétique inchangée 10 / 32
Interprétation des vecteurs de bits Entiers relatifs (Signed integers) Notation dite en complément à 2 Utilisée dans 99,9% des circuits intégrés Soit un vecteur x de n bits : (x n 1, x n 2,..., x 1, x 0 ) avec x i {0, 1} Valeur de x interprété comme entier relatif : Exemples au tableau x = x n 1 2 n 1 + 0 i=n 2 x i 2 i 11 / 32
Interprétation des vecteurs de bits Entiers relatifs Représentation de x a partir de la représentation de x = (x n 1, x n 2,..., x 1, x 0 )? { 1 si a = 0, Dénition du complément de a {0, 1} : a = 0 si a = 1. x = (x n 1, x n 2,..., x 1, x 0 ) + 1 x n 1 est appelé le bit de signe (sign bit) Intervalle des 2 n valeurs représentables : 2 n 1 x 2 n 1 1 C'est la représentation unique utilisée dans ce cours! 12 / 32
Interprétation des vecteurs de bits Extension de signe Aectation d'un vecteur de taille n dans un vecteur de taille m? n > m troncature, perte irrémédiable des poids forts n < m exige une extension de signe Soit (x n 1, x n 2,..., x 1, x 0 ) à écrire comme (y m 1, y m 2,..., y n, y n 1, y n 2,..., y 1, y 0 ) La valeur est conservée avec : y m 1 = x n 1, y m 2 = x n 1,..., y n = x n 1, y n 1 = x n 1, y n 2 = x n 2,..., y 1 = x 1, y 0 = x 0 Preuve, non totalement triviale, basée sur le lemme 0 i=l 1 2 i = 2 l 1 démontrable par récurrence 13 / 32
Interprétation des vecteurs de bits Nombres à virgule Partie entière sur n bits, partie fractionnaire sur m bits : x n 1 x n 2... x 1 x 0, y 1 y 2... y m 1 y m Interprété comme : Exemple : 0 m x = x i 2 i + y i 2 i i=n 1 i=1 110, 011 = 1 2 2 + 1 2 1 + 0 2 0 + 0 2 1 + 1 2 2 + 1 2 3 = 4 + 2 + 0, 25 + 0, 125 = 6, 375 Nombreux nombres non représentables! Virgule xe ou ottante Norme IEEE 754 dénie la représentation des ottants 14 / 32
Interprétation des vecteurs de bits Autres interprétations Champs de bits, indicateurs, booléens,... Caractères/symboles : encodage ASCII ou ISO ou UTF-8. Utile pour acher des messages Flux de données encodées (bzip,... ), musique (mp3, ogg,... ), vidéo (mpeg2, h264,... ) Données cryptées Instructions : forme nale des programmes... Tout ceci nécessite l'interprétation des vecteurs de bits! 15 / 32
Notations binaire usuelles Plan 1 Interprétation des vecteurs de bits 2 Notations binaire usuelles 3 Rappels sur les booléens 4 Représentations des fonctions 16 / 32
Notations binaire usuelles Hexadécimal et octal Lire du binaire est une misère : l'hexadécimal (base 16) est la règle L'Octal (base 8) est parfois utilisé 1 binaire hexa octal binaire hexa octal 0000 0 0 1000 8 10 0001 1 1 1001 9 11 0010 2 2 1010 A 12 0011 3 3 1011 B 13 0100 4 4 1100 C 14 0101 5 5 1101 D 15 0110 6 6 1110 E 16 0111 7 7 1111 F 17 notation du langage C : notation du langage VHDL : notation des langages ADA et VHDL : 0x..., nombre hexadécimal 0..., nombre octal X"...", nombre hexadécimal O"...", nombre octal B"...", nombre binaire n#...#, nombre en base n 1. La conversion est triviale, car 8 et 16 sont des puissances entières de 2 17 / 32
Notations binaire usuelles Kilo, Mega, Giga - octets En matériel, 1K 10 3 = 1000 mais 1K = 2 10 = 1024! Ainsi : Symbole valeur héxa décimale 1K 2 10 0x400 1024 1M 2 20 0x100000 1048576 1G 2 30 0x40000000 1073741824 Nouvelle unité : Kibibyte (KiB) introduite en 2000 2 De même, les log sont des log 2 Par extension, c'est le cas très souvent en informatique! 2. Les KiB, MiB et GiB sont très peu usitées en pratique. 18 / 32
Rappels sur les booléens Plan 1 Interprétation des vecteurs de bits 2 Notations binaire usuelles 3 Rappels sur les booléens 4 Représentations des fonctions 19 / 32
Rappels sur les booléens Rappels sur les booléens B = {0, 1} : ensemble des booléens x B : variable booléenne B doté d'un opérateur unaire et de 2 opérateurs binaires Notations utilisées pour le cours : non, unaire not x = x et, binaire x and y = x y ou, binaire x or y = x + y Interprétation des valeurs : 0 = false et 1 = true Interprétation des fonctions : intuitivement suivant leur nom 20 / 32
Rappels sur les booléens Axiomes associativité a + (b + c) = (a + b) + c / a (b c) = (a b) c commutativité a + b = b + a / a b = b a distributivité a + (b c) = (a + b) (a + c) / a (b + c) = (a b) + (a c) absorption a + (a b) = a / a (a + b) = a complementation a + a = 1 / a a = 0 21 / 32
Rappels sur les booléens Quelques propriétés idempotence a + a = a / a a = a éléments neutres a + 0 = a / a 1 = a a + 1 = 1 / a 0 = 0 0 et 1 sont complementaires 0 = 1 / 1 = 0 involution a = a 22 / 32
Rappels sur les booléens Quelques propriétés, suite Autres propriétés : Lois de De Morgan a + b = a b / a b = a + b n a i=1 i = n a i=1 i / n a i=1 i = n a i=1 i Principe de dualité : une loi valide peut être transformée en son dual en échangeant 0 avec 1 et + avec 23 / 32
Représentations des fonctions Plan 1 Interprétation des vecteurs de bits 2 Notations binaire usuelles 3 Rappels sur les booléens 4 Représentations des fonctions 24 / 32
Représentations des fonctions Tables de vérité Représentation sous forme de tables de vérité Liste de tous les cas possibles n variables impliquent 2 n valeurs possibles x y x x y x + y x y x y x + y x y not x x and y x or y x xor y x nand y x nor y x xnor y 0 0 1 0 0 0 1 1 1 0 1 1 0 1 1 1 0 0 1 0 0 0 1 1 1 0 0 1 1 0 1 1 0 0 0 1 Note : il y a 2 2n fonctions booléennes de n variables 25 / 32
Représentations des fonctions Interprétation Somme de produits : 1 en sortie obtenu par produit des littéraux fonction obtenue par somme de ces produits Produit de sommes : 0 en sortie obtenu par somme des littéraux complémentés fonction obtenue par produit de ces sommes x y f sop pos 0 0 0 x + y 0 1 1 x y 1 0 0 x + y 1 1 0 x + y d'où f = x y = (x + y)(x + y)(x + y ) f <= not(x) and y f <= (x or y) and ((not(x) or y) and (not(x) and not(y))) 26 / 32
Représentations des fonctions Schémas utilisés en circuiterie numérique Portes logiques (logic gate) : représentation schématique d'un opérateur booléen Une porte possède : des connecteurs d'entrée i j, 0 j n 1 un connecteur de sortie o un comportement o = f (i n 1,..., i 0 ) Syntaxe VHDL : Dénition ENTITY gate IS PORT (i0, i1,... : IN STD_LOGIC; o : OUT STD_LOGIC) END gate; ARCHITECTURE behavioral OF gate IS BEGIN o <= i0 op i1 op... ; END behavioral; Instanciation mygate : gate PORT MAP ( i0 => a, i1 => b,..., o => s ); 27 / 32
Représentations des fonctions Portes de base Portes usuelles à une ou deux entrées i i 0 i 1 i 0 + i 1 i 0 i 1 o <= not i o <= i0 and i1 o <= i0 or i1 o <= i0 xor i1 i o i 0 o i 0 o i 1 i 1 i 0 i 1 o i 0 i 1 i 0 + i 1 i 0 i 1 o <= i0 nand i1 o <= i0 nor i1 o <= i0 xnor i1 i 0 i 0 i 0 o o o i 1 i 1 i 1 Portes d arité supérieure à 2 : exemples au tableau 28 / 32
Représentations des fonctions Aspects temporels Porte : dispositif électronique (transistors, R, C ) Conséquence : un calcul logique prend du temps! Temps t pe(i,o) (propagation) et t te(o) (transition) e front (egde) de la sortie : HL, LH o sortie dépendante de l'entrée i si t p pris entre Vdd de i et Vdd de o si t 2 2 p pris entre 0, 9 Vdd et 0, 1 Vdd si t t Pour une technologie 45nm, charge 4 inverseurs i 0 t phl (i 0,o) 46.4ps t tlh (o) 12.4ps t plh (i 0,o) 52.3ps t thl (o) 9.1ps i 1 o t plh (i 1,o) t phl (i 1,o) 51.5ps 39.6ps 29 / 32
Représentations des fonctions Circuit combinatoire Circuit combinatoire (combinational circuit) : représentation schématique d'un ensemble de portes ou circuits interconnectés Un circuit combinatoire possède : des connecteurs d'entrée i j, 0 j n 1 des connecteurs de sortie o k, 0 k m 1 un comportement (o m 1,..., o 0 ) = f (i n 1,..., i 0 ) 30 / 32
Représentations des fonctions Circuit combinatoire Interconnexions légales : entrée primaire sur entrée de porte sortie primaire sur sortie de porte sortie de porte sur entrées de portes 2 sorties ensemble court-circuit! 31 / 32
Représentations des fonctions Schémas utilisés en circuiterie numérique Réalisation en portes de l'équation : Analyse du circuit : t = (x + y).z i 0 i 1 i 2 i 3 o0 <= not a; o 0 o1 <= c xnor d; b <= i2 nand i3; c <= a or b; a <= i0 xor i1; o 1 d <= a and b; 32 / 32