P. 1
Architecture d'Ordinateur

Architecture d'Ordinateur

5.0

|Views: 1,510|Likes:
Published by s_oufiane

More info:

Published by: s_oufiane on Dec 01, 2008
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

05/09/2014

pdf

text

original

Sections

Cours Architecture des Ordinateurs

1ère Année

Organisation de ce cours
• Cours, TD, TP
– 7 séances de cours – 10 séances de TD/TP

Évaluation :
– 2 examens de contrôle continu – 1 examen final

Dates :
– Cours le mardi de 8h à 10h

IUT de Nice - Côte d’Azur Département Informatique

Intervenants :
– – – – Erol Acundeger Gaëtan Rey Hénoc Soude Joanna Moulierac

Joanna Moulierac
joanna.moulierac@inria.fr

Objectif du cours
• Introduction

Plan
– Différentes vues d ’un ordinateur – Évolution et performance des machines
• • • • Représentation de l’information Algèbre de Boole Circuits séquentiels/Automates Architecture type Von Neumann

• De quoi est composé un ordinateur : microprocesseur, des mémoires, disque dur …? • Quels sont les modèles sous-jacents au fonctionnement d’une machine ? • Comment s’exécutent des programmes sur un ordinateur ? • Quel est le lien entre le logiciel et le matériel ? • Comment se fait l’interface avec l’extérieur ? (fonctionnement des divers périphériques)

– Structure d’interconnexion : bus – La mémoire – l’unité centrale
• Couche d’assemblage

– Langage – Modes d’adressage – Procédures

Ordinateur
• Définitions :
Machine capable d’effectuer automatiquement des opérations arithmétiques et logiques (à des fins scientifiques, administratives, comptables…) à partir de programmes définissant la séquence de ces opérations. Un ordinateur est un ensemble de circuits électroniques permettant de manipuler des données sous forme binaire, ou bits.

Décomposition matérielle d’un ordinateur
• Un ordinateur est constitué de plusieurs parties :
– Souris, écran, clavier, unité centrale, lecteur de disquettes ...

• A l’intérieur de l’unité centrale
– une carte mère – une carte vidéo – des disques ....

• Sur la carte mère • But d’un ordinateur : définir et exécuter des séquences de
calculs

– un microprocesseur – de la mémoire (ROM, RAM) ...

• Dans le microprocesseur,
– la puce

Le processeur
• Le processeur a été inventé par Intel (avec le modèle 4004) en 1971. Il est chargé de traiter les informations et d'exécuter les instructions. Il communique avec le reste de l'ordinateur via le langage binaire. • Le processeur est rythmé par une horloge (quartz) cadencée plus ou moins rapidement (on parle alors de fréquence). • A chaque impulsion d'horloge, le processeur lit l'instruction stockée généralement dans un registre d'instruction et exécute l'instruction.
Processeur RISC MIPS Kilo Mega Giga Tera Bit octet CPI

Terminologie
CPU, Central Processing Unit Reduced Instructions set computer Millions d’instructions par seconde 210 = 1024 ~1000 220 = 1048576 ~1 000 000 230 = 1073741824 ~1 000 000 000 240 = 1099511627776 ~1 000 000 000 000 Binary digit 1 octet = 8 bits Cycles par instruction

Fabrication des processeurs
• Les processeurs sont gravés sur des plaques appelées Wafers. Finesse de gravure différentes selon les séries de processeurs (mesurée en µm ou nm). • Les processeurs actuels sont gravés en 0.09µ et 0.065µ. • Diminuer la finesse de gravure permet de produire plus de processeurs à la fois sur un Wafer
– Diminution du coût de fabrication – Diminution de la consommation du processeur et donc de la quantité de chaleur produite – Abaisser la consommation d'énergie et monter plus haut en fréquence.

Bout de silicium dopé Wafer : Galette de plusieurs processeurs (1 processeur = quelques mm2) Plus finement : Millions de transistors Dopage : Action d'introduire dans la masse d'un semiconducteur des atomes d'une impureté choisie, en vue de lui donner - localement ou globalement, selon l'étape considérée une conductivité de valeur déterminée.

Un Wafer

Plus la gravure est fine, plus la fréquence d'horloge (exprimée en mégahertz) s'accroît et plus la consommation électrique diminue

Composition des processeurs (4)

1 - Emplacement destiné à accueillir le microprocesseur. 2 - Barrettes de RAM (Random Access Memory). 3 - Cartes (carte son, modem 56k, carte PCI/Firewire,…) : ports PCI (Peripheral Component Interconnect) 4 - Port AGP (Accelerated Graphic Port). 5 - Contient le BIOS (Basic Input/Output System) ; le BIOS vérifie que tous les composants nécessaires au démarrage de l'ordinateur sont présents. 6 - alimentation du BIOS. 7 - Alimentation de la carte mère; ports IDE (primaire et secondaire) : connecteurs des disques durs et des périphériques ATAPI ; Connecteur du lecteur disquette. 8 - Ports externes du PC.

Evolution et générations des machines
Génération Dates Technologie Opérations/s

Exemple de la famille des microprocesseurs Intel
4004

1 2 3 4 5

1946-57 Tubes à vide 40k 1958-64 Transistors 1965-71 SSI-MSI 1972-77 LSI 1978VLSI 200K 1M 10M 100M

Premiers calculateurs électroniques. Ex : ENIAC Première série commerciale d’ordinateurs Circuits intégrés : permettent
de placer beaucoup de transistors sur une même puce

Pentium

Pentium II

Miniaturisation, Montée en puissance et réduction des coûts. Intégration de millions de transistors sur une même puce.

Pentium III

Pentium 4

Plan
• Introduction

• historique
• • • •

– Différentes vues d ’un ordinateur – Évolution et performance des machines
Représentation de l’information Algèbre de Boole Circuits séquentiels/Automates Architecture type Von Neumann

– Structure d’interconnexion : bus – La mémoire – l’unité centrale
• Couche d’assemblage

– Langage – Modes d’adressage – Procédures

Représentation d’un nombre en base b
• Représentation utilisée par les humains : Base 10 ou décimale
– 10 caractères utilisés de 0 à 9

Représentation d'un nombre en base b
N = an bn + an-1 bn-1 + ..... + a1 b1+ a0 b0
Poids fort

• Représentation utilisée par les ordinateurs : Base 2 ou binaire, base hexadécimale • Pour un représentation un nombre en base b, on utilise b caratères :
– Base 2 : 0,1 – Base 8 : de 0 à 7 – Base 16 : de 0 à 9 et de A à F

ai bi ai

Poids de

Rang de base

ai

Poids faible

ai = 0 ou 1 => bit

• Exemple : Base 2
1010 = 1.23 + 0.22 + 1.21 + 0.20 1010 = 10102
Indique la base

Exemples
• (354)10 = 3*102 + 5*101 + 4*100

Passage de la base 10 à la base 2

division successives du nombre par 2 pour la partie entière
20 2 0 10 2 0 5 1 Bit poids faible

(01100110)2 = 102
27 0 26 1 25 1 24 0 23 0 22 1 21 1 20 0

2 2 0

2 1 1

2010 = 101002
2 0

Bit poids fort

0*27 + 1*26 + 1*25 + 0*24 + 0*23 + 1*22 + 1*21 + 0*20 = 1*26 + 1*25 + 1*22 + 1*21 = 64 + 32 + 4 + 2 = 102

Base 10 (décimal) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Base 2 (binaire) 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001 10010 10011 10100

Base 8 (octale) 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22 23 24

Base 16 (Hexadécimale) 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14

Représentation des nombres
• Ordinateurs travaillent sur un nombre fixe de bits • La notion d'octet
– un octet = 8 bits

7

6

5

4

3

2

1

0

• La notion de mot
– un mot = 8, 16, 32 64 bits – Intel 80386 et 80486 -> 32 bits – Pentium 4 -> 128 bits

Les nombres flottants

Les nombres négatifs

Table des codes Ascii (7 bits Norme ISO 646)

Tables de vérité
Entrées A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 Sortie S 0 1 1 1 0 1 0 0

American Standard Code for Information Interchange

• 3 entrées => 23 = 8 combinaisons possibles • Ecriture dans l’ordre des entiers naturels • Fonction logique :
Quand la fonction vaut-elle 1 ?

S = A.B .C + A.B.C + A.B.C + A.B .C S = A.B .C + A.B + A.B .C

‘G’ est codé 47h soit 0100 01112

Conventions d’écriture
ET X Y X.Y 0 1 0 1 0 0 0 1

Tables de vérité
OU X 0 0 1 1 Y X+Y 0 1 0 1 0 1 1 1 XOR (OU EXCLUSIF) X 0 0 1 1 Y X⊕Y 0 1 0 1 0 1 1 0 NON X 0 1 X 1 0 0 0 1 1

Opérations à 2 opérandes :

X ET Y = X .Y X OU Y = X + Y
Opérations à 1 opérande :

NOR (NON OU) X 0 0 1 1 Y X+Y 0 1 0 1 1 0 0 0

NAND (NON AND) X 0 0 1 1 Y X.Y 0 1 0 1 1 1 1 0

NON ( X ) = X = ¬X = / X

Simplification des fonctions logiques
• Trois techniques de simplification :
– Le raisonnement comme précédemment – L’algèbre de Boole : Algèbre des variables binaires et booléennes. – La méthode graphique par les tableaux de Karnaugh.

Lois de composition
• Absorption : X.(X+Y) = X X+(X.Y) = X • Commutativité : X.Y = Y.X X+Y = Y+X • Associativité : X.(Y.Z) = (X.Y).Z X+(Y+Z) =(X+Y)+Z • Distributivité : X.(Y+Z) = X.Y+X.Z X+(Y.Z) =(X+Y).(X+Z) • Identité : 1.X = X 0+X = X • Nullité : 0.X = 0 1+X = 1 • Idempotence X.X = X X+X = X • Inversion X./X = 0 X+/X = 1

Lois de Morgan

Tableau de Karnaugh (1)
BUT : Obtenir l’expression logique la plus simple d’une fonction S • Un tableau de Karnaugh est un tableau de vérité dans lequel les différentes possibilités des entrées sont classées en code GRAY. Ceci correspond à :
– 0 puis 1 dans le cas d'une variable, – 00, 01, 11, 10 pour 2 variables.

X + Y ⇔ X .Y X .Y ⇔ X + Y
Exemple d’application des lois de Morgan :

( A.B + A.D).( B + C ) = A.B + A.D + B + C = A.B. A.D + B.C = ( A + B ).( A + D ) + B.C

• On peut remarquer qu'en passant d'une case à une case adjacente, une seule variable a changé. • Regrouper ces deux cases adjacentes correspond donc à la simplification par cette variable. • On simplifie l'équation d'une fonction en faisant des regroupements sous forme d'une, deux ou quatre lignes ou colonnes. Le passage de la dernière ligne à la première est également un cas adjacent (idem pour les colonnes).

Tableau de Karnaugh (2)
• Principe : Simplification par adjacence

Tableau de Karnaugh
• Tableau à deux variables d’entrées

B A
0 1

0

1

A.B.C + A.B. C = A.B(C + C ) = A.B
• En choisissant un code de Gray* pour coder les entrées on retrouve les adjacences sur des cases côte à côte.

S = A.B+A.B S=B

0 0

1 1

* Code de Gray : distance de 1 entre deux mots de code consécutifs

Tableau de Karnaugh
• Tableau à deux variables d’entrées

Tableau de Karnaugh
1

B A
0 1

0

• Tableau à deux variables d’entrées

B A
0 1

0

1

S = A.B+A.B S=B
• Tableau à trois variables d’entrées
A
0 1

0 0

1 1

S = A.B+A.B S=B
• Tableau à trois variables d’entrées

0 0

1 1

C B

0 0 1 1

0 1

1 1

1 0 1

S = B + A.C

A
0 1

C B

0 0 1 1

0 1

1 1

1 0 1

1

1

1

1

Tableau de Karnaugh
• Tableau à quatre variables d’entrées

Plan
1 1 1 1 1 1 0 1

S = C.A+D.C.B

AB
00 01 11 10

D C

0 0

0 1 1 1

• •

Introduction Représentation de l’information

Algèbre de Boole
1. Tables de vérité 2. Axiomes de l’algèbre de boole et lois de Morgan 3. Tableau de Karnaugh 4. Opération sur les chaînes de bits Circuits séquentiels Architecture type Von Neumann

• Etats non utilisés : états qui existent en théorie mais qui en pratique ne peuvent jamais apparaître pour des raisons physiques ou mécaniques. 0 0 1 D 0 1 1 C AB

• •

1 0

– Structure d’interconnexion : bus – La mémoire – l’unité centrale
• Couche d’assemblage

S = A.D+B.C

00 01 11 10

1 1

1 1 1 -

– Langage – Modes d’adressage – Procédures

Opérations sur les chaînes de bits
• Complément bit à bit NON(x) :
– NON(011100101) = 100011010

Opérations sur les chaînes de bits
• Addition :
– 0+0 = 00 – 0+1 = 01 – 1+1 = 10, ou autrement dit, 1+1 = 0 et report = 1 Exemple :

X 0 0 1 1

Y 0 1 0 1

S 0 1 1 0

R 0 0 0 1

• OU(X,Y) et ET(X,Y) logiques bit à bit sur les éléments de la chaîne :
– – – – X = Y = X+Y = X.Y = 10100110 01100010 11100110 00100010

0 + 0 1 0 + 1 1 0 0 1 0

1 1 0

0 1 1

2 +3 =5 2 + 14 = 16

• Décalage à droite :
– DECD(1101) = 0110

1 0 1 0 0 0

• Décalage à gauche
– DECG (1101) = 1010

Report = 1

Plan
I. II. III. Introduction Représentation de l’information Algèbre de Boole

Circuits logiques de base
• Circuits standards :
– – – –
A A.B B ET/ AND B OU/ OR A A+B B Non ET/ NAND Non OU/ NOR B XOR A⊕B NOT

IV.

Circuits logiques

1) Circuits combinatoires 2) Circuits séquentiels V. Architecture type Von Neumann VI. Couche d’assemblage

Matérialisent les opérateurs de bases 2, 3, 4 ou même d’avantage d’entrées Fonctionnent sur des signaux électriques Egalement appelés Portes logiques
A A+B A A

A A.B B

A

Circuits combinatoires
Entrée f Sortie

Exemple de circuit logique (1)

Sortie = f(Entrée)

Circuit combinatoire => un ensemble fini d ’entrée E un ensemble fini de sortie S Un circuit combinatoire réalise sur ses sorties une fonction de ses entrées, et fait son calcul en un temps connu borné Exemple : Circuit à 2 entrées E1 et E2 :
E1 /E2 0
E1 E2

1 0 1

=

S

0 1

1 0

Exemple de circuit logique (1)

Exemples de circuits logiques (2)

A B C D E F

A B C D E F 1

S

S

( A + B ).( A + C )

1

S = A.B + C.D.E + F

S = ( A.B ).(C.D.E ).F

Xi

Y i Ri 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1

Ri+ Si
1

Demi-additionneur binaire

0 0 0 0 1

0 0 0 1 0 1 1 1

0 1 1 0 1 0 0 1

Additionneur complet

X Y

X
S

Y 0 1 0 1

S 0 1 1 0

R 0 0 0 1

1 1 1

0 0 1 1

p r e m ie r d e u x iè m e d e m i- a d d it io n n e u r d e m i- a d d it io n n e u r An Sn Sn

R

An Bn Rn R (n-1) Bn

Rn

Circuit logique à deux entrées (X et Y) et deux sorties (S et R).

R(n-1)

S y m b o le e t lo g ig r a m m e d e l' a d d it io n n e u r c o m p le t

Circuits logiques
• Sorties 3 états : 0 ou 1 (Si E =1) ou ouvert (Si E =0) • Le signal E est le signal de validation de la sortie S
A S E S = A.E

Exemple de circuits combinatoires
• Codeurs décodeurs n vers 2n:
– Commander un organe différent parmi 2n au moyen de n bits. – Les lignes Csi permettent de valider le circuit. Ici pour que le circuit fonctionne ces lignes doivent être à vrai cad à 100. – Ces lignes permettent des montage plus complexes à plusieurs décodeurs.
C B A CS0 CS1 CS2 Y7 Décodeur 3/8 Y0 Y1 Y0 = C.B.A Y1 = C.B.A … Y7 = C.B.A Y0 = C.B.A .CS0.CS1.CS2

• Les sorties des circuits logiques nommés mémoires sont toutes de type 3 états • Par l’intermédiaire de circuits nommés BUS le Microprocesseur peut accéder aux contenus de chaque circuit mémoire.

Exemple de circuits combinatoires
• Multiplexeur 4 voies

Circuits séquentiels
• Le comportement d’un circuit combinatoire ne dépend que de ses variables d’entrées. • Le circuit séquentiel fait intervenir en plus l’état interne du système pour déterminer les sorties • Dans un circuit séquentiel, la sortie dépend des entrées et de l’état interne. • La logique séquentielle permet de réaliser des circuits dont le comportement est variable avec le temps. L'état d'un système constitue une mémoire du passé.

e3 e2 e1 e0 Multiplexeur 4 voies B A S

B A
0 1

0

1

e0 e1

e2 e3

S=e0.B.A+e1.B.A+e2.B.A+e3.B.A

Circuits séquentiels
• Un système séquentiel peut être synchrone ou asynchrone selon qu’il est commandée ou pas par un signal d’horloge. • Un système séquentiel est asynchrone si à partir de l’instant ou on applique un vecteur d’entrée, son évolution est incontrôlable de l’extérieur. • Il est synchrone si son évolution est contrôlable de l’extérieur par un signal d’horloge.

Circuits séquentiels
Circuit séquentiel => un ensemble fini d’entrées E un ensemble fini d’états Q un état initial Q0 parmi les états Q un ensemble fini de sorties S une fonction de transitions ft : Q0 x E une fonction de sortie fs : Q0 x E Exemples de circuits séquentiels : Bascule SR Fonction de décalage Fonction de comptage...

Q S

Bascule
• Les bascules sont les circuits séquentiels élémentaires permettant de mémoriser une information binaire (bit) sur leur sortie. Une bascule est capable de se souvenir d’un état précédent. • Elles constituent le point mémoire élémentaire. • Elles peuvent être synchrones ou asynchrones. • La bascule fondamentale est la bascule SR (bascule Set-Reset)

Deux types de Bascules Synchrones/Asynchrones
• Les bascules synchrones : asservies à des impulsions d’horloge et donc insensibles aux bruits entre deux tops • Les bascules asynchrones, non asservies à une horloge et prenant en compte leurs entrées à tout moment.
Données Entrées Horloge Données Entrées Bascule Asynchrone Asynchrone sorties sorties

Bascule Asynchrone Synchrone

Bascule SR
• • La bascule SR est le dispositif de mémorisation élémentaire. Cette bascule est asynchrone. Toutes les bascules, y compris les bascules synchrones, ne sont en fait que des évolutions de cette bascule. La bascule SR est un dispositif à deux entrées S et R et une sortie Q présentant la propriété suivante :
– lorsque S et R sont à 0, Q conserve sa valeur (Etat mémoire) – une apparition (même fugitive) de S entraîne durablement Q=1 – une apparition (même fugitive) de R entraîne durablement Q=0 Qt 0 0 0 0 1 1 1 1 S 0 0 1 1 0 0 0 1 R 0 1 0 1 0 1 1 1 0 0 1 X 1 0 1 X

Bascule SR
Qt+1

Les combinaisons telles que S=1 et R=1 ne sont pas définies. Elles correspondent à un enclenchement simultané de S et R.

Bascule SR
• 2 entrées : Set et Reset • 1 variable en sortie qui prend 2 valeurs Q et Q • La sortie d’une bascule dépend de ses entrées et de son état interne (la valeur antérieure de la sortie Qt). R 0 0 1 1 S 0 1 0 1 Qt X X X Interdit Qt+1 X 1 0 Interdit
• • • •
1. 2. 3. 4.

Plan
Introduction Représentation de l’information Algèbre de Boole
Tables de vérité Axiomes de l’algèbre de boole et lois de Morgan Tableau de Karnaugh Opération sur les chaînes de bits

• •

Circuits séquentiels Architecture type Von Neumann

– Structure d’interconnexion : bus – La mémoire – l’unité centrale
Couche d’assemblage

Les valeurs indéterminées sont affectées à 0. La bascule est dite à déclenchement prioritaire.

– Langage – Modes d’adressage – Procédures

Architecture de Von Newman
• Pour traiter une information, le microprocesseur seul ne suffit pas. Il faut l’insérer au sein d’un système de traitement de l’information.

Architecture de Von Newman
L’architecture de von Neumann décompose l’ordinateur en 4 parties distinctes 1. L’unité de contrôle ou unité de commande, chargée du séquençage des opérations ; 2. L’unité de traitement : son rôle est d’effectuer les opérations de base ; 3. La mémoire qui contient à la fois les données et le programme qui indique à l’unité de contrôle quels calculs faire sur ces données. La mémoire se divise entre mémoire volatile (programmes et données en cours de fonctionnement) et mémoire permanente (programmes et données de base de la machine). 4. Les dispositifs d’entrée-sortie, qui permettent de communiquer avec le monde extérieur.

Architecture de Von Newmann

Les bus
Un bus est un ensemble de fils qui assure la transmission du même type d’information et qui assure la communication entre les divers composants. bus de données : bidirectionnel qui assure le transfert des informations entre le microprocesseur et son environnement, et inversement. Son nombre de lignes est égal à la capacité de traitement du microprocesseur. bus d'adresses: unidirectionnel qui permet la sélection des informations à traiter dans un espace mémoire (ou espace adressable) qui peut avoir 2n emplacements, avec n = nombre de conducteurs du bus d'adresses. bus de commande : constitué par quelques conducteurs qui assurent la synchronisation des flux d'informations sur les bus des données et des adresses.

L’unité de commande (1)
L’unité de commande séquence le déroulement des instructions. Elle effectue la recherche en mémoire de l'instruction, le décodage, l'exécution et la préparation de l'instruction suivante. Compteur ordinal ou Compteur programme (IP) : contient l‘@ de la prochaine instruction à exécuter. Au chargement du programme, contient l’@de la 1ère instruction. Il est modifié :
– soit par incrémentation automatique dans le cas où les adresses des instructions se suivent. – soit par chargement de l'adresse de branchement dans le cas de sauts programmés.

L'unité de commande (2)
• Phase de recherche de l’instruction
– programme en mémoire centrale – lancement du programme Compteur Ordinal  @ 1ère instruction (OS) – le séquenceur va générer les microcommandes pour placer l’instruction dans le Registre d’Instruction – microcommande pour incrémenter le compteur ordinal Compteur Ordinal @ prochaine instruction

Registre d'instruction et décodeur d'instruction : chacune des instructions à exécuter est rangée dans le registre instruction puis est décodée par le décodeur d’instruction. Séquenceur : organise l’exécution des instructions au rythme d’une horloge. Il élabore les signaux de synchronisation internes ou externes (bus des commandes) du microprocesseur

• Phase de traitement de l’instruction
– Le décodeur analyse la zone opération de l’instruction – Le séquenceur exécute les microcommandes correspondantes – Exemple : addition MOV AL,[0200] ADD AL,[0300] MOV [0400],AL

L’unité de commande (3)
Microcommandes

Unité de traitement
• UAL : circuit complexe qui assure les fonctions logiques (AND,OR,CMP…) ou arithmétiques (ADD,SUB,INC…)

Registre d’état Séquenceur

+

Compteur ordinal

• Registre d’état : Indicateur (généralement composé de 8 bits) dont l’état dépend du résultat de la dernière opération effectuée. Indicateurs d’état ou flags. • Les accumulateurs : registres de travail qui servent à stocker les opérandes et les résultats à la fin de l’opération.

Décodeur
Instruction

Code opération

Zone adresse

Registre d’instruction

L’unité arithmétique et logique (1)
• Composée de circuits logiques • Réalise des opérations
– arithmétiques: + - * ~% – logiques ~ + . comparaison décalage

L’unité arithmétique et logique (2)
• UAL et registre d’état
– Exemple: Overflow, Zéro, Carry CMP AL, 0
Instruction de comparaison en assembleur 8086

• Les opérations à effectuer et les opérandes lui sont indiquées par l’Unité de commande.
Accumulateur

}

Si AL = 0 alors ZF=1 sinon ZF=0 finsi

– Flag ZF du registre d’état
Opérande1 Commande (Opération à réaliser) Opérande2

Résultat

• NB: Une UAL fait un nombre limité d’opérations fonctions manquantes à programmer

Registre d’état (1)
• Les instructions de branchement conditionnels utilisent les indicateurs : bits spéciaux positionnés par l'UAL après certaines opérations. • ZF : Zero Flag. mis à 1 lorsque le résultat de la dernière opération est zéro. Sinon, ZF est positionné à 0. • CF : Carry Flag. Indicateur de report (retenue). Il est positionné par les instructions ADD, SUB et CMP (entiers naturels).
– CF = 1 s'il y a une retenue

Registre d’état (2)
• SF : Sign Flag. Positionné à 1 si le bit de poids fort du résultat d'une addition ou soustraction est 1; sinon SF=0. Utile pour la manipulation des entiers relatifs, le bit de poids fort donne 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). Exemple : 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.

Les accumulateurs
AX

Architecture de Von Newman
AH BH CH DH AL BL CL DL

4 accumulateurs 16 bits
– AX : Accumulateur utilisé pour les opérations arithmétiques. – BX : Base pour les adressages – CX : Compteur pour le comptage – DX : Data pour les données

• Registres accessibles sous forme de 2 info 8 bits
– AX se décompose en AH (poids fort) et AL (poids faible de AX)…

La mémoire
• Une mémoire peut être représentée comme une armoire de rangement constituée de différents tiroirs. • Chaque tiroir représente alors une case mémoire qui peut contenir un seul élément : des données. • Une adresse identifie la case mémoire et chaque donnée est accessible grâce à son adresse.
Adresse Case mémoire
5=101 4=100 3=011 2=010 1=001 0=000 00000000 00000000 00000000 11101110 10001110 00001000

La mémoire
• Stocke des informations utilisées par le processeur • Juxtaposition de cellules (la plus petite quantité de mémoire adressable). • Chaque cellule est numérotée (adresse) • Généralement les mémoires sont adressables par octets • Taille d'une cellule – octet : 8 bits (byte) – word : 16 bits, Double word : 32 bits, Quad word 64 bits : en fonction de machines (16 ou 32 bits) • Notation : – Si M désigne une cellule mémoire – [M] représente son contenu

Organisation d’une mémoire
• Mémoire de 96 bits :
– Organisation en cellules élémentaires (8bits), 12 bits ou 16 bits :
AdressesAdresses
0:0 0:1 0:2 0:3 0:4 0:5 1:0 1:1 1:2 1:3 1:4 1:5 0 1 2 3 4 5 6 7 8 9 10 11

Opérations effectuées sur les mémoires
• Lecture (adresse) : lit l’emplacement donné par adresse et ne modifie pas l’emplacement mémoire. • Écriture (valeur, adresse) : met à l’emplacement adresse la valeur placée en paramètre

8 bits

12 bits

16 bits

Exemple d’accès mémoire

Caractéristiques des mémoires
• • Capacité : nombre total de bits que contient la mémoire. S’exprime souvent en octet. Format des données : nombre de bits que l’on peut mémoriser par case mémoire. Volatilité – laps de temps durant lequel elle maintient les informations – Alimentation des mémoires : l'information stockée est volatile si elle risque d'être altérée par un défaut d'alimentation électrique et non volatile dans le cas contraire. – mémoire de travail de l'ordinateur, mémoire sur support magnétique Temps d'accès – temps pour accéder à l'information une fois que l’instruction a été lancée. – de l'ordre de la ns pour les mémoires actuelles et de la ms pour les supports magnétiques Type d'accès – accès direct à l'information, accès aux mots-mémoire par leur adresse. – accès séquentiel Temps de cycle : intervalle minimum entre 2 demandes successives de lecture/écriture. Débit : nombre maximum d’informations lues ou écrites par seconde

``Ajouter 5 au contenu de la case mémoire d'adresse 180'' : 1. Le processeur lit et décode l'instruction; 2. le processeur demande à la mémoire la contenu de l'emplacement 180; 3. la valeur lue est rangée dans l'accumulateur; 4. l'unité de traitement (UAL) ajoute 5 au contenu de l'accumulateur; 5. le contenu de l'accumulateur est écrit en mémoire à l'adresse 180. C'est l'unité de commande qui déclenche chacune de ces actions dans l'ordre. L'addition est effectuée par l'UAL.

• •

Hiérarchie des mémoires

Hiérarchie des mémoires
• Machine idéale
– taille mémoire illimitée – temps d'attente nul

• Problème de coût => Hiérarchie de mémoires • Le processeur va chercher dans les différentes mémoires • L’optimisation est faite par le gestionnaire de mémoire

Registres : situés au niveau du processeur, stockage des opérandes et des résultats Mémoire cache : mémoire rapide destinée à accélérer l’accès de la mémoire principale. Mémoire principale : contient les programmes (instructions et données) Mémoire d’appui : mémoire intermédiaire entre mémoire principale et mémoire de masse, mémoire de cache. Mémoire de masse : stockage permanent, sauvegarde. Disques durs, CDROM, DVD

Caractéristique des mémoires
• mémoire vive: RAM
– Mémoire volatile – Cycle de lecture/écriture (@ bus d'adresse, V bus de donnée, CS, R/W) – Mémoire vive statique SRAM – Mémoire vive dynamique DRAM – Mémoire vive dynamique Synchrone SDRAM

La mémoire virtuelle
• Utilisation de la mémoire secondaire «comme si» c’était de la mémoire centrale • Disponible à partir des 80386 et 68030 • La gestion se fait au niveau du système d’exploitation • Système de gestion de mémoire virtuelle très sophistiqué
– Pagination :
• mono dimensionnelle • mappage de l’espace d’adressage sur la mémoire physique. • Les zones mémoires lues sur la mémoire secondaire sont les pages

• mémoire morte: ROM, PROM, EPROM, EEPROM
– – – – – A lecture seule, Conserve l'information ROM : information stockée de manière définitive, PROM : Programmable par l'utilisateur EPROM -EEPROM : Programmable + effacement par UV ou électriquement

– Segmentation :
• • • • possibilité d’avoir plusieurs espaces d’adressage virtuels chaque espace est indépendant : les segments les segments sont de taille variable (limités à 64k) Sur les 80X86 la segmentation à été utilisée pour résoudre le problème des adresses sur 20 bits

La pagination
• Séparation entre espace d’adressage et emplacement mémoire • Une page est une zone de mémoire de taille fixe (4k) • Déplacement des pages de la mémoire secondaire vers la mémoire centrale -> Pagination • La Pagination
– se fait au fur et à mesure des besoins – Pb du défaut de page – La pagination est transparente à l’utilisateur

Traduction adresse virtuelle – adresse physique

• Réalisation de la pagination
– à la charge du système d’exploitation

BUS DE DONNEES
Microprocesseur
Registre de données Bus interne de données

Mémoires rapides : registres
• Mémoire locale et privée du processeur • Information temporaire • Capacité limitée (1 à 128 bits)

R0

Rn R E G I S T R E D ’ I N D E X

Registre auxiliaire

Registre d’instruction Code Op. Adresse

SP

PC

UAL
Registre d’état Décodeur

A C C U M U L A T E U R

Bus interne d’adresses Signaux internes de commande

BLOC LOGIQUE DE COMMANDE
Registre d’adresses

Horloge

Bus de commande BUS D’ADRESSES

Registres
• Registres de travail :
– – – – AX : Accumulateur utilisé pour les opérations arithmétiques. BX : Base pour les adressages CX : Compteur pour le comptage DX : Data pour les données

Registres

Registres d'offset :
– SI : Source Index utilisé lors d'opérations sur chaînes de caractères, associé à DS. – DI : Destination Index utilisé lors d'opérations sur les chaînes de caractères, associé à DS. si utilisé comme index et à ES lors de manipulation de chaînes. – IP : Instruction Pointer associé à CS, il indique la prochaine instruction à exécuter, et ne peut être modifié. – BP : Base Pointer associé à SS pour accéder aux données de la pile lors d'appels d'un sous-programme. – SP : Stack Pointer associé à SS, il indique l'adresse du dernier élément de la pile.

Registres de segment :
– – – – CS : Code Segment il contient l'adresse du segment de la mémoire de programme DS : Data Segment il contient l'adresse du segment de mémoire de données SS : Stack Segment il contient l'adresse du segment de mémoire de la pile ES : Extra Segment segment supplémentaire pour adresser des données.

Mémoire segmentée
Les instructions manipulent des adresses réduites, qui désignent des objets à l’intérieur d’un segment. Dans le cas du 8086, on a plusieurs segments qui servent à stocker le code du programme, ses données statiques, les données de la pile, etc.

Organisation de la mémoire centrale
• Nécessaire d'implanter dans un microprocesseur
– espace pour le système – espace pour l'utilisateur – espace pour les entrées /sorties

• Taille suffisante pour ranger les programmes • Séparation entre les différents espaces (utilisateur, système)

Modèle d’organisation de la mémoire
• Modèle mémoire linéaire (1 niveau d’adressage)
– valable pour OS qui nécessitent une vitesse performante – protection moindre – limité dans le cas des applications de plus de 4Go de mémoire

Machine à 1 et 2 niveaux d’adressages
• Exemple
DATA SEGMENT A DW 5 B DW -1 DATA ENDS CODE MOV MOV CODE SEGMENT AX,A AX,B ENDS

• Modèle de mémoire segmentée (2 niveaux d’adressage)
– utilise les registres de segment et quatre niveaux de protection – les OS peuvent se protéger des applications – le processeur gère la mémoire et vérifie les protections

Le code n’est pas lié à l’adresse Le code n’est pas lié à l’adresse d’implantation des données dans la d’implantation des données dans la mémoire physique mémoire physique

Le code est lié à l’adresse Le code est lié à l’adresse d’implantation des données d’implantation des données dans la mémoire physique dans la mémoire physique

La pile
• Structure de « rangement » de données
– zone mémoire spécialisée – mémorise les adresses d’appel et retour de sous programmes – fonctionnement LIFO (Last In, First Out)

La pile
• Le registre SS (Stack Segment) = registre segment qui contient l'adresse du segment de pile courant (16 bits de poids fort de l'adresse). Il est initialisé au début du programme et reste fixé par la suite. • Le registre SP (Stack Pointer) pointe sur le dernier bloc occupé de la pile
Push
SP Pointeur de sommet Espace Réservé Pour la pile BP Pointeur de base Espace occupé par la pile

Comment y accéder :
– adresse du dernier élément posé : SS:SP – empiler : PUSH Reg – dépiler : POP Reg

Pop
adresses hautes de la mémoire

La pile augmente vers les adresses faibles
– PUSH : SP  SP- 2, POP : SP  SP+ 2

SP BP

adresses basses de la mémoire

Pile : exemple d’utilisation (1)
• PUSH registre
– empile le contenu du registre sur la pile.

Pile : exemple d’utilisation (2)
• La pile est souvent utilisée pour sauvegarder temporairement le contenu des registres : ;AX et BX contiennent des données a conserver PUSH AX PUSH BX MOV BX, 10 ; on met la valeur 10 dans BX ADD AX, BX ; AX  AX+BX POP BX ; récupère l'ancien BX POP AX ; et l'ancien AX • La pile peut conserver plusieurs valeurs : la valeur dépilée par POP est la dernière valeur empilée : pile LIFO (Last In First Out, Premier Entré Dernier Sorti).

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. PUSH AX ; on met AX sur la pile (SPSP-2) POP BX ; met la valeur dépilée dans BX (SPSP+2)

• Note : équivalent à MOV AX,BX

Pile : registres SP

Instructions arithmétiques et logiques
• Opérations entre une donnée et un accumulateur. Le résultat peut être placé dans l'accumulateur. La donnée peut être une constante ou une valeur contenue dans un emplacement mémoire.
Emplacement libre

16 bits

Adresses Croissantes

SP-2 SP BP
PUSH POP

Exemples : • addition : AX  AX + donnée; • soustraction : AX  AX - donnée; • incrémentation de AX : AX  AX + 1; • décrémentation : AX  AX - 1; • décalages à gauche et à droite;

Les branchements
• Le registre IP du processeur conserve l'adresse de la prochaine instruction à exécuter. Le processeur effectue les actions suivantes pour chaque instruction :
– lire et décoder l'instruction à l'adresse IP; – IP IP + taille de l'instruction; – exécuter l'instruction.

L’UC: Instructions
• Une instruction – Opération élémentaire – Information sur :
• ce que l’instruction fait (add, sub, mov ..) • sur quelles données (AL, AX, 10h ...)

Exécution Séquentielle du code • Pour modifier le déroulement normal d'un programme, on peut exécuter un branchement.
– JMP étiquette – Modification de la valeur de IP et branchement de IP à l’adresse indiquée par étiquette

• les instructions sont spécifiques à un microprocesseur
– 680XX, 80X86, SPARC ... – Exemple
• Pentium 220 instructions. • Techno MMX +57 instructions

Instructions
• Codage d’une instruction

Instructions
• Les instructions et leurs opérandes (paramètres) sont stockés en mémoire principale

Zone Opération

Opérande

– 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.

– Zone Opération
• Code Opération -> Codage unique • jeu d’instruction limité

• 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).

– Opérande
• adresse(s) de la donnée • Adressage implicite utilisation d’un accumulateur • Exemple : B0 01 MOV AL , 01

Plan
• Introduction

Définitions
Langage Haut niveau
(for, if, then, write, etc…)

– Différentes vues d ’un ordinateur – Évolution et performance des machines
• • • • • Représentation de l’information Algèbre de Boole Circuits séquentiels/Automates Architecture type Von Neumann Couche d’assemblage

Compilation
Langage évolué langage machine

Assemblage
Langage bas niveau langage machine

Langage assembleur
(MOV, CMP, JMP, etc…)

– Modes d’adressage – Langage – Procédures

Langage machine
(0010 0011 1100 etc…)

Définitions
• Langage machine : ordres (en binaire) compréhensible par un processeur donné. • Exécutable : suite d’instruction en langage machine • Assembleur : mnémoniques associées au langage machine (JMP,MOV,CMP…)

Exemple de programme
Programme en langage machine 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
Adresse Contenu MP Langage Symbolique
MOV AX, [0110] ADD AX, [0112] MOV [0114],AX

Explication

Exemple.asm

Exemple.obj

Exemple.exe

0100 0103

A1 01 10 03 06 01 12 A3 01 14

Assemblage : MASM Exemple.asm Edition de liens : LINK Exemple.obj

0107

;Charger AX avec le contenu de 0110. ;Ajouter le contenu de 0112 à AX (résultat dans AX). ;Ranger AX en 0114.

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

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)

• Compatibilité ascendante
– Un programme écrit dans le langage machine du 286 peut s’exécuter sur un 386 (l’inverse est faux)

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

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)

Registres d’index :
Pointeur d’instruction (IP) Index source ou destination(SI, DI) Pointeur de Pile ou de base (SP, BP)

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)

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.

Jeu d’instruction (1)
Instruction d’affectation (Transfert CPU Mémoire) Instructions arithmétiques (Opération Acc / Donnée) : MOV

: INC (incrémentation) : DEC (décrementation) : ADD (addition) : SUB (soustraction) : CMP (soustraction sans sauvegarde) : NEG : NOT, OR, XOR : AND, TEST (= AND sans sauvegarde) : SHL (SHR), SAL (SAR) : ROL (ROR), RCL (RCR)

Instructions logiques

Jeu d’instruction (2)

Branchements
Le processeur exécute une instruction en mémoire puis passe à celle qui suit en mémoire : séquentiel
Besoin de faire répéter au processeur une suite d’instructions Besoin de déclencher une action qui dépend d’un test

Branchement Branchements conditionnels

: JMP : JE/ JZ (JNE/ JNZ) : Jump if zero : JO (JNO) : Jump if overflow : JS (JNS) : Jump if sign

Comparaison de valeurs CMP AX, BX suivi d ’un test : (entiers naturels) JA ( >= JAE) JB (JBE) (complément à 2) JG (JGE) JL (JLE)

Utilisation d’une instruction de branchement ou saut
On indique au processeur l’adresse de la prochaine instruction

On distingue deux catégories de branchements
le saut est toujours effectué (sauts inconditionnels) il est effectué seulement si une condition est vérifiée (sauts conditionnels).

AX > BX ? AX < BX ?

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 :
– lire et décoder l'instruction à l'adresse IP; – IP IP + taille de l'instruction; – exécuter l'instruction.

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

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.

• 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

Sauts conditionnels : exemples

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

JE Jump if Equal (ou JZ)
saut si ZF = 1;

JA Jump if Above
saut si CF=0 et ZF=0;

JNE Jump if Not Equal (ou JNZ)
saut si ZF = 0;

JBE Jump if Below or Equal
saut si CF=1 ou ZF=1.

JG Jump if Greater
0100 0103 0106 0107 B8 00 00 A3 01 40 EB FC MOV AX, 0 MOV [140], AX met AX a zéro
écrit à l'adresse 140

JB Jump if Below
saut si CF=1.

saut si ZF = 0 et SF = OF;

JLE Jump if Lower or Equal
saut si ZF=1 ou SF = OF;

JO (JNO) Jump if Overflow
saut si OF=1…

JMP 0103 branche en 103 xxx -> instruction jamais exécutée

Le déplacement est ici égal à FCH, c'est à dire -4 (=103H-107H).

JS (JNS) Jump if Sign
saut si SF=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. 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.

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.
SHL, SHR, ROL, ROR, RCL, RCR…

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)

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.

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.

ROR registre, 1 (Rotate Right)
Comme ROL, mais à droite.

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

Opérations logiques
OR destination, source (OU : 1 ou 0 =1 ; 1 ou 1 = 1…)

3 opérateurs logiques : ET, OU et OU exclusif.
jamais propagation de retenue lors de ces opérations (chaque bit du résultat est calculé indépendamment des autres) 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é.

Opérations sont de la forme : OR destination, source
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).

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]
XOR est souvent utilisé pour inverser certains bits. Après XOR AX, FFFF, tous les bits de AX sont inversés

Modes d’adressage
• Permet la manipulation des différents structures de données • Permet l’accès des données en mémoire.
– – – – Des variables par leur valeur Accès aux données via des pointeurs Des éléments de tableaux Accès aux éléments de structures

Modes d’Adressage
• Les opérandes peuvent être dans :
– des registres – une zone mémoire: on utilise alors l’adresse effective qui peut être une combinaison de 3 éléments
• la base • le Déplacement • l’Index

• Cela donne des adressages
– – – – – – IMPLICITE IMMEDIAT DIRECT INDIRECT BASE INDEXE

• Ces données sont les opérandes pour des instructions
– Arithmétique … – Déplacement …

Adressage implicite ou par registre
– 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 – Exemple : INC AX

Adressage immédiat
– Adressage dans lequel la valeur de l’opérande figure directement dans l’instruction sans avoir besoin de faire un nouvel accès mémoire.
Code Registre Valeur

– Exemple : MOV AL, 10 ; Met la valeur 10 dans AL ADD AX, 5 ; Additionne 5 à la valeur contenue dans AL

Adressage direct
• Un des opérandes est l’emplacement mémoire dont l’adresse figure dans l’instruction. Une fois l’instruction lue, il faut aller faire un accès mémoire pour obtenir l’opérande désiré.

Adressage indirect
L’adresse de la variable est contenue dans un registre de base ou d’index : 2 accès mémoires.
– Exemple :
MOV BX, offset VAR MOV AX,[BX] ; Met dans AX la valeur contenue dans l’emplacement mémoire dont l’adresse est spécifiée dans l’emplacement mémoire d’adresse BX.

– Exemple :

instruction instruction @opérande Mémoire opérande opérande

Registre

Registre @opérande Mémoire opérande

MOV AX,[150]; Met la valeur contenue dans l’emplacement d’adresse 150 dans AX

• NB : Le type de la donnée doit être accordé avec le registre utilisé

Adressage basé
• Similaire à l’adressage indirect par registre sauf qu’un déplacement est ajouté à la base.
adresse effective = adresse base + déplacement

Adressage indexé
– On utilise un registre d’index SI ou DI plus un déplacement – L’adressage est noté par des crochets – Utile pour le parcours de tableaux
instruction @mémoire Mémoire Mémoire @T i opérande Registre d’index

instruction

Registre

Déplacement

Registre @base

– Exemple :

MOV BX, OFFSET DVAR MOV AX,[BX+4] ADD AX,[BP+4]

– Exemple : MOV SI,2 MOV AX, T[SI]

Déplacement

T[i]

Modes d’adressage : résumé
• Par registre ou implicite
– Add AX,BX

Code opération : assembleur
Symbole MOV AX, valeur MOV AX, [ adr ] MOV [ adr ], AX ADD AX, valeur ADD AX, [ adr ] SUB AX, valeur SUB AX, [ adr ] SHR AX, 1 Code Op. B8 A1 A3 05 03 06 2D 2B 06 D1 E8 Octets 3 3 3 3 4 3 4 2 AX ← valeur AX ← contenu de l'adresse adr. range AX à l'adresse adr. AX ← AX + valeur AX ← AX + contenu de adr. AX ← AX - valeur AX ← AX - contenu de adr. décale AX à droite.

• Immédiat
– Add AX,valeur

• Direct
– Add AX,[adresse]

• Indirect
– Mov BX,adresse – Add AX,[BX]

• Indexé
– Add,[adresse+index] On utilise des programmes spéciaux, appelés assembleurs, pour traduire automatiquement le langage symbolique en code machine.

Variables

Structure du programme
PILE SEGMENT STACK DW 256 DUP(?) Base EQU 0 PILE ENDS DATA SEGMENT DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:PILE main: MOV AX, DATA MOV DS,AX MOV AX,PILE MOV SS,AX MOV SP,Base CODE ENDS END main

DB : Variable 8 bits DW : Variable 16 bits EQU : Constante 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

Structure du programme
PILE SEGMENT STACK DW 256 DUP(?) Base EQU 0 PILE ENDS DATA SEGMENT DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:PILE main: MOV AX, DATA MOV DS,AX MOV AX,PILE MOV SS,AX MOV SP,Base CODE ENDS END main

Structure du programme
PILE SEGMENT STACK DW 256 DUP(?) Base EQU 0 PILE ENDS DATA SEGMENT DATA ENDS

Déclaration du segment de pile

Déclaration du segment de données

CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:PILE main: MOV AX, DATA MOV DS,AX MOV AX,PILE MOV SS,AX MOV SP,Base CODE ENDS END main

Structure du programme
PILE SEGMENT STACK DW 256 DUP(?) Base EQU 0 PILE ENDS DATA SEGMENT DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:PILE main: MOV AX, DATA MOV DS,AX MOV AX,PILE MOV SS,AX MOV SP,Base CODE ENDS END main

Structure du programme
PILE SEGMENT STACK DW 256 DUP(?) Base EQU 0 PILE ENDS DATA SEGMENT DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:PILE main: MOV AX, DATA MOV DS,AX MOV AX,PILE MOV SS,AX MOV SP,Base CODE ENDS END main

Etiquette du programme principal

Déclaration du segment de code Avec initialisation des registres de segment

Indication de l’étiquette où commence le programme principal

Initialisation de variables
Assume CS:CODE,DS:DATA DATA SEGMENT N1 DW 25H N2 DW 4 N3 DW ? TAB1 DW 2,3,4,3,2,5,4

Mon premier programme
Assume CS:Code,DS:Data Data SEGMENT N1 DW 25H N2 DW 4 N3 DW ? Data ENDS Code SEGMENT main PROC MOV AX,Data MOV DS,AX MOV AX,N1 MOV CX,N2 MOV DX,0 boucle: ADD DX,AX LOOP boucle MOV N3,DX main ENDP Code ENDS END main

TAB2 DW 2 DUP(?) Chaine DB ‘Hello’ DATA ENDS

N1 est un mot initialisé à 25H N2 est un mot initialisé à 4 N3 est un mot non initialisé TAB1 est un tableau de mots initialisé avec TAB1[0]=2,TAB2[1]=3… TAB2 est un tableau de mots non initialisés Chaine est une chaîne de caractère

Initialisation du segment de données

LOOP : boucle équivalent à DEC CX, JNZ boucle

Appels systèmes DOS
• Affichage de caractère
MOV DL,’A’ MOV AH,02 INT 21H

Procédures (1)
• Déclaration d’une procédure : Procedure PROC [NEAR/FAR] Procedure ENDP
– NEAR : procédure et programme principal sont dans le même segment de code – FAR : ils sont dans 2 segments différents

• Saisie de caractère
MOV AH,01 INT 21H ; résultat dans AL sous forme de car ASCII

• Affichage chaîne de caractère
Chaine DB ’Hello$’ ; définie dans le segment de données MOV AH,09H MOV DX,Offset Chaine INT 21H

• Appel de la procédure dans le programme CALL Procedure ; IP va pointer sur l’adresse mémoire correspondant à Procédure

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 :
– CALL = sauvegarde de IP

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é, simplicité de gestion – inconvénients = peu de registres

A la fin de la procédure, l ’Unité de Traitement récupère les valeurs sauvegardées pour retourner au programme principal
– RET = dépilement de IP

• Si la procédure est de type FAR, CS est aussi sauvegardé sur la pile lors du CALL, RET dépile IP puis CS

Passage par registre
;programme principal ... Mov AX, N1 Mov BX, N2 Call Near Moyenne Mov Res, AX ... ;Procédure Moyenne : Add AX, BX SHR AX, 1 RET

Passage par la pile (1)
• 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
Moyenne PROC NEAR PUSH BP Mov BP, SP Mov AX, [BP+4] Add AX, [BP+6] SHR AX, 1 Mov [BP+ 6], AX POP BP Ret 2 PROC ENDP

;programme ... PUSH N1 PUSH N2 Call Near Moyenne POP Res ...

Passage par la pile (2)
PUSH N1 PUSH N2 Call Moyenne ; empilement de IP, @retour POP AX ;on récupère N1 dans AX
-2 BP,SP 0

Passage par la pile (3)
Évolution de la pile

ancien BP

Moyenne PROC @Retour PUSH BP +2 MOV BP,SP N2 +4 MOV AX,[BP+4] ;on accède à N2 Add AX,[BP+6] ;on accède à N1 N1 +6 SHR AX, 1 ;on divise par 2 MOV [BP+6], AX ;on met AX dans N2 POP BP ;restauration de BP à la fin de la procédure RET 2 ;on dépile IP+1 paramètre (N2) PROC ENDP

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

Passage par la pile (4)
Sauvegarde du résultat et nettoyage de la pile

Procédure propre
• Sauvegarder les registres dans la procédure de façon à ne pas les modifier pour le programme principal.
– Exemple :
Moyenne PROC NEAR PUSH BP Mov BP, SP PUSH AX Mov AX, [BP+4] Add AX, [BP+6] SHR AX, 1 Mov [BP+ 6], AX POP AX POP BP Ret 2 PROC ENDP

; Sauvegarde de AX

; Restauration de AX

Rappels : Registres de segment

Rappels : Registres de travail

Nom

Taille

Fonction
Mémorise le segment où se trouve le code en cours d'exécution (ne peut pas être modifié par le programme) Mémorise le segment où se trouve les données du programme. Mémorise le segment où se trouve la pile de données du programme Ce segment peut être utilisé pour faire ce que l'on veut. Par exemple, il peut pointer sur la mémoire écran.

Nom

Taille

Fonction
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. Bx est utilisé lors de l'accès à une zone mémoire sous forme de tableau, il l'indice de ce tableau. Par exemple, 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.

Cs (Code Segment) 16 bits

Ax (Accumulateur) 16 bits

Ds (Data Segment) 16 bits

Ss (Stack Segment)16 bits

Bx (Base) représente on écrira

16 bits

Es (Extra Segment) 16 bits

Rappels : Registres de travail

Rappels : Registres d'offset
(à combiner avec une adresse de segment)

Nom

Taille

Fonction Nom Taille
16 bits

Fonction
Lors d'opérations sur les chaînes de caractères, comme MOVSB ou Ds:[Si] désigne la variable 'source'. Lors d'opérations sur les chaînes de caractères, comme MOVSB ou Es:[Di] désigne la variable 'destination'. Bp a un rôle proche de celui de Bx, mais il est généralement utilisé avec le segment de pile (Ss:[Bp]).

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. 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.

SI (Source Index) SCASB, Di (Dest Index) SCASB,

16 bits

Dx (Données)

16 bits

Bp (Base Pointeur) 16 bits

Rappels : Registres d'offset

(à combiner avec une adresse de segment)

Annexes

Nom

Taille

Fonction
Cs:[Ip] indique la prochaine instruction à exécuter. Tout comme Cs, Ip ne peut être manipulé par le programme exécuté. Ss:[Sp] indique le dernier élément de la pile. Chaque opération PUSH (empiler) ou POP (dépiler) modifie le registre Sp.

IP (Instruction Point)16 bits

SP (Stack Pointeur) 16 bits

La mémoire cache
• Le préchargeur d’instruction : un petit cache d’anticipation • Un cache externe – réduction des accès à la mémoire principale à des accès sans états d’attente – les accès mémoires sont encore limités par la vitesse du bus • Un cache interne unifié instructions /données – Cache sur la puce du processeur – Occupation du bus – Compétition interne instructions/données • Des caches séparés pour les données et les instructions

La mémoire centrale
• Elle mémorise les programmes utilisateurs, le système d’exploitation • Sa taille
– les 16,32, 64.. Mega d’un PC

• La mémoire centrale est située sur une carte mémoire • Elle a une organisation standard • Elle communique avec le processeur (carte mère) via des bus (de données, d’adresse) • Représentation d’une variable en mémoire
– Sur les intels LITTLE ENDIAN – Sur les motorola BIG ENDIAN

Cycle d’exécution d’une instruction
L’exécution d’une instruction se décompose en trois phases qui sont : 1. la recherche de l’instruction à traiter. 2. le décodage de l’instruction. 3. l’exécution de l’instruction. Ensuite, on passe à l’instruction suivante

Exemple de configuration de mémoire
ffffffffh 00900000h Espace étendu (non utilisé) : :

Adresse
Mémoire étendue (DRAM) 8192K

Taille

: : 00100000h 000E0000h 000C0000h 000A0000h

ROM Système Circuit ROM/BIOS RAM vidéo Mémoire de base Utilisateur (DRAM)

128K 128K 128K

Total = 1024k

: : 00000000h

640K

Mécanisme d'accès à la mémoire
L'accès à une information -> positionnement de l'adresse sur les n lignes de bus
Adresse D E C O D E U R A D R E S S E Sélection
0 1 2

Mémoire

BUS D'ADRESSE N LIGNES

BUS DE DONNEES M LIGNES

2n-1

Exemple:

N = 8, Adresse = 00000010 255 sélections possibles, sélection = 2 M= 16 -> bus de données reçoit des valeurs sur 16 bits

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->