Cours LIFC

Transcription

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

Documents pareils