02/12/12 PF1 - Cours 1 Dernière mise à jour : 16 septembre 2010 Chapitre suivant Informations sur le cours organisation contrôle des connaissances objectifs, contenu : organisation générale d'une machine le problème général du codage (ce qu'on est en droit d'attendre d'un code, une définition «mathématique», des exemples -le code Morse par exemple -) ce qu'est la compression, la crypto par rapport à cela les systèmes de numération positionnels vs. les systèmes de représentation additifs (chiffres romains par exemple). Propriétés commune des systèmes positionnels. La base deux. Passage de la base dix à la base deux et l'inverse la représentation binaire des informations dans des mots en mémoire représentation des caractères Problèmes combinatoires simples. représentation des nombres entiers calculs en base deux intérêt des bases huit (octal) et seize (hexadécimal). Les liens avec la base deux. Changements de bases représentation des entiers négatifs par complément à 2. son intérêt (un seul zéro, compatibilité de l'arithmétique) limitations. la représentation des nombres non entiers et les problèmes que cette représentation induit éventuellement, la représentation de données non numériques le point de vue logique les opérations logiques usuelles (sur des variables booléennes d'un programme ou des bits) tables de vérité passage d'une table de vérité à une expression logique réalisation de circuits combinatoires simples (semi-additionneurs, multiplexeurs, décodeurs) le langage élémentaire d'une machine Les modes d'adressage les types d'instructions le principe d'exécution d'un programme dans ce langage écriture de programmes simples liens avec les langages de plus haut niveau Présentation simplifiée d'une machine Structure de Von Neumann Elle correspond au schéma suivant : Dans ce modèle d'ordinateur, une unité de stockage unique est utilisée pour mémoriser à la fois les instructions (programmes) et les données manipulées par ces programmes (données, résultats, calculs intermédiaires) : unité arithmétique et logique [UAL] (unité de traitement, unité de calcul) : effectue des opérations élémentaires unité de contrôle (unité de commande) mémoire centrale (mémoire pricipale, RAM) les unités d'entrée 1/8 02/12/12 PF1 - Cours 1 les unités de sortie Nous n'en dirons pas plus, mais mentionnons l'architecture Harvard qui se distingue de la précédente par le fait que les mémoires programmes et données sont séparées. L'accès à chacune des deux mémoires s'y fait donc via un chemin distinct. Quelques définitions supplémentaires (micro)processeur ou unité centrale : réunion de l'UAL et de l'unité de contrôle instruction : traitement élémentaire effectué à un instant programme : suite d'instructions réalisant un traitement particulier Quelques grands principes : l'unité de contrôle lit les instructions une à une depuis la mémoire à partir de l'instruction en cours, l'unité de contrôle indique l'emplacement des opérandes, l'opération à réaliser, l'emplacement du résultat l'unité Arithmétique et logique réalise des opérations élémentaires sur 2 opérandes (arithmétique + - / x, logique ''et, ou, non'' ) la mémoire est structurée linéairement les instructions du programme sont lues séquentiellement, c'est donc une exécution de la forme étape 1, étape 2, étape 3 ... certaines instructions spéciales indiquent au système de l'unité de commande de modifier comme par exemple : étape 4 -> aller à l'étape 1 si résultat non nul Scémas décrivant l'architecture simplifiée d'une machine Le second schéma fait apparaître l'horloge (notée Ø sur la figure) qui envoie des «tops» à intervalles réguliers. A chaque top deux nouveaux composants sont reliées au bus et peuvent y transmettre une valeur jusqu'au prochain top. www.pps.univ-paris-diderot.fr/~jmr/enseignements/PF1/partie1.html 2/8 02/12/12 PF1 - Cours 1 La mémoire centrale Dans un premier temps, on peut la voir : comme un ruban contenant une suite de chiffres binaires 0 ou 1 (des bits) comme un ruban contenant des cases numérotées constituées d'un certain nombre de chiffres binaires adjacents plus finement comme un cahier contenant des pages numérotées, chaque page contenant elle même des cases numérotées Les premières caractéristique importantes de la mémoire sont sa taille qui s'exprime en nombre d'octets et la taille des mots qui la composent (nombres d'octets ou de bits). Quelques propriétés de la mémoire centrale: un des services de base offert par la mémoire est de permettre de récupérer le contenu d'un de ses emplacements spécifié par son adresse on peut accéder au contenu de la mémoire dans un ordre quelconque d'où l'utilisation du terme RAM (contrairement à ce qui se passe pour une bande magnétique). Le temps d'accès à un emplacement est indépendant de son adresse. elle est volatile : en l'absence d'alimentation électrique, elle s'efface et son contenu est donc perdu L'interprétation d'une suite de bits dépend du contexte (l'unité qui l'utilise, le programme, ...). Tout ce que contient la mémoire, tout ce qui est traité par le processeur est numérisé (c'est-à-dire représenté sous forme d'une suite de bits) : une suite de bits peut donc représenter une suite de caractères, des nombres (entiers on non), des sons, des images fixes ou animées, des instructions, ... en mémoire il n'y a pas de distinction entre les informations correspondant aux données et les informations correspondant aux instructions le codage binaire des données numériques se fait en base 2 : c'est le codage utilisé par l'UAL pour faire l'arithmétique il y a un codage binaire pour les instructions : l'unité de commande est câblée pour associer telle ou telle opération à telle ou telle suite de bits Le temps d'accès à la mémoire est une autre caractéristique importante de celle-ci. La mémoire est constituée de centaines de milliers de petits condensateurs emmagasinant des charges. Lorsqu'il est chargé, l'état logique du condensateur est égal à 1, dans le cas contraire il est à 0, ce qui signifie que chaque condensateur représente un bit de la mémoire. Les condensateurs se déchargent, il faut donc constamment les recharger (le terme exact est rafraîchir, en anglais refresh) à un intervalle de temps régulier appelé cycle de rafraîchissement. Les mémoires DRAM nécessitent par exemple des cycles de rafraîchissement d'environ 15 nanosecondes (ns). Chaque condensateur est couplé à un transistor (de type MOS) permettant de «récupérer» ou de modifier l'état du condensateur. Ces transistors sont rangés sous forme de tableau (matrice), c'est-à-dire que l'on accède à une case mémoire (aussi appelée point mémoire) par une ligne et une colonne. www.pps.univ-paris-diderot.fr/~jmr/enseignements/PF1/partie1.html 3/8 02/12/12 PF1 - Cours 1 Chaque point mémoire est donc caractérisé par une adresse, correspondant à un numéro de ligne (en anglais row) et un numéro de colonne (en anglais column). Or cet accès n'est pas instantané et s'effectue pendant un délai appelé temps de latence. Par conséquent l'accès à une donnée en mémoire dure un temps égal au temps de cycle auquel il faut ajouter le temps de latence. Ainsi, pour une mémoire de type DRAM, le temps d'accès est de 60 nanosecondes (35ns de délai de cycle et 25 ns de temps de latence). Sur un ordinateur, le temps de cycle correspond à l'inverse de la fréquence de l'horloge, par exemple pour un ordinateur cadencé à 200 MHz, le temps de cycle est de 5 ns (1/(200*106)). Par conséquent un ordinateur ayant une fréquence élevée et utilisant des mémoires dont le temps d'accès est beaucoup plus long que le temps de cycle du processeur doit effectuer des cycles d'attente (en anglais wait state) pour accéder à la mémoire. Dans le cas d'un ordinateur cadencé à 200 MHz utilisant des mémoires de types DRAM (dont le temps d'accès est de 60ns), il y a 11 cycles d'attente pour un cycle de transfert. Les performances de l'ordinateur sont d'autant diminuées qu'il y a de cycles d'attentes, il est donc conseillé d'utiliser des mémoires plus rapides. Le processeur Sans trop entrer dans les détails, on peut dire que l'exécution des instructions par un processeur peut se découper en les grandes étapes suivantes : chargement de l'instruction à exécuter dans le processeur (à un emplacement particulier appelé registre d'instruction) décodage de l'instruction localisation dans la mémoire des données utilisées par l'instruction si nécessaire, chargement des données depuis la mémoire dans le processeur exécution de l'instruction recopie des résultats à leur destination passage à l'instruction suivante : l'exécution des instructions est séquentielle et le processeur conserve «quelque part» le numéro (adresse) de la prochaine instruction à exécuter : c'est le compteur ordinal. Au travers de ce qui précède, on voit que le processeur dispose de manière interne d'une mémoire pour y stocker temporairement des informations : on parle de registres. Les registres servent à stocker des données accessibles directement par la processeur ecute;e ou en sortie de calcul). Les registres sont souvent spécialisés dans un certain type de données/instructions bien que certains gardent, pour des raisons de souplesse, une fonction générale. La taille des des registres est plus ou moins étendue. Un processeur qui utilise des registres 32 bits est dit «processeur 32 bits» alors que les processeurs utilisant des registres 64 bits sont dits «processeurs 64 bits». Le nombre de registres varie selon les processeurs, d'une dizaine à quelques centaines. Ce type de mémoire se place au niveau supérieur de la hiérarchie mémoire : c'est le type de mémoire qui possède le meilleur temps d'accès mais, compte tenu de la limitation de place dans un processeur leur coût est élevé et leur nombre limité (quelques dizaines). Les opérations sont le plus généralement réalisées sur les données dans les registres. Ainsi, les données sont transférées de la mémoire dans des registres (opérations de type load), traitées et les résultats transférés depuis les registres vers la mémoire (opération de type store). On peut citer parmi les registres qu'on retrouve sur tous les processeurs : registre instruction (RI) contenant l'instruction en cours de traitement compteur ordinal (compteur de programme, CO ou PC pour Program Counter), contenant l'adresse de la prochaine instruction à traiter (registre) accumulateur (ACC), stockant les données traitées par l'UAL registre d'état (PSW, Processor Status Word), permettant de stocker des indicateurs sur l'état du système (retenue, dépassement, etc.) communément appelés drapeaux (flags) registre d'index utilisé pour une certaine forme d'adressage de la mémoire registres généralistes pouvant contenir temporairement des donnés pointeur de pile utilisé pour repérer le sommet de la pile mémoire Le processeur est cadencé au rythme d'une horloge interne (cristal de quartz soumis à un courant électrique, envoyant des impulsions, appelées «top» ou «cycle»). La fréquence d'horloge correspond au nombre d'impulsions par seconde et s'exprime en Hertz (Hz). Les tout premiers ordinateurs fonctionnaient à quelques dizaines de Hertz, le premier PC tournait à 4,77 MHz, aujourd'hui on compte en GHz. Par exemple, un ordinateur à 200 MHz possède une horloge envoyant 200 000 000 battements par seconde. A chaque top d'horloge le processeur exécute une action élémentaire (atomique), correspondant à une instruction ou une partie d'instruction. L'indicateur appelé CPI (Cycles Par Instruction) permet de représenter le nombre moyen de cycles d'horloge nécessaire à l'exécution d'une instruction. La puissance du processeur peut ainsi être caractérisée par le nombre d'instructions qu'il est capable de traiter par seconde. L'unité utilisée est le MIPS (Millions d'Instructions Par Seconde) correspondant à la fréquence du processeur que divise le CPI. Principales unités fonctionnelles d'un processeur : l'unité de commande qui lit les données arrivant, les décode puis les envoie à l'unité d'exécution. Elle est est notamment constituée d d'un séquenceur (ou bloc logique de commande) chargé de synchroniser l'exécution des instructions au rythme de l' horloge. Il est ainsi chargé de l'envoi des signaux de commandes, du compteur ordinal et du registre d'instruction l'unité d'exécution (ou unité de traitement), qui accomplit les tâches que lui a données l'unité d'instruction. L'unité d'exécution est notamment composée de l'UAL, l'unité de virgule flottante (notée FPU qui accomplit les calculs complexes non entiers que ne peut réaliser l'unité arithmétique et logique), le registre d'état et le registre accumulateur l'unité de gestion des bus (ou unité d'entrées-sorties), qui gère les flux d'informations entrant et sortant, en interface avec la mémoire vive du système Hiérarchie mémoire En fait, les types de mémoires susceptibles de stocker des programmes ou des données sont multiples. www.pps.univ-paris-diderot.fr/~jmr/enseignements/PF1/partie1.html 4/8 02/12/12 PF1 - Cours 1 Le schéma suivant résume cette hiérarchie : Les trois caractéristiques importantes qui conduisent à cette hiérarchie sont : la vitesse d'accès ou temps de réponse le coût de fabrication la capacité de stockage ou taille De fait, la capacité de stockage est d'autant plus réduite que la vitesse d'accès et les coûts sont élevés. D'un point de vue technologique, on distingue pour les mémoires vives : les mémoires dynamiques (DRAM, Dynamic Random Access Module), peu coûteuses.Elles sont principalement utilisées pour la mémoire centrale de l'ordinateur les mémoires statiques (SRAM, Static Random Access Module), rapides et onéreuses. Les SRAM sont notamment utilisées pour les mémoires cache du processeur Mémoire cache La mémoire cache (antémémoire ou mémoire tampon) est une mémoire rapide permettant de réduire les délais d'attente des informations stockées en mémoire vive. En effet, la mémoire centrale de l'ordinateur possède une vitesse bien moins importante que le processeur. Il existe néanmoins des mémoires beaucoup plus rapides, mais dont le coût est très élevé. La solution consiste donc à inclure ce type de mémoire rapide à proximité du processeur et d'y stocker temporairement les principales données devant êre traitées par le processeur. Les ordinateurs possèdent généralement plusieurs niveaux de mémoire cache : la mémoire cache de premier niveau (appelée L1 Cache, pour Level 1 Cache) est directement intégrée dans le processeur. Elle se subdivise en 2 parties : la première est le cache d'instructions, qui contient les instructions issues de la mémoire vive décodées la seconde est le cache de données, qui contient des données issues de la mémoire vive et les données récement utilisées lors des opérations du processeur les caches du premier niveau sont très rapides d'accés. Leur délai d'accès tend à s'approcher de celui des registres internes aux processeurs (de l'ordre de la nanoseconde) et leur taille se compte en Koctets. Intel privilégie des caches de niveau 1 de petite taille (32Ko pour les Pentium) alors que chez AMD elle est de 64Ko et chez Athlon de 128Ko la mémoire cache de second niveau (appelée L2 Cache, pour Level 2 Cache) sert d'intermédiaire entre la mémoire cache de niveau 1 et la mémoire RAM. Elle ne différencie pas données et programmes, elle est moins rapide que le cache L1 (un rapport de 2 à 4 avec le niveau L1), mais sa taille est plus importante (de 256 Ko à 2 Mo) la mémoire cache de troisième niveau (appelée L3 Cache, pour Level 3 Cache) est située au niveau de la carte mère, est constituée de mémoire de type statique et donc plus rapide que la mémoire centrale. Sa taille varie de 1 Mo à 8 Mo. Tous ces niveaux de cache permettent de réduire les temps de latence des différentes mémoires lors du traitement et du transfert des informations. Pendant que le processeur travaille, le contrôleur de cache de premier niveau peut s'interfacer avec celui de second niveau pour faire des transferts d'informations sans bloquer le processeur. De même, le cache de second niveau est interfacé avec celui de la mémoire vive (cache de troisième niveau), pour permettre des transferts sans bloquer le fonctionnement normal du processeur. Communication entre les unités Les différentes unités d'une machine échangent des informations au travers d'un bus. D'un point de vue matériel, un bus est un ensemble de fils sur lesquels des signaux sont transmis en parallèle Différents types d'informations sont échangés : des adresses des donnés (contenus de cases mémoire) www.pps.univ-paris-diderot.fr/~jmr/enseignements/PF1/partie1.html 5/8 02/12/12 PF1 - Cours 1 des commandes Un bus est généralement constitué de 50 à 100 lignes physiques distinctes, classées en trois sous-ensembles fonctionnels : le bus d'adresses (bus d'adressage ou bus mémoire) transporte les adresses mémoire auxquelles le processeur souhaite accéder pour lire ou écrire une donnée. Il s'agit d'un bus unidirectionnel le bus de données véhicule les donnés en provenance ou à destination du processeur. Il s'agit d'un bus bidirectionnel le bus de contrôle (bus de commandes) transporte les ordres et les signaux de synchronisation en provenance de l.unité de commande et à destination de l'ensemble des composants matériels. Il s'agit d'un bus directionnel dans la mesure où il transmet également les signaux de réponse des éléments matériels. Le schéma suivant la liaison entre processeur et mémoire sur le bus : Pour lire (ou écrire) un nombre en mémoire, le processeur doit donner l'adresse (nombre codé sur N bits) sur le bus d'adresse, puis la valeur peut transiter sur le bus de données (nombre codé sur M bits). Les nombres M et N ne sont pas nécessairement égux. Mais le nombre N détermine le nombre maximal de mémoires accessibles par le CPU. Pour un processeur 8 bits, une valeur 8 de N aurait limiter la mémoire à 256 éléments adressables. En fait N valait 16 sur les ordinateurs 8 bits (autorisant et limitant la mémoire à 64ko). Sur le processuer 8086 utilisé sur les premiers PC, on avait N=20 alors que M=16. Caractéristiques d'un bus le volume d'informations transmises simultanément, exprimé en bits, correspond au nombre de lignes physiques sur lesquelles les données sont envoyées de manière simultanée. Une nappe de 32 fils permet ainsi de transmettre 32 bits en parallèle. On parle ainsi de «largeur» pour désigner le nombre de bits qu'un bus peut transmettre simultanément la vitesse du bus est également définie par sa fréquence (exprimée en Hertz), c'est-à-dire le nombre de paquets de données envoyés ou re\ccedil;us par seconde. On parle de cycle pour désigner chaque envoi ou réception de données Il est possible de connaître le débit maximal du bus (ou taux de transfert maximal), c'est-à-dire la quantité de données qu'il peut transporter par unité de temps, en multipliant sa largeur par sa fréquence. Un bus d'une largeur de 16 bits, cadencé à une fréquence de 133 MHz possède donc un débit égal à : 16 * 133.106 = 2128*106 bit/s, soit 2128*106/8 = 266*106 octets/s soit 266*106 /1000 = 266*103 Ko/s soit 259.7*103 /1000 = 266 Mo/s Les caractéristiques du bus influent sur la puissance d'un ordinateur : un processeur à 2,4 GHz recevra des instructions depuis la mémoiore tous les 3 cycles d'horloge si le bus connectant la mémoire et le processeur a une fréquence de 800 MHz (2400/800) tous les 18 cycles si le bus a une fréquence de 133MHz (2400/133) On distingue généralement sur un ordinateur deux principaux bus : le bus système (bus interne, en anglais internal bus ou front-side bus, noté FSB). Le bus système permet au processeur de communiquer avec la mémoire centrale du système (mémoire vive ou RAM) le bus d'extension (bus d'entrée/sortie) permet aux divers composants de la carte-mère (USB, série, parallèle, cartes branchées sur les connecteurs PCI, disques durs, lecteurs et graveurs de CD-ROM, etc.) de communiquer entre eux mais il permet surtout l'ajout de nouveaux périphériques grâce aux connecteurs d'extension (appelés slots) connectés sur le bus d'entrées-sorties Terminologie bit binary digit unité de quantité d'information. Avec un bit, on peut coder deux informations, avec 2 on peut en coder 4, avec n on peut en coder 2n . Inversement, pour coder p informations, il faut log2(p) bits octet (byte) suite de 8 bits codage de nombres entre 0 et 255, de -128 à 127, de caractères avec 3 octets, codage RVB des couleurs (16 millions) généralement suite d'un certain nombre www.pps.univ-paris-diderot.fr/~jmr/enseignements/PF1/partie1.html 6/8 02/12/12 PF1 - Cours 1 mot-mémoire (mot d'octets (2, 4, 8) en abrégé) cahque mot possède une adresse ce qui permet d'y accéder processeur codage de nombres, d'adresses CPU, Central Processing Unit fréquence d'horloge exprimée en KHz, MHz, GHz Les ordres de grandeur de capacité Kilo [K] 210 = 1024 de l'ordre de 103 ordre de grandeur d'un Ko : une page de texte Mega [M] ordre de grandeur d'un Mo : une disquette, une photo numérique, un roman 220 = 1048576 de l'ordre de 106 Giga [G] 230 = 1073741824 de l'ordre de 109 Tera [P] 240 = 1099511627776 de l'ordre de disques durs usuels pour particuliers : 0,1 à 2 To 1012 Peta [T] 250 de l'odre de 1015 Exa [E] un CD : 0,8Go, DVD (4,5 Go par face et par couche), mémoire flash (clé USB ou carte mémoire, 1 à 16 Go) gros systèmes de stockage 260 de l'ordre de 1018 taille pas encore d'actualité Zetta [Z] 270 de l'ordre de 1021 taille possible durant votre vie Yotta [Y] 280 de l'ordre de 1024 taille impossible à prédire 1080 estimation du nombre d'atomes dans l'univers observable Les ordres de grandeur de petitesse du temps milli [m] 10-3 la période associée à la fréquence 50Hz (courant alternatif du réseau) est de 20 millisecondes micro -6 10 [μ] nano 10-9 [n] une nano-seconde est la période correspondant à une fréquence de 1 GigaHertz pico 10-12 [p] femto -15 10 [f] 10-16 secondes = 100 x 10-18 secondes = 100 attosecondes atto [a] événement le plus court jamais observé 10-18 zepto -21 10 [z] yocto -24 10 [y] 10-44 secondes Temps de Planck : la plus petite mesure temporelle ayant une signification physique dans le cadre de nos théories présentes a pour valeur 5,4 × 10-44 secondes A contrario, l'âge de l'univers est estimé à 14 milliards d'années, soit 4 × 1017 secondes. Quelques termes/acronymes BIOS Basic Input/Output System système d'entrée-sortie basique mémoire morte contenant des programmes permettant d'effectuer des opérations élémentaires lors de la mise sous tension (typiquement lecture à une adresse sur un disque) RAM Random Access Memory mémoire à accès aléatoire on parle de mémoire vive, de mémoire volatile ROM Read Only Memory mémoire en lecture seule on parle de mémoire morte, de mémoire non-volatile mémoire possédant les caractéristiques d'une mémoire vive mais dont les donnés ne sont pas Mémoire volatiles (ne nécessitent pas le maintein sous tension). flash caractéristiques : accès rapide, durée de vie, faible consommation, pas de mécanique www.pps.univ-paris-diderot.fr/~jmr/enseignements/PF1/partie1.html utilisée pour les appareils photos numériques, les téléphones cellulaires, les clés USB 7/8 02/12/12 PF1 - Cours 1 Quelques exercices (solutions en suivant le lien) (1) bits, suites de bits, dénombrement : combien de séquences différentes de n bits existe-il ? De manière générale, combien de séquences différentes de longueur n peut-on construire avec m symboles ? (2) manipulation des unités de mémoire et des puissances : combien une mémoire de 1 Giga-octets contient-elle de mots de 32 bits ? (3) la bibliothèque de Babel revisitée. A la manière de Jorge Luis Borges dans sa nouvelle de science fiction «La bibliothe`que de Babel » imaginons une bibliothèque contenant tous les livres de 410 pages de 40 lignes de 80 caractères qu'il est possible d'écrire en utilisant 40 caractères (les 26 lettres de l'alphabet, les 10 dix chiffres et quatre signes de ponctuation [espace, virgule, point virgule et point]), peu important que ce qu'ils contiennent aient un sens. a) En considérant que 210 est égale à 1000 (c'est-à-dire à 103 ) donner l'ordre de grandeur du nombre de livres que contient cette bibliothèque. b) Comparer ce nombre à celui du nombre d'atomes de l'univers. c) Si on décidait de numéroter ces livres, que pourrait-on dire de la plupart de ces numéros ? Chapitre suivant www.pps.univ-paris-diderot.fr/~jmr/enseignements/PF1/partie1.html 8/8