Chapitre suivant Informations sur le cours Présentation simplifiée d

publicité
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
Téléchargement