Vous êtes sur la page 1sur 217

Microprocesseurs

Introduction Générale et Historique

Mourad Adnane
Département d’Èlectronique, Ècole Nationale Polytechnique 2020

1
Objectifs du Cours
Apprendre les concepts associés au microprocesseur généraliste:

l’architecture (constituants de base)


jeu d’instruction
modes d’adressage
organisation mémoire et interfaces

Application à un microprocesseur type.


2
Références Bibliographiques
Architecture de l’Ordinateur; Auteur: Andrew
Tanenbaum; 2005 PEARSON (Bases sur
l’architecture, la mémoire, niveaux d’abstractions,
etc.) (En PDF sur la plateforme)
Fast and Effective Embedded Systems Design:
Applying the ARM mbed; Rob Toulson and Tim
Wilmshurst; Elsevier 2012 (TP avec codes en C) (En
PDF sur la plateforme)
UM 10360 USER Manual (architecture, jeu
d’instruction Assembleur pour ARM cotrex M3:
exemple MBED) NXP 2014
3
Introduction
Quel est le besoin qui a amené à son
développement?

Quels sont les avancées technologiques ayant


permis
son développement ?

Les réponses permettrons de mieux cerner son rôle

4
Introduction (suite)
Les besoins :
calculs de plus en plus rapide
calculs de moins en moins contraignants
calculs moins sujet aux erreurs
automatisation des calculs

C’est une ancienne quête humaine qui se poursuit de


nos jours et se poursuivra certainement dans le futur
5
Historique (La Pascaline)
Blaise Pascal (1623-1662), Mathématicien,
Physicien, Philosophe et Inventeur de génie
inventa, en 1645, la machine à calculer: la
Pascaline…l’ancêtre de la calculatrice.

La machine à calculer: La Pascaline 6


Historique (La Pascaline)
Caractéristiques de la Pascaline:
l’addition et la soustraction de 2 nombres
la multiplication par addition successives
la division par soustraction successives
Inconvénient
dotée de mécanismes d’engrenages
s
données introduites manuellement
le résultat est affiché

a permis de substituer l’effort de calcul mental


par le travail de la machine (avancée majeure)
7
Historique (la machine analytique)
Charles Babbage (1791-1871), Mathématicien,
et Inventeur, énonça, en 1834, le principe d’une
machine analytique où les données ainsi que
les taches à réaliser sont reçues à travers des
cartes perforées. Le résultat est imprimée.
La machine analytique
La machine analytique est
sans
doute, l’ancêtre le plus proche
de l’ordinateur moderne.
8
Historique (la machine analytique)
La machine analytique était constituée:
d’un magasin (qui tenait le rôle de mémoire)
d’un moulin (machine à calculer)
d’une entrée des données/commandes via les cartes perforées
d’une sortie des résultats (imprimés)
a permis de:
- stocker des données (résultats intermédiaires)
- entrer les données et les commandes via des
cartes
- stocker les résultats sous forme imprimé
9
L’ère de l’électricité
Le 20 ème siècle sera le théâtre des plus grandes
avancées ayant permis d’aboutir à l’ordinateur
actuel
et par ricochet aux microprocesseurs actuels.

10
Historique (la période WWII )

1944 Howard Aiken construit la machine Harvard Mark I


• H. Aiken s’est inspiré des travaux de C. Babbage pour construire
sa machine.
• basée sur l’utilisation de relais électromécaniques, sa machine
pouvait
stocker 72 mots de 23 chiffres. L’instruction durait 6 secondes.
• L’entrée des données et des instructions, ainsi que la sortie, se faisait
à l’aide de rubans perforés.
• plus de 100000 composants; des Kms de câbles; une consommation
en
énergie digne d’une manufacture!
11
Historique (la période WWII )

En Grande Bretagne à Bletchley Park, plusieurs équipes de Mathématiciens


et de Cryptographes tentent de décrypter les messages émis par la fameuse
machine Allemande ENIGMA

• Alan Turing dirige l’équipe qui construit « la bombe cryptologique »


,
cette machine essaye des clés pour trouver un message récurrent.
• L’équipe dirigée par Tommy Flowers construit Colossus, le premier
ordinateur basée sur la logique binaire.
• D’autres travaux similaires furent réalisés en parallèle (aux USA
notamment)

12
Historique (la période WWII )
Quelques caractéristiques de la machine Colossus:
1500 à 2400 Tubes à vide (ancêtre du Transistor)
Effectue environs 5000 opérations/seconde

Le Colossus est des milliers de fois


plus rapide que le Harvard mark
I…
Comment est-ce possible?

13
Historique (la période WWII )
Quelques éléments de réponse:
le Harvard mark I est un ordinateur généraliste, alors que le
Colossus est un ordinateur spécialisé (une seule tache)

le Colossus est un des premiers super calculateurs

les tubes à vides sont beaucoup plus rapide que les relais
électromécaniques
l’industrie militaire a beaucoup plus d’avance sur l’industrie
civile à cause des moyens matériels et humains, surtout en
période de guerre.
14
L’ère de l’électronique
Ce n’est qu’après la fin de la seconde guerre mondiale
que
les ordinateurs entièrement électronique voient le jour.
L’utilisation des relais électromécaniques est
définitivement
abandonnée au profit des tubes à vide. 15
Historique (la période 1945-1955 )
Quelques réalisations pertinentes:
En 1946,
John vonEckert
Neumann , un mathématicien
et Mauchly construisent l’ENIAC
de génie (Electronic
qui a
Numerical Integrator and Computer)
participé
à la conception de l’ENIAC, entreprend de réaliser une
version
améliorée de l’ENIAC, l’IAS (Institute for Advanced Studies).
Ses
idées révolutionnèrent les ordinateurs et définiront les
architectures
16
de base des ordinateurs et des microprocesseurs du futur.
Historique (la période 1945-1955 )
Quelques avancées majeures proposées par von Neumann:

l’utilisation de commutateurs (ouverts et fermés) pour programmer


les ordinateurs (tache ardue) est abandonné pour une logique
binaire (0 et 1).

les programmes sont, dorénavant, représentés en binaire et sont


stockés dans la mémoire de l’ordinateur. De même, les données qui
étaient représentées par une arithmétique décimale dans l’ENIAC,
sont représentés en binaire.
Naissance de l’architecture de von
Neumann
17
Architecture de von Neumann
Dans cette architecture, l’ordinateur est composée:

d’une unité de calculs nommée unité arithmétique et logique


(UAL), en Anglais "arithmetic logic unit« (ALU)

d’une unité de contrôle

la mémoire (commune pour les données et pour le programme),

l’entrée et la sortie A N T
P ORT
I M
18
Architecture de von Neumann

Architecture de base de von Neumann


19
1 ère Définition du Microprocesseur

Dispositif qui intègre l’UAL et


l’unité de commande en son sein

L’intégration est apparue bien plus tard et donc


l’UAL et l’unité de commande sont restées
séparées
dans les ordinateurs jusqu’en 1971.
20
Historique (la période 1945-1955 )
1947:Invention du Transistor dans les Bell Labs

Bardeen, Shockley et Brattain, inventeurs du transistors


(lauréats du prix Nobel de physique en 1956)
21
Historique (la période 1945-1958 )
1947:Invention du Transistor dans les Bell Labs

Porte NAND Porte NOR


22
L’ère de la Microélectronique
En 1958, Robert Noyce, fondateur de Fairchild
Semiconductor
et Jack Kilby, ingénieur chez Texas Instrument, inventèrent,
chacun de son coté, quasi simultanément, le circuit intégré
(CI).
23
Historique (la période 1958-1971)
Période marquée par l’invention du circuit intégré

Le circuit intégré
permet
d’incorporer plusieurs
transistors dans une
même puce.

24
Historique (la période 1958-1971)
Avancées apportés par l’intégration:

des composants qui prennent moins de place

des composants qui consomment moins d’énergie

des vitesses d’exécution augmentées

des prix de plus en plus bas

25
L’invention du circuit intégré permettra une dizaine
L’ère des
d’année
Microprocesseurs
plus tard, plus précisément en 1971, à la compagnie
Intel,
fondée trois ans plutôt par Robert Noyce, Gordon Moore,
et
Andrew Grove, de développer le premier microprocesseur:
26
Historique (la période 1971-?)
Caractéristiques du 4004:
microprocesseur 4 bits (mots de 4 bits)
intègre 2300 transistors
atteint la vitesse de 740 kHz
En à peine
un25jeu
ans,
dele464004, dont les dimensions
instructions machine ne dépassent pas
quelques

centimètres, et dont le poids ne dépasse pas quelques dizaines de

grammes,

offrait des performances équivalentes à l’ordinateur ENIAC!!!


27
Historique (la période 1971-2015)
La loi Moore: le nombre de transistors par puce doublera chaque 2 ans

28
Historique (la période 2018-?)
L’après loi Moore:
Cette loi connaitra, surement, dans les années qui viennent, sa limite car

L’augmentation du taux d’intégration fait que la taille des transistors


se rapproche de plus en plus de la taille des molécules!
De plus, les vitesses d’horloge qui deviennent de plus en plus
grandes,
accentuent le problème
le développement de dissipation
technologique s’orientede la chaleur.
vers de nouveaux
matériaux
en remplacement des semi-conducteurs, ce qui permettra probablement
de dépasser les limites imposés par la physique du solide: les
nanotubes
par exemple ou les FinFet Transistors. 29
Conclusion
les microprocesseurs sont omniprésent dans notre vie quotidienne:
les smart phones, les tablettes, les fours micro-ondes, etc.
les voitures, les avions, le bateaux, etc.
et aujourdhui dans tous ce qui nous entoure dans ce
quiindispensable
Il est alors est communément
pourappelé « Internet
l’ingénieur of Things » et plus
d’aujourd’hui
particulièrement l’ingénieur du génie électrique d’assimiler le rôle,
le fonctionnement et l’architecture des microprocesseurs et de
maitriser les outils de développements des systèmes à
microprocesseurs. 30
Thank you
for your attention

31
Microprocesseurs
Définition et Classification des Microprocesseurs

Mourad Adnane
Département d’Èlectronique, Ècole Nationale Polytechnique 2020

1
Définitions
1. Le microprocesseur générique est un circuit intégré
qui
regroupe l’unité arithmétique et logique (UAL) et l’unité
de commande en son sein.
2. Le microprocesseur peut être assimilé à un ordinateur
intégré dans un même circuit, mais sans mémoire
centrale
ni de périphériques d’entrée et de sortie.
2
Définitions (suite)
Le microprocesseur est capable d’interpréter les instructions contenues
dans un programme, de les exécuter et de fournir le résultat.

L’ensemble des instructions qu’un μp peut interpréter (exécuter)


sont appelés jeu d’instructions

Le μp a besoin d’interagir avec d’autres composants se trouvant


dans sa périphérie, tel que la mémoire et des périphériques
d’entrée/ sortie
3
Limites de la définition
L’énorme progrès qu’à connu la microélectronique et les taux d’intégrations
exceptionnels atteint ces dernières années, ont fait que plusieurs composants
ont pu être intégrés dans le microprocesseur.

Par exemple, des microprocesseurs récents incluent plusieurs


mémoires caches.

Le taux d’intégration a atteint un tel niveau, qu’aujourd’hui un


ordinateur complet peut tenir dans une puce! Mieux que ça, des
systèmes multi-ordinateurs ou multi-processeurs sont intégrés
sur la même puce (System on Chip ‘SoC’); on a même des
réseaux implémentés sur puce (Network on Chip ‘NoC’) 4
Classification des μp
Á partir des définitions qu’on a données au microprocesseur et
des
applications désirées, on peut classer les microprocesseurs en
trois
principales catégories :

Microprocesseurs généralistes

Microprocesseurs spécialisés

Microcontrôleurs

5
Microprocesseurs généralistes
Caractéristiques:
Conforme à la définition générale (UAL+UC)

Sont à usage général

Exemple:
le CPU (Central Processing Unit) dans les
ordinateurs
sont des microprocesseurs généralistes.

6
Microprocesseurs spécialisés
Ces microprocesseurs incluent des composants
spécifiques
ou utilisent des architectures optimisées pour
pouvoir
réaliser des taches précises avec une grande
vitesse
(le DSPs
Les temps(Digital
réel peut être Processors)
Signal une des finalités).
en sont un exemple typique.

L’architecture des DSPs permet d’effectuer des opérations usuels


des algorithmes de traitement du signal (des boucles, une opération
sur plusieurs données à la fois, etc.). Leurs prix sont donc
supérieur
à ceux des processeurs généralistes.
7
Microcontrôleurs
c’est des processeurs généralistes qui incluent de la
mémoire, des périphériques d’entrée /sortie et peuvent
contenir d’autres composants. Exemple: dans la plupart
des
microcontrôleurs récents, il y a un CA/N

Se sont une sorte de petits ordinateurs destinés à des applications embarqués.


Leurs vitesses d’horloge sont beaucoup moins importantes que celles des
processeurs généralistes et spécialisés. Cependant, leurs bas coûts les ont rendus
très populaires et leur utilisation très répandue.

8
Conclusion
Dans ce cours nous allons essentiellement traiter les
microprocesseurs
généralistes dont les principes architecturaux ainsi que les
principes
de fonctionnement peuvent facilement être étendues aux
autres
catégories de processeurs. Pour le TP, on travaillera sur
des
Microcontrôleurs ARM (MBED).

9
Thank you
for your attention

10
Microprocesseurs
Architecture générale et blocs fonctionnels

Mourad Adnane
Département d’Èlectronique, Ècole Nationale Polytechnique 2020

1
Architecture générale

2
Définition du Bus
Le bus comporte N lignes et connecte plusieurs blocs entre eux. Il y a
plusieurs types de bus en ce qui concerne les microprocesseurs:

Le bus de données

Le bus d’adressage

Le bus de commande

3
Bus de données
Le bus de données sert à transférer les données entre le processeur et
la mémoire et les périphériques. La donnée peut être lue ou écrite ce
qui implique que ce bus est bidirectionnel.

La taille du bus de données est exprimée en bits. Cette taille


peut atteindre 128 bits. Cette taille conditionne la taille du mot
mémoire.

4
Le bus d’adresses sert à pointer une adresse mémoire

(adressage Bus d’adresses


mémoire). Cette adresse mémoire peut être l’emplacement de
la

prochaine instruction à exécuter; de la donnée à lire par le


processeur
ou de l’emplacement où il faut écrire une donnée. Par conséquent,
ce La taille N du bus détermine l’espace mémoire adressable:
N
M=2 . Par exemple:(du
bus est unidirectionnel N=16 nous donne
processeur 64K emplacements
à la mémoire).
mémoire et N=32 nous donne 4G emplacements mémoire.
5
Bus de commande
Le bus de commande ou de contrôle permet à des signaux de
commande (contrôle) de circuler entre le processeur, la mémoire et
les périphériques d’E/S. Il permet entre autre:

•De donner la direction pour le bus de données (écriture/lecture)


•De sélectionner les E/S à partir d’un périphérique
•D’acheminer les signaux d’interruptions

6
Architecture interne

7
Registres
Les registres sont des mémoires élémentaires (registres) dont
la
capacité mémoire est faible et la vitesse très grande. Ils sont
utilisés
dans le microprocesseur pour stocker des données, des adresses, l’
état
des opérations effectuées dans l’UAL, etc.
Il y a des registres communs pour tous les microprocesseurs et un
nombre de registres à usage ‘général’ qui dépend de chaque μp

8
Registres et blocs fonctionnels de l’UC
1. Registre PC
Le registre PC (Program Counter) ou compteur ordinal en français,
contient l’adresse mémoire de la prochaine instruction à exécuter.
Il est initialisé avec l’adresse de la première instruction du
programme.
Par la suite il s’incrémente après l’exécution de chaque instruction.
2. Registre d’instruction

Le registre d’instruction contient l’instruction en cours d’exécution.

9
Registres et blocs fonctionnels de l’UC
3. Le décodeur d’instruction

Le décodeur d’instruction sert tout simplement à décoder les


instructions du registre d’instruction.

4. Bloc de commande et de séquencèrent

Ce bloc génère tous les signaux de commande nécessaire pour


l’exécution des instructions. Il utilise pour cela un signal d’horloge
pour le séquencèrent et la synchronisation.

10
Registres et blocs fonctionnels de l’UC

5. Le registre d’adresse
Le registre d’adresse contient l’adresse de l’instruction suivante
ou l’adresse mémoire d’une donnée à lire ou un
emplacement
mémoire pour écrire une donnée. Il est donc utilisé pour pointer
vers l’adresse mémoire don le microprocesseur a besoin.

11
Registres et blocs fonctionnels de l’UT

Les accumulateurs sont des registres servant à stocker les opérandes


1. Accumulateur(s)
au
début d’une opération arithmétique et le résultat de l’opération à la
fin
de l’opération. Ce registre permet aussi de transférer des données
d’un
emplacement mémoire à un autre.

12
Registres de l’unité de traitement
2. L’UAL

L’UAL est un circuit qui réalise des opération arithmétiques et


logiques
qui sont à la base même de l’ordinateur (microprocesseur).

13
Registres de l’unité de traitement
Le registre d’état contient
3. Registre d’étatplusieurs bits qui indiquent chacun l’état
ou
le résultat d’une opération. Ces bits sont souvent appelés
Flags
(drapeaux). Ce registre a une importance capitale car il
différencie
un microprocesseur (ordinateur) du simple calculateur car ces
Flags
conditionnent le déroulement du programme. 14
Registres de l’unité de traitement
4. Registre de données
Ce registre sert d’interface entre le bus de données externe et le bus
de
données interne et de registre de stockage temporaire des données
circulant dans les deux sens (mémoire-μp et μp- mémoire)
5. Registres supplémentaires
Il peut exister un nombre de registres supplémentaires sur chaque μp
qui servent à réaliser des opérations sur des données (transférer des
données par exemple)
15
Fonctionnement de l’UT

16
L’horloge
L’horloge est l’élément qui donne la cadence des opérations. Sa
fréquence
détermine entre autres les performances d’un microprocesseur.
L’horloge
est un circuit électronique oscillateur. Souvent un quartz (externe) est
utilisé pour donner la cadence pour l’horloge (ex: une PLL).

17
Les signaux
Deux types de signaux:
Signaux d’état (entrant vers le bloc de commande et de
séquencement).
Ces signaux sont utilisés par le séquenceur pour produire la deuxième
catégorie de signaux, les signaux de commande (sortant du bloc de
commande et de séquencement vers les autres blocs).

Exemples: Les bits du registre d’état fournissent des signaux d’état.


Le signal read/write est un exemple de signal de commande.

18
Les signaux de commande
1. Read/write
Ce signal sert à indiquer le sens que prennent les données. Si les
données doivent être lues (c’est Read qui est activé). Si les données
doivent être écrites en mémoire (c’est write qui est activé).

D’autres signaux de commande sont utilisés par l’UC pour


exécuter les instructions, comme les signaux commandant l’UT

19
Exécution d’une instruction
1. Chargement
Ramener la prochaine instruction à exécuter depuis la mémoire et
la
charger dans le registre d’instructions
2. Modification du PC
Modification du PC (program counter) pour pointer la
prochaine
instruction
3. Décodage
Le décodeur d’instructions décode l’instruction qui se trouve dans le
registre d’instructions
20
Exécution d’une instruction
4. Emplacement des données
Déterminer l’emplacement mémoire des données sur lesquelles
s’effectue l’opération
5. Chargement des données
Charger les données nécessaires pour l’exécution de
l’instruction
dans le registre de données.
6. Exécution
Exécution de l’instruction

7. Retour à l’étape 1
21
Thank you
for your attention

22
Microprocesseurs
Systèmes à Microprocesseurs

Mourad Adnane
Département d’Èlectronique, Ècole Nationale Polytechnique 2020

1
Systèmes à Microprocesseurs
Définition

C’est des systèmes basés sur un cœur processeur et un ensemble


de périphériques (des ports d’entrées sorties) et des mémoires.

Exemple: L’ordinateur est un exemple type d’un système à µp

2
Systèmes à Microprocesseurs

3
Les mémoires
La mémoire ROM (Read Only Memory)

Les mémoires ROM (read only memory) sont des mémoires dites
mortes où l’on ne peut pas écrire. Ces mémoires sont écrite une fois
en usine et ne peuvent plus être effacées ou réécrite. Elles sont utilisées
pour stocker des données ou des programmes qui ne changent pas.

Exemple1: Le programme d’initialisation de l’ordinateur, le


Bios (Basic Input Output System) est contenu dans une ROM
Exemple2: Dans certains systèmes embarqués tel les voitures,
téléphones, jouets pour enfants utilisent des ROMs
4
Les mémoires
La mémoire RAM (Random Access Memory)

Les mémoires RAM (random access memory) sont des mémoires


dites volatiles. Ces mémoires peuvent être écrites ou lues. Elles sont
utilisées pour stocker des données ou des programmes momentanément
dès qu’elles ne sont plus alimentées, elles perdent leurs contenus.

Exemple: Les programmes utilisateurs sont stockés dans des


mémoires RAM.

5
Les périphériques

Les périphériques sont les appareils, cartes, dispositifs de saisie ou de


lecture, …, qui peuvent être contrôlés par le microprocesseur ou qui
peuvent êtres accédés par ce dernier pour lecture ou écriture à travers
l’unité d’entrée/sortie qui sert d’interface.

Exemples: claviers, souris, imprimantes, disque dur externe,


lecteur DVD, ports séries, ports parallèles, USB, etc.

6
Les périphériques
Fonctionnement

Les périphériques génèrent des signaux pour signaler leur présence,


pour se connecter ou signaler un paquet de données prêt pour lecture,
etc. Ces signaux sont appelés interruptions (ou demande
d’interruption) .

7
Les interruptions
Rôle

Les interruptions permettent au microprocesseur de communiquer


avec son environnement. Les interruptions permettent au µp d’être
multitâches car le processeur au lieu d’attendre qu’une donnée soit
prête en utilisant un programme d’attente (boucle), il peut s’occuper
d’autres taches et lorsque la donnée est prête une interruption survient.

8
Les interruptions
Types

1. Interruptions masquables: ces interruptions peuvent être ignorés par


le µp et exécutés à la fin du programme ou tache en cours d’exécution

2. Interruptions non masquables: ces interruptions ne peuvent être


ignorés par le µp et doivent êtres exécutés selon une hiérarchie. En effet,
les interruptions sont classées par priorité et un système de gestion des
priorité décide quelle interruption doit être exécutée avant l’autre.

9
Thank you
for your attention

10
Microprocesseurs
Exploitation

Mourad Adnane
Département d’Èlectronique, Ècole Nationale Polytechnique 2020

1
Modes d’adressage
Définition

Le mode d’adressage est la manière par laquelle le microprocesseur


accède aux données dans la mémoire.

Remarque1: le codage d’une instruction (nombre d’octets utilisés


entre autre) dépend du mode d’adressage. Le temps d’exécution d’une
instruction dépend aussi du mode d’adressage.

Remarque2: les nombreux modes d’adressages répondent à des


contraintes ou des utilisations différentes. Si on agit sur une constante
on utilise un mode d’adressage différent que si on agit sur des variables.
2
Adressage Immédiat
C’est le mode d’adressage le plus simple. L’opérande (donnée) est
contenu dans l’instruction. Le temps d’exécution d’une telle
instruction est évidemment très court.
Codage de l’instruction
Exemple de Code opération Opérande
syntaxe 1
N bits K bits
Exemple de Code opération Destination Opérande
syntaxe 2
N bits K bits
3
Adressage Immédiat
Exemples avec des instruction d’assembleur

Exemple 1 ADD #200

N bits K bits
Le contenu de l’accumulateur est additionné avec 200 et le résultat est
mis dans l’accumulateur

Exemple 2 MOV R2 #200

N bits K bits
La valeur 200 est transférée vers le registre R2
4
Adressage Immédiat
Utilisation

Le mode d’adressage immédiat est utilisé avec des constantes. Son


intérêt est d’économiser une étape qui est la lecture de la donnée en
mémoire, ce qui a pour effet un temps d’exécution court. Par contre
ce mode ne peut pas être utilisé avec des variables ni avec des
données dont la taille dépasse l’emplacement réservé à l’opérande.

5
Adressage Direct

Dans le mode d’adressage direct, l’instruction contient l’adresse de


l’opérande (donnée).

Codage de l’instruction

Exemple de Code opération Adresse de l’opérande


syntaxe
N bits K bits

6
Adressage Direct
Exemples avec des instruction d’assembleur

Exemple 1 ADD [0x200]

N bits K bits
Le contenu de l’accumulateur est additionné avec le contenu de
l’adresse 0x200

Exemple 2 MOV R2 [0x200]

N bits K bits
Le contenu de l’adresse 0x200 est transféré vers le registre R2
7
Adressage Direct
Utilisation

Le mode d’adressage direct est utilisé avec des variables dont les
adresses ne changent pas (l’emplacement ne change pas) mais
dont les valeurs changent au cours de l’exécution. Ce mode nécessite
plus de temps que le précédent pour son exécution mais permet de
travailler avec des variables.

8
Adressage par Registre
Le mode d’adressage par registre est semblable à l’adressage direct
sauf que les opérandes se trouvent dans des registres et non dans
des mémoires. Ce mode est très utilisé.
Codage de l’instruction
Exemple de Code opération Registre
syntaxe 1
N bits K bits
Exemple de Code opération Registre 1 Registre2
syntaxe 2
N bits K bits
9
Adressage par Registre
Exemples avec des instruction d’assembleur

Exemple 1 INC R0

N bits K bits

Le contenu du registre R0 est incrémenté.

Exemple 2 MOV R2 R0

N bits K bits
Le contenu du registre R0 est transféré vers le registre R2
10
Adressage par Registre
Utilisation

Le fait que l’accès aux registres est beaucoup plus rapide que l’accès
à la mémoire, ce mode d’adressage permet l’exécution d’instructions
plus vite que le mode d’adressage direct. Ce mode est aussi utilisé
dans le cas où une boucle de programme utilise une donnée souvent.
Ainsi, les programmes se trouvent exécutés plus rapidement.

11
Adressage Registre Indirect
Dans le mode d’adressage registre indirect, le registre ne contient
pas l’opérande mais l’adresse de cette dernière.
Codage de l’instruction
Exemple de Code opération Registre
syntaxe 1
N bits K bits
Exemple de Code opération Registre 1 Registre2
syntaxe 2
N bits K bits
Le registre contient l’adresse de l’opérande. Le symbole @ désigne
l’adressage indirect en assembleur.
12
Adressage Registre Indirect
Exemples avec des instruction d’assembleur

Exemple 1 ADD @R0

N bits K bits
L’opérande se trouvant dans l’adresse indiqué par R0 est ajouté au
contenu de l’accumulateur et le résultat est mis dans l’accumulateur.

Exemple 2 MOV R2 @R0

N bits K bits
Le contenu de l’adresse contenue dans R0 est transféré vers R2.
13
Adressage Registre Indirect
Utilisation

L’adressage registre indirect permet d’utiliser les mémoires internes


et externes. Un des avantages de ce mode d’adressage est qu’on peut
adresser une mémoire (pointer une mémoire) sans mettre l’adresse
dans l’instruction. Un autre avantage est qu’on peut utiliser différents
mots à chaque exécution de l’instruction. Cette technique est très utile
dans le cas des boucles.

14
Adressage Registre Indirect
Exemple (tiré du livre de Tanenbaum)
MOV R1,#0 ; accumulate the sum in R1, initially 0
MOV R2,#A ; R2 = address of the array A
MOV R3,#A+4096 ; R3 = address of the first word beyond A
LOOP: ADD R1,(R2) ; register indirect through R2 to get operand
ADD R2,#4 ; increment R2 by one word (4 bytes)
CMP R2,R3 ; are we done yet?
BLT LOOP ; if R2 < R3, we are not done, so continue

C’est un programme pour faire la somme des éléments d’un tableau


de données et mettre le résultat dans R1. (R2) est similaire à @R2.
15
Adressage Indexé
Dans ce mode d’adressage, l’emplacement mémoire de l’opérande
est indiqué par un décalage par rapport à un emplacement mémoire.
Codage de l’instruction
Exemple de Code opération Registre 1 Registre2 décalage
syntaxe
N bits K bits

L’adresse de l’opérande est calculée en additionnant la valeur du


décalage et la valeur de la mémoire (une des deux données se trouve
dans un registre et l’autre est une donnée immédiate). La destination
du résultat de l’opération est stocké dans le registre1.
16
Adressage Indexé
Exemples avec des instruction d’assembleur

Exemple 1
MOV R2, I(R1)

L’opérande se trouve à l’adresse: (contenu de R1)+la valeur de I

Exemple 2
AND R2,I(R1)

L’opérande se trouve à l’adresse: (contenu de R1)+la valeur de I

17
Adressage Indexé
Utilisation

L’adressage indexé permet d’utiliser des pages d’adresses où l’on


met des données. Pour y accéder on a pas à donner toute l’adresse, un
décalage par rapport à une adresse donnée est suffisant. Ce mode
d’adressage est particulièrement utile pour se déplacer à l’intérieur
d’une série (page) de donnée en incrémentant à chaque fois la valeur
du décalage.

18
Adressage Indexé
Exemple (tiré du livre de Tanenbaum)
MOV R1,#0 ; accumulate the OR in R1, initially 0
MOV R2,#0 ; R2 = index, i, of current product: A[i] AND B[i]
MOV R3,#4096 ; R3 = first index value not to use
LOOP: MOV R4,A(R2) ; R4 = A[i]
AND R4,B(R2) ; R4 = A[i] AND B[i]
OR R1,R4 ;OR all the Boolean products into R1
ADD R2,#4 ; i = i + 4 (step in units of 1 word = 4 bytes)
CMP R2,R3 ; are we done yet?
BLT LOOP ; if R2 < R3, we are not done, so continue

19
Adressage Indexé
Exemple (tiré du livre de Tanenbaum)

Ce programme vérifie si il y a au moins une paire de données (dans


les deux tableaux) qui ont un 1 dans la même position. Tout d’abord
l’opération logique ‘et’ est effectuée. Ensuite, l’opération logique ‘Ou’
est appliquée au résultat de chaque ligne avec celui de la ligne
précédente; si le résultat final est 0 alors il n’y a pas de paire de
données avec des bits non nuls à la même position.

20
Adressage Base Indexé
Dans ce mode d’adressage, l’emplacement mémoire de l’opérande
est indiqué par la somme d’une base (début d’adresse d’une page
mémoire contenu dans un registre) et d’index (décalage contenu
dans un registre) .
Codage de l’instruction
Exemple de Code opération Registre 1 Registre2 Registre3
syntaxe
N bits K bits
L’adresse de l’opérande est calculée en additionnant la valeur du
contenu du registre 2 et du contenu du registre 3. La destination du
résultat de l’opération est stocké dans le registre1.
21
Adressage Base Indexé
Exemples avec des instruction d’assembleur

Exemple 1
MOV R1, (R2+R3)

L’opérande se trouve à l’adresse: (contenu de R2)+(contenu de R3)

Exemple 2
AND R1, (R2+R3)

L’opérande se trouve à l’adresse: (contenu de R2)+(contenu de R3)

22
Adressage Base Indexé
Utilisation

À l’inverse de l’adressage indexé où l’adresse de base est codée dans


l’instruction; l’adressage base indexé permet de mettre l’adresse de
base dans un registre ce qui permet une liberté et une flexibilité dans
la programmation. Ce mode permet d’utiliser différents segments de
mémoire ce qui n’est pas le cas dans l’adressage indexé où le
segment mémoire est fixée par l’instruction durant la programmation.

23
Adressage Base Indexé
Exemple (tiré du livre de Tanenbaum)
MOV R1,#0 ; accumulate the OR in R1, initially 0
MOV R2,#0 ; R2 = index, i, of current product: A[i] AND B[i]
MOV R5,#A ; put the address of A in R5
MOV R6,#B ; put the address of B in R6
MOV R3,#4096 ; R3 = first index value not to use
LOOP: MOV R4, (R2+R5) ; R4 = A[i]
AND R4, (R2+R6) ; R4 = A[i] AND B[i]
OR R1,R4 ;OR all the Boolean products into R1
ADD R2,#4 ; i = i + 4 (step in units of 1 word = 4 bytes)
CMP R2,R3 ; are we done yet?
BLT LOOP ; if R2 < R3, we are not done, so continue
24
Autres modes d’adressages
Il y a une multitude de modes d’adressages. Mais en définitive ce qu’il
faut retenir est que chaque mode apporte une utilité particulière mais aussi
une complexité. Ce n’est pas nécessaire de tous les connaitre. Il faut
savoir que chaque microprocesseur a un nombre définit de modes
d’adressage. En pratique, il vaut mieux avoir un seul voir quelques modes
bien définis que d’avoir une multitude de modes qui compliquent la tâche
de décodage d’instructions.

25
Exemple d’adressage pré indexé d’ARM
Exemple 1 LDR R0, [Rn, #Offset]
L’adresse effective AE=Rn+Offset (ici Rn veut dire contenu du
registre de base Rn)

Exemple 2 LDR R0, [Rn, Rm]


L’adresse effective AE=Rn+Rm (ici Rn et Rm veut dire contenu du
registre Rn et contenu du registre Rm

Exemple 3 LDR R0, [Rn, Rm, LSL#2]


L’adresse effective AE=Rn+Rm décalé (ici Rn et Rm veut dire contenu
du registre Rn et contenu du registre Rm décalé)

26
Exemple d’adressage pré indexé d’ARM
Exercice

Calculer l’adresse effective dans chaque cas

Cas 1 [R5, #0x25] [R5, #0x25]


Cas 2 [R5, R2]
Cas 3 LDR R0, [R5, R2, LSL#2]
Cas 1: contenu de R5 est 0x00002345
Cas2: contenu de R2 est 0x00001000 et contenu de R5 est 0x00001542
Cas3: mêmes valeurs que pour le cas 2

27
Exemple d’adressage pré indexé d’ARM
Solution

Cas 1 EA = 0X000002345 + 0X25 = 0X0000236A

Cas 2 EA = 0X00001542 + 0X00001000 = 0X00002542

Cas 3 EA = R5 + R2*4=0X00001542+0X00004000=0X00005542

28
Format des Instructions
Définition

Une instruction est écrite sur N bits (32 bits dans le cas du LPC1768).
Elle contient un en-tête qu’on appelle opcode (operation code) qui
définit l’opération à effectuer. D’autres informations sont présentes
dans l’instruction et qui renseignent sur l’adresse de l’opérande, du
mode d’adressage, de la destination du résultat, etc.

29
Format des Instructions
Quelques formats possibles

Code opération

Code opération Adresse

Code opération Adresse 1 Adresse 2

Code opération Adresse 1 Adresse 2 Adresse 3

30
Format des Instructions
Taille des instructions

La taille des instructions peut être variable dans un microprocesseur. Il est vrai
qu’utiliser une taille fixe pour toutes les instructions parait plus facile à décoder
par le µp cependant cela veut dire que toutes les instructions sont codés comme
la plus longue instruction! Il est vrai aussi qu’une instruction petite prend
moins de place en mémoire et on pourrait penser qu’elle prend moins de temps
à être décodée. Cependant la complexité introduite par l’ utilisation de tailles
différentes pour les instructions augmente le temps de décodage d’où la nécessité
d’un compromis.

31
Format des Instructions
Nombre de bits alloués aux opérations et à l’adressage
On suppose qu’on a (N+K) bits pour coder une instruction. N bits pour
l’opcode et K bits pour l’adressage. Cela veut dire qu’on peut disposer
de 2N opérations différentes que le µp peut effectuer et de 2K mémoire
adressable. Si on change ça pour (N-1) bits pour l’opcode et (K+1) bits
pour l’adressage, on aura le double de mémoire adressable et la moitié
d’opérations différentes. Le choix du nombre de bits alloués à chaque
tache obéit à un compromis.
Code opération Adresse

N bits K bits 32
Format des Instructions
Exemple (tiré du livre de Tanenbaum)

On suppose qu’on a 16 bits alloués aux instructions. Une façon d’utiliser


ces 16 bits par un µp est donnée comme suit: 15 instructions à 3 adresses,
14 instructions à 2 adresses, 31 instructions à une adresse et 16
instructions sans adresses. Les graphiques explicatives sont donnés dans
ce qui suit.

33
Format des Instructions
Exemple (tiré du livre de Tanenbaum)

opcode 0000 xxxx yyyy zzzz


de 4 bits 0001 xxxx yyyy zzzz
0010 xxxx yyyy zzzz
. 15 instructions
. avec 3 adresses
.
sur 4 bits
1100 xxxx yyyy zzzz
1101 xxxx yyyy zzzz
1110 xxxx yyyy zzzz

34
Format des Instructions
Exemple (tiré du livre de Tanenbaum)

opcode 1111 0000 yyyy zzzz


de 8 bits 1111 0001 yyyy zzzz
1111 0010 yyyy zzzz
. 14 instructions
. avec 2 adresses
.
sur 4 bits
1111 1011 yyyy zzzz
1111 1100 yyyy zzzz
1111 1101 yyyy zzzz

35
Format des Instructions
Exemple (tiré du livre de Tanenbaum)
1111 1110 0000 zzzz
opcode 1111 1110 0001 zzzz
de 12 bits .
.
.

1111 1110 1110 zzzz 31 instructions


1111 1110 1111 zzzz avec 1 adresse
1111 1111 0000 zzzz sur 4 bits
1111 1111 0001 zzzz
.
.
.
1111 1111 1101 zzzz
1111 1111 1110 zzzz
36
Format des Instructions
Exemple (tiré du livre de Tanenbaum)

opcode 1111 1111 1111 0000


de 16 bits 1111 1111 1111 0001
1111 1111 1111 0010
. 16 instructions
. avec 0 adresses
.
1111 1111 1111 1101
1111 1111 1111 1110
1111 1111 1111 1111

37
Format des Instructions
Exemple2 (tiré du livre : ARM Assembly
Language with Hardware experiments)

31 28 27 26 25 24 21 20 19 16 15 12 11 0
Cond 0 0 I Op code S Rn RD Opérande2

1. Cond: détermine si l’instruction est conditionnelle ou inconditionnelle


2. I: si le bit I=0 alors l’opérande 2 est un registre; si le bit I=1, alors c’est une
donnée immédiate
3. Op code: détermine l’opération à effectuer (voir tableau )

38
Format des Instructions
Exemple2 (tiré du livre : ARM Assembly
Language with Hardware experiments)

Instruction Op code Instruction Op code


AND 0000 TST 1000
EOR 0001 TEQ 1001
SUB 0010 CMP 1010
RSB 0011 CMN 1011
ADD 0100 ORR 1100
ADC 0101 MOV 1101
SBC 0110 BIC 1110
RSC 0111 MVN 1111

39
Format des Instructions
Exemple2 (tiré du livre : ARM Assembly
Language with Hardware experiments)

4. S: si le bit S=0 alors on ne change pas les drapeaux (Flags) du Registre PSR
(registre d’état) si le bit S=1 c’est l’inverse
5. Rn: est le premier opérande; ça peut être un des 16 registre (R0 à R15)
6. Rd: est le registre de destination; ça peut être un des 16 registre (R0 à R15)
7. Opérande2: si I=0 alors l’opérande 2 est un registre et son format est: #

11 7 6 5 4 3 0
# Shift SH 0 Rm

40
Format des Instructions
Exemple2 (tiré du livre : ARM Assembly
Language with Hardware experiments)
8. #Shift: donne le nombre de fois que Rm doit être décalée
9. SH: détermine le type décalage (00: LSL décalage logique à gauche; 01: LSR
décalage logique à droite; 10: ASR décalage arithmétique à droite; 11: ROR
rotation à droite)
10. Rm: deuxième opérande
Remarque: Si le bit 4 de l’opérande 2 est égale à 1, alors le nombre de fois que
Rm doit etre décalée est dans un registre.
Si I=1, alors l’opérande 2 à le format suivant:
11 0
Valeur immédiate 0
41
Format des Instructions
Exercice

Convertir l’instruction suivante en code machine:

ADD R1, R2, R3, LSL #3


Remarque: pour toutes les instructions inconditionnelles Cond=1110

Solution: E0821183
Cond I Op code S Rn RD #shift SH Rm
1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 1

42
Jeu et catégories d’instructions
Définition

Le jeu d’instructions est l’ensemble des instructions qu’un µp peut


exécuter. Les PICs 16F84A, 16F628A, 16F88, 16F876A, 16F886 ont par
exemple un jeu d’instructions composé de 35 instructions seulement. Le
68000 de Motorola possède un jeu de 82 instructions.

43
Catégories d’instructions

Les instructions peuvent être catégorisés selon leurs emplois respectives.


Ces catégories sont grosso modo les mêmes pour chaque µp. Cependant,
des instructions spécifiques existent dans certains µp. Leur existence est
due à des considérations propre au constructeur ou au client.

44
Catégories d’instructions
1. Instructions de transfert de données

Ces instructions sont les plus basiques. Elles servent à transférer des
données d’un emplacement vers un autre. Exemples: LOAD pour charger
une donnée à partir d’un emplacement mémoire vers un registre; STORE
pour déplacer une donnée d’un registre vers la mémoire; et MOV pour
déplacer une donnée d’un registre vers un autre.

45
Catégories d’instructions
2. Instructions d’opérations arithmétiques

Tous les µp possèdent des instructions pour réaliser des opérations


arithmétiques. Ces opérations agissent dans l’UAL. Exemples: ADD pour
effectuer la somme, SUB pour effectuer la soustraction et DIV pour la
division.

46
Catégories d’instructions
2. Instructions d’opérations logiques

Tous les µp possèdent des instructions pour réaliser des opérations


logiques. Ces opérations agissent dans l’UAL. Exemples: AND pour
effectuer le ET logique, ORR pour effectuer le OU logique. Les
opérations logiques peuvent être utilisées pour extraire certains bits ou
caractères dans une donnée. Cette opération est appelée Masquage.
Exemple:
47
Catégories d’instructions
2. Instructions d’opérations logiques

AND R3, R1, R2 R1 contient A et R2 contient B et R3 le résultat C

1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 1 A
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B

0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C

Pour récupérer notre caractère de 8 bits nous avons besoin d’une autre instruction

48
Catégories d’instructions
2. Instructions d’opérations logiques

LSR R4, R3, #16 Décalage à droite de 16 bits, le résultat est dans R4

0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 R3

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 R4

49
Catégories d’instructions
3. Instructions de décalage

Tous les µp possèdent des instructions pour réaliser des décalages.


Ces opérations agissent dans l’UAL. Exemples: LSL pour effectuer un
décalage à gauche, LSR pou un décalage à droite, ASR pour un décalage
arithmétique à droite, et enfin ROR pou une rotation des données vers la
droite.

50
Catégories d’instructions
4. Instructions conditionnelles

Certaines instructions ont besoin qu’une condition soit vérifiée pour être
exécutées. Généralement ces instructions utilisent les Flags du registre
d’état comme information préalable à l’exécution.

51
Catégories d’instructions
5. Instructions d’E/S

C’est des instructions qui concerne les périphériques d’entrée/sortie. Trois


schémas d’instructions sont utilisés dans les processeurs:
1. E/S programmé avec mode occupé (busy waiting)
2. E/S commandé à l’aide d’interruptions
3. E/S utilisant l’accès direct à la mémoire (DMA)

52
Catégories d’instructions
5. Instructions d’E/S
5.1. E/S programmé avec mode occupé (busy waiting)

Dans ce schémas, l’instruction sélectionne un périphérique et le


Processeur exécute une série d’instructions préétablies. Le problème
avec ce genre de schémas est le temps d’attente (mode occupé) du
microprocesseur, ce qui entraine une lenteur d’exécution.

53
Catégories d’instructions

5. Instructions d’E/S
5.2. E/S commandé à l’aide d’interruptions

Dans ce schémas, les périphériques génèrent des interruptions pour


signaler que la tache qui leur a été dévolue est terminée (donnée prête à
être lue par exemple).

54
Catégories d’instructions
5. Instructions d’E/S
5.3. E/S utilisant l’accès direct à la mémoire (DMA)

Les interruptions permettent d’améliorer les performances des µp en


matière de temps d’exécution. Cependant, cette solution n’est pas parfaite
car le nombre élevé de périphériques et d’interruptions rend la tache de
gestion des interruptions fastidieuse. Une solution consiste à utiliser le
schéma d’E/S gérés par des programmes préétablis avec un circuit qui
s’occupe exclusivement de cette tache, la DMA (Direct Memory Access)
Le gestionnaire d’interruptions et la DMA sont détaillés plus loin dans le cours
55
Thank you
for your attention

56
Microprocesseurs
La mémoire

Mourad Adnane
Département d’Èlectronique, Ècole Nationale Polytechnique 2020

1
Introduction

La mémoire est un élément central dans les systèmes à µp. Les


différents types de mémoire, leurs vitesses, le moyen d’y accéder,
leur hiérarchie, leurs couts, leurs tailles, leur gestion, …, font
parties des sujets de recherches et développement les plus
importants et pointus. Rien d’étonnant vu l’impact économique
qu’engendre ce secteur.

2
Rappels

La mémoire est un dispositif électronique qui est bâtit par des


portes logiques, elles-mêmes bâtit par des transistors. Les
exemples les plus notables c’est les bascules latchs, flip-flop,
etc. Un registre 8 bits peut être formé de 8 bascules latchs D.
Les mémoires les plus basiques sont: les mémoires vives et
les mémoires mortes.

3
Les mémoires Vives

Les mémoires vives sont des mémoires dont le contenu


s’efface dès qu’elles ne sont plus alimentés. Ces mémoires
offrent une grande vitesse d’accès et s’utilisent par le µp
lors du traitement. L’exemple le plus connu c’est les RAM
(voir cours 4).

4
Les mémoires Mortes

Les mémoires mortes n’ont pas besoin d’être alimentés


pour garder leurs données. Ces mémoires sont utilisées pour
stocker des données ou programmes dont le processeur a
besoin pour fonctionner (tel le BIOS pour un ordinateur).
L’exemple type est la ROM (voir cours 4).

5
Hiérarchie Mémoires
Plus on descend plus le prix de
l’unité mémoire diminue

Plus on monte plus l’accès


mémoire est rapide

Figure adaptée du livre de Tanenbaum


6
Types de mémoires
Static RAM (SRAM)

Les SRAM retiennent les données tant qu’elles sont alimentées.


Leurs temps d’accès est de quelques nanosecondes; elle sont utilisées
comme mémoire cache (niveau 2 de la hiérarchie). Elles sont
construites à bases de circuits équivalent à des flip-flop. La taille de
ces mémoires va jusqu’à quelques Kilo octets.

7
Types de mémoires
Dynamic RAM (DRAM)

Les DRAM ne sont pas construites autour de flip-flop. C’est plutôt des
cellules avec chacune un transistor et un minuscule condensateur. Les
condensateurs se chargent et se déchargent symbolisant les 1 et 0 logiques
parce que les charges électriques ont tendance à diminuer (fuite ‘leakage’
); ces mémoires doivent être rafraichies périodiquement. Une logique
externe est utilisée à ces fins. Cela induit une plus grande complexité que
dans le cas des SRAM. Cependant, elle ont une grande capacité mémoire.

8
Types de mémoires
DRAM vs. SRAM

Les DRAM n’ont besoin que d’un transistor et d’un condensateur pour 1
bit mémoire alors que la meilleure des SRAM a besoin de 6 transistors
pour 1 bit mémoire. C’est pour ça que la plupart des mémoires sont
construites à base de DRAMs. La capacité mémoire des DRAMs peut
atteindre des Giga octets.

9
Types de mémoires
Synchronous DRAM (SDRAM)

Les SDRAM sont des mémoires hybrides combinant les SRAM et les
DRAM. Cette mémoire a besoin de l’horloge pour se synchroniser. Ce
type de mémoire a besoin de l’horloge (front montant ou descendant
ou les deux dans le cas des DDR) pour utiliser les données à son entrée
(lire) ou écrire sur le bus. Les DDR SDRAM sont des mémoires SDRAM
(voir la technologie DDR) utilisées comme mémoire principale dans les
Ordinateurs (c’est ce qu’on appelle communément la RAM).
10
Types de mémoires
Programmable ROM (PROM)

Ces des mémoires qu’on peut programmer une seule fois. Ces mémoires
contiennent une sorte de minuscule fusibles organisés en matrice. Ces
fusibles sont détruit à l’aide d’une haute tension appliquée à une pin du
circuit. Préalablement on aurait choisit la ligne et la colonne du fusible.

11
Types de mémoires
Erasable PROM (EPROM)

Ces des mémoires PROM qu’on peut reprogrammer. Elle sont effacées à
l’aide d’une exposition à une lumière ultraviolet.
Erasable EPROM (EEPROM)
Ces des mémoires EPROM qu’on peut reprogrammer électriquement. La
EEPROM a l’avantage de pouvoir être programmée in situ. Les EEPROM
n’ont pas vocation à remplacer les DRAM et SRAM car elle est beaucoup
moins rapide que ces dernières et a moins de capacité mémoire. Les EEPROM
sont utilisés dans des environnements où on a besoin de non volatilité.
12
Types de mémoires
Mémoires Flash

Ces des mémoires EEPROM avec une plus grande capacité mémoire et
une très grande vitesse. C’est le genre de mémoire qu’on trouve dans les
cartes de développements tel le LPC 1768. Elles contiennent le programme
qu’on charge à travers notre compilateur. Elles peuvent atteindre plusieurs
dizaines de Giga Octets.

13
Mémoire Cache
Définition

C’est une mémoire dont la vitesse d’accès est grande (vient juste derrière
les registres) et qui se trouve à proximité ou à l’intérieur même du
microprocesseur. Elle sert à enregistrer une partie du programme et données
en cours d’utilisation afin d’éviter des accès vers les mémoires externes
qui est très coûteux en temps.

14
Organisation de la Mémoire

Une mémoire est divisée en unités atomique d’une taille de n bits. Chaque
unité atomique est adressable. Il parait donc clair que l’organisation de la
mémoire influe sur l’adressage. On voit dans ce qui suit l’exemple de deux
mémoires de même taille (4M bits) mais qui sont organisés différemment.

15
Organisation de la Mémoire
Exemple tiré du livre de Tanenbaum

16
Organisation de la Mémoire
Mémoire 512K*8bits:
Afin d’adresser 512K d’emplacements mémoires il faut 19 lignes d’adresses
(19 bits). Pour écrire ou lire une donnée de la mémoire on a besoin de 8 bits
d’où les D0 à D7. Trois signaux sont nécessaires pour le fonctionnement de
cette mémoire à savoir le CS (chip select) qui sert à sélectionner la mémoire,
le WE (write enable) indique que les données sont écrites et non lues (ça
sert à indiquer la direction pour les données), et enfin le OE (output enable)
lorsqu’il n’est pas utilisé déconnecte les sorties par rapport au circuit.

17
Organisation de la Mémoire
Mémoire 4096K*1bits:
4096K d’emplacements mémoires sont organisés en matrices de 2048*2048
ce qui implique un autre type d’adressage (ligne, colonne). D’abord la ligne
est sélectionnée à l’aide de 11 bits et du signal RAS (row address strobe).
Par la suite la colonne est sélectionnée avec 11 bits toujours et le signal
CAS (column address strobe). Cela veut dire qu’il faut deux cycles pour
adresser une case mémoire! Mais par contre il faut moins de pins pour ce
genre de mémoire. Ce type de sélection s’appelle sélection linéaire.

18
Organisation de la Mémoire

Les mémoires larges sont souvent utilisés dans une forme matricielle n*n.
Cependant l’unité atomique n’est plus un bit mais 4, 8 ou 16 bits. Pour des
raisons de normalisation plusieurs constructeurs ont optés pour une unité
atomique de 8 bits (1 octet).

19
Unité de Gestion de la
Mémoire (MMU)
Dans les microprocesseurs actuels l’utilisation de mémoires virtuelles sert
à augmenter la capacité mémoire réelle (physique) de la machine. En réalité,
le programmeur écrit son programme comme si son environnement cible
contient une mémoire très large voire infinie. Or ce n’est pas le cas. L’idée
d’utiliser de la mémoire virtuelle permet de mieux utiliser les capacités
mémoire physiques dont nous disposons.

20
Unité de Gestion de la
Mémoire (MMU)
La pagination

La pagination consiste à diviser le programme en pages et faire de même


pour la mémoire physique. Dans chaque page une capacité mémoire finie
est allouée. L’opération nommée « memory mapping » sert à faire
correspondre une page mémoire virtuelle à une plage de mémoire réelle
(physique). Au fait, le programmeur voit la mémoire linéaire et continue.
Or les adresses auxquelles il a accès ne sont pas les adresses physiques.

21
Unité de Gestion de la
Mémoire (MMU)
La pagination
Le fait que ce ne sont pas toutes les pages du programme qui sont mappées
vers la mémoire physique augmente la capacité mémoire et ce en ne
mappant que les parties du programme en cours d’exécution par exemple. Il
faut savoir que toutes les pages du programme sont transférées en mémoire
de masse (disque dur). Si le MMU ne trouve pas en mémoire vive (RAM)
l’information souhaitée il appelle la page ou segment (contient plusieurs
pages) qui contient l’information en mémoire de masse.
22
Unité de Gestion de la
Mémoire (MMU)
La pagination: principe

23
En utilisant une mémoire virtuelle, si une adresse mémoire
d’un programme est émise sans qu’elle ne soit présente dans
la mémoire physique , le μp enregistre les données présente
dans la mémoire physique dans le disque dur et ramène la
page des adresses virtuelles vers la mémoire principale.
Ainsi l’utilisation de l’espace mémoire réel est optimisée.

Exemple tiré du livre de Tanenbaum


donnant le mapping d’une mémoire
virtuelle vers une mémoire physique.

24
Unité de Gestion de la
Mémoire (MMU)
La segmentation
Le segmentation permet de partager la mémoire en segments distincts de
tailles différentes (à l’inverse de la pagination). D’ailleurs, un segment contient
plusieurs pages. Cela dans le but de séparer les données du programme entre
autre. La segmentation peut être appliquée à la mémoire physique comme elle
peut être utilisée pour une mémoire virtuelle. L’adressage d’une adresse
donnée se fait en utilisant l’adressage base indexé en plus du numéro du
segment.

25
Unité de Gestion de la
Mémoire (MMU)
Utilité

1. Protéger les zones mémoires sensibles de l’écriture.

2. Traduire l’adresse logique en adresse physique

3. Offre des espaces d’adressages indépendants pour chaque processus

4. L’arbitrage du Bus (garantit qu’à un instant donnée il n’y ait qu’un maitre du Bus)

26
Adressage des E/S
Une partie des adresses servent à pointer la mémoire (une des mémoires se
trouvant sur le bus d’adresses) . Le reste sert à adresser les périphériques
d’entrée sortie. On dit bien adresser car les E/S sont adressés de la même
manière qu’une mémoire. Aussi, il faut savoir qu’une partie des bits servent
à sélectionner le périphérique à adresser (ex: 0xxxxxxH pour la ROM pour
le programme de démarrage). C’est les bits qui servent à actionner le chip
select (CS) du circuit à adresser. Un circuit basé sur une logique
combinatoire sert de décodeur d’adresses.

27
Polling/mode interruptible
Polling

Polling veut dire littéralement scruter ou sonder. Cette opération est l’attente
du processeur d’un événement (une donné qui arrive sur un périphérique par
exemple). Au fait, le μp interroge les périphériques périodiquement pour
savoir si une donnée est prête ou si un périphérique est prêt par exemple.
Cette technique a le défaut de faire perdre du temps au μp qui pourrait faire
d’autres taches au lieu de scruter les différents périphériques.

28
Polling/mode interruptible
Mode Interruptible

En mode interruptible le périphérique indique par l’émission d’un signal que


les données sont prêtes à être lues ou écrites, qu’il est prêt à être utilisé, ou
qu’un appareil vient de se connecter. Le μp reçoit ledit signal et agit selon un
schéma préétabli en exécutant une série d’instructions stockées en mémoire.
On appelle gestionnaire d’interruption le programme stockée en mémoire
qui est exécuté lors de cette interruption.

29
Thank you
for your attention

30
Microprocesseurs
Circuits d’Interface Remarquables

Mourad Adnane
Département d’Èlectronique, Ècole Nationale Polytechnique 2020

1
Le Timer

Un Timer est un dispositif qui fait un comptage. On s’en sert pour


synchroniser des processus qu’exécute le microprocesseur. Les
Timers se trouvent à la périphérie des microprocesseurs et à
l’intérieur des Microcontrôleurs. On peut trouver 2, 3, 4 voire plus
De Timers dans un même microcontrôleur.

2
Le Timer
Fonctionnement

Le programmeur indique la valeur maximale que le Timer peut


compter; arrivé à ce chiffre, le compteur déborde (overflow) et
génère une interruption. Cette interruption est utilisée par le μp
pour réaliser une action ou exécuter un programme.

3
Le Timer
Exemple

On fixe la valeur maximale que peut compter un Timer à 1000 et


sachant que la vitesse d’horloge du μp est de 100 MHz. On utilise
l’interruption générée par le débordement du Timer pour changer la
valeur d’une pin d’un périphérique configurée en sortie. On obtient:

4
Les circuit Debug

Les circuits debugger sont des circuit qui permettent de déboguer


les programmes sur le circuit lui-même (microprocesseur). Leur
intérêt réside dans le fait que les systèmes embarqués n’offrent pas
d’interface pour le programmeur pour pouvoir vérifier le bon
fonctionnement d’un programme. Ces circuits peuvent alors servir
à debugger le programme sur le hardware directement.

5
Les circuit Debug
Exemple: le JTAG

Le JTAG est l’acronyme de Joint Test Action Group qui est le


groupe de travail qui a développé la norme IEEE 1149.1 pour le
test de cartes numériques. Un circuit JTAG doit être sur la carte
afin d’être utilisé comme interface avec l’ordinateur lors d’un
debug. Ce test permet de vérifier les connexions, l’horloge, les
mémoires et le fonctionnement du programme.

6
Les mémoires Tampon

Lors de la communication avec les périphériques d’E/S, il arrive


que la vitesse d’arrivée des données sur le port et la vitesse de
lecture de ces données soit très différentes (et vice versa). Les
mémoires tampons servent à garder les données momentanément.
Bien sur, leurs capacités sont réduites et si un flux important de
données survient, il risque de planter la transmission de données.

7
Le DMA
Définition

Le circuit DMA (Direct Memory Access) permet à certains


périphériques d’accéder à la mémoire (la RAM) sans passer par le
μp. Cela permet d’éviter le traitement d’interruption par le μp et la
perte de temps et de ressources: Dans quels cas est-ce possible ?

8
Le DMA
Utilisation

Certains périphériques n’ont pas besoin que la donnée à lire dans la


mémoire soit traitée par le μp car ils peuvent la traiter eux-mêmes.
C’est le cas pour la carte son et certaines cartes vidéo. Pour que
cette opération soit possible, il faut que ces périphériques aient
des canaux qui leur sont dédiés dans le DMA. Il faut juste noter que
Le DMA devient maitre du BUS lors de ces opérations. Alors, ou
Réside l’intérêt d’utiliser un tel dispositif?
9
Le DMA
Utilisation

Au fait, certains microprocesseurs peuvent encore exécuter des


instructions pendant que le DMA contrôle le BUS. Cela à cause de la
mémoire cache (les instructions et données à utiliser peuvent être
présentes dans le cache) et du canal Pipeline. Il faut savoir aussi que
le transfert de données volumineuse se fait plus rapidement avec le
DMA qu’en utilisant les modes Polling ou interruptible. Enfin, le μp
doit attendre lorsque la donnée dont il a besoin se trouve en mémoire.

10
Le DMA
Utilisation

Aussi, afin d’éviter le problème du polling et du mode interruptible


certains transferts peuvent être initialisés par le μp et par la suite le
DMA génère les adresses et directions des données (écriture ou lecture
); lorsque le transfert est terminée le DMA génère une interruption.

11
Le DMA
Utilités
1. Augmenter les capacités multitâches du microprocesseur (système)

2. Accélérer la transmission de données vers ou depuis la mémoire (la RAM)

Remarques:
1. il se peut qu’il y ait un conflit entre le μp et le DMA (lors de l’écriture d’une
donnée en mémoire par exemple). Dans ce cas la priorité est donnée au DMA car
le microprocesseur a les ressources pour garder sa donnée.
2. Les mémoires tampons sont utilisés par le DMA pour des transferts de données
à partir du disque dur par exemple.

12
Le gestionnaire d’interruptions
Définition

Le gestionnaire d’interruptions est un circuit qui sert à contrôler


les instructions en: définissant les priorités; en déterminant l’origine
de l’interruption; en déterminant l’adresse des programmes à
exécuter.

13
Le gestionnaire d’interruptions
Fonctionnement

Le gestionnaire d’interruptions contient plusieurs registres qui sont


utilisés pour renseigner quelle interruption a été admise et qui est en
attente du signal End of Interrupt pour être prise en charge; ou sur
quelle interruption est en attente d’être admise ou quelle interruption
est masquée. Le gestionnaire d’interruption présente à sa sortie une
ligne (voire plus) d’interruptions vers le μp.

14
Le Chien de garde
Définition et utilité

C’est un circuit électronique qui est utilisé pour agir au cas où le μp


ou ordinateur se plante (est bloqué). Au fait le watchdog (en anglais)
mesure le temps d’exécution de chaque tache et déclenche une alarme
(ou procédure) si le temps d’exécution dépasse une valeur maximale
initiée par lui. Ce circuit sert à réinitialiser (redémarrer) le circuit qui
a planté. Le watchdog peut être un programme informatique.

15
Thank you
for your attention

16
Microprocesseurs
Optimisation de l’architecture de Von Neumann

Mourad Adnane
Département d’Èlectronique, Ècole Nationale Polytechnique 2020

1
Rappels
Architecture de Harvard

L’architecture Harvard a été conçue à l’université de Harvard (le


Mark I, 1944). La particularité de cette architecture est que la mémoire
des données est séparée de celle du programme. Il y a donc deux Bus
distincts. Cette architecture permet d’accéder aux données et au
programme simultanément ce qui accélère l’exécution des instructions.
Cependant la structure des μp Harvard se trouve être beaucoup plus
complexe que celle de Von Neumann ce qui favorisa le développement
de cette dernière architecture.
2
Rappels
Principales caractéristiques de l’architecture de Von Neumann de base

1. Mémoire commune pour les données et pour le programme

2. Un nombre important d’instructions complexes

3. Le temps d’exécution des instructions varie (1 cycle d’horloge à 6 cycles d’horloge)

Nécessité d’introduire des modifications pour augmenter les performances


des microprocesseurs.

3
Optimisation de l’architecture
de Von Neumann
Nécessité

Jusqu’aux années 1980 les mémoires fonctionnaient toujours plus lentement


que les μp. Les concepteurs développaient alors des instructions complexes:
Pourquoi ? Car, pensaient-ils que de plus petites instructions basiques (au
lieu de l’instruction complexe) provoqueraient plus d’accès mémoire (lent),
ce qui n’est pas faux et qui causeraient un ralentissement dans l’exécution
des programmes.

4
Optimisation de l’architecture
de Von Neumann
Nécessité

Il faut noter aussi que les instructions complexes étaient plus proche des
langages haut niveau (C, Java, etc.): exemple l’opération de division . Cela
a induit à un grand nombre d’instructions complexes vu que pour chaque
nouvelle tache à effectuer il fallait ajouter une nouvelle instruction. Cela a
résulté sur ce qu’on appelle aujourd'hui les architectures CISC (Complex
Instruction Set Computer) .

5
Architecture CISC
Principales caractéristiques de l’architecture CISC

1. Un nombre important d’instructions (instructions complexes)

2. La durée d’exécution des instructions est différent pour chaque instruction

3. Format variable pour les instructions

4. Nécessite un décodeur d’instructions complexe (micro code)

Les architectures CISC étaient quasiment les seules sur le marché jusqu’à
l’avènement des architecture RISC

6
Optimisation de l’architecture
de Von Neumann
Solution Possibles
1. Parmi les solutions possibles, il y a le développement de μp avec une
architecture Harvard. Cependant cette solution est onéreuse . Certains μp
ont quand même adoptés cette solution (les DSP, les PICs et certains ARMs)

2. Modifier l’architecture de Von Neumann afin d’augmenter ses


performances. La principale modification tient au fait que la majorité des
instructions (~80%) des processeurs CISC étaient rarement utilisées et juste
une poignée d’instructions étaient utilisées (~20%) .

Naissance de l’architecture RISC (Reduced Instruction Set Computer)

7
Architecture RISC
Principales caractéristiques de l’architecture RISC
1. Jeu d’instruction réduit (instructions de base)

2. Format fixe pour toute les instructions

3. Le temps d’exécution des instructions fixe (1 cycle d’horloge): en moyenne

4. Décodeur d’instructions câblé

L’avènement de l’architecture RISC introduit un nouveau concept pour les


μp qui est le Pipeline.

8
RISC vs. CISC
Tableau adapté du cours de Dr. Omar Cheikhrouhou

Architecture RISC Architecture CISC


Instructions simples à un cycle Instructions complexes à plusieurs cycles

Instructions à format fixe Instructions à format variable

Décodeur câblé (rapide) Décodeur microcode (lent)

Plusieurs registres Peu de registres

Seules LOAD et STORE pour accéder à la Toutes les instructions accèdent à la


mémoire mémoire
Peu de modes d’adressage Beaucoup de modes d’adressage

Compilateur complexe Compilateur simple

9
RISC vs. CISC

À la fin des années 1980 et début 1990 le débat était à son summum
concernant laquelle des deux architectures était la meilleure. En réalité, les
architectures RISC ont apportés un nouvel élan à l’industrie et l’as boosté
Au fil des années les performances des deux architectures se rapprochèrent
surtout que certains processeurs CISC incluent des cœurs processeurs RISC!
Le choix d’une architecture par rapport à une autre se fait selon l’application.

10
Notion de Pipeline
Avec l’introduction des processeurs RISC, on l’a vu, la durée d’une
instruction est d’un cycle d’horloge. Mais est-ce que c’est vraiment le
cas? Au fait, non. On dira même, évidemment non. Car, comme on l’a
déjà vu, l’exécution d’une instruction suit un cheminement constitué de
plusieurs étapes, nécessaires, dont voici les principales:

1. Recherche de l’instruction (en anglais Fetch)

2. Décoder l’instruction (en anglais Decode)

3. Exécuter l’instruction (en anglais) Execute)


11
Notion de Pipeline

Chacune de ces étapes est exécutée en un cycle d’horloge (dans le cas des μp RISC),
alors comment peut-on dire que la durée des instruction dans les μp RISC est d’un
cycle d’horloge, alors que c’est 3 dans ce cas?

La réponse réside dans l’architecture pipeline. Le fait que chacune des


étape précédemment décrites est le même pour toutes les instructions
RISC et que chacune d’entre-elles ne dure qu’un cycle d’horloge, le
principe d’architecture Pipeline a pu être énoncé. L’application de cette
architecture permet d’atteindre pratiquement 1 instruction/cycle de H.
12
Notion de Pipeline
Définition

Les étapes d’exécution d’une instruction définissent les étages d’un


pipeline. Chaque étage peut fonctionner en parallèle de l’autre, ce qui
fait qu’à un certain moment toutes les étapes correspondant à l’exécution
d’une instruction donnée sont traités. Cette architecture permet d’atteindre
Et de vérifier le taux d’exécution d’une instruction/cycle d’horloge.

Exemple par analogie: fabrication du pain par le boulanger.

13
Notion de Pipeline
Analogie: Exemple de la fabrication du pain

On prend un exemple simplifié où la fabrication du pain se divise en 4


Étapes: 1.Le pétrissage; 2. Laisser reposer la pate (la levure la fait gonfler
); 3. Division et façonnement; 4. La cuisson. Supposant maintenant que le
Boulanger travaille séquentiellement, i.e., il ne passe à la prochaine étape
qu’à la fin de l’étape en cours d’exécution. Supposant aussi, pour raison
De simplicité que la durée de chaque étape est de 30 mn. La durée totale
Pour fabriquer une fournée de pain est de 30*4=120mn.
14
Notion de Pipeline
Analogie: Exemple de la fabrication du pain

Supposant maintenant que le Boulanger travaille en parallèle et utilise


l’architecture pipeline. Dans ce cas, le pipeline aura une profondeur de 4
étages (celles des étapes) et se présentera comme indiquée par la figure
du slide suivant.

15
Notion de Pipeline
Analogie: Exemple de la fabrication du pain

16
Notion de Pipeline
Analogie: Exemple de la fabrication du pain

Dans l’exemple de la fabrication du pain, on voit bien que la première


fournée de pain ne sort qu’après 4 cycles. Mais on remarque aussi qu’à
partir du quatrième cycle tous les étages du pipeline sont pleins, i.e., les 4
étapes de fabrication du pain sont réalisées en même temps. D’ailleurs, à
partir du quatrième cycle, une fournée de pain sort du four chaque cycle,
en d’autres termes, 1 fournée de pain /cycle. Si on étend ce principe à N
fournée de pain (N>>1) le temps moyen de fabrication d’une fournée de
pain sera de T=30mn=120mn/4.
17
Notion de Pipeline
Analogie: Exemple de la fabrication du pain

Il faut remarquer aussi que pour réaliser un pipeline à N étages (dans notre
exemple 4), il nous faut 4 systèmes (personnes et/ou machines) pour que
ça puisse fonctionner en parallèle. Il est évident que si le Boulanger est
tous seul et sans aucune machine il ne pourra pas réaliser les 4 étapes du
pipeline en même temps ( d’où l’expression être au four et au moulin). Si
par exemple le boulanger possède une machine à pétrir (un pétrin) et
un four et sachant que l’étape où le pain est laissé pour gonfler ne
nécessite pas de traitement; le pipeline peut fonctionner.
18
Notion de Pipeline
Exemple d’un pipeline à 4 étages

Dans le cas des microprocesseurs plusieurs étages sont possibles (il y a


même des microprocesseurs avec des profondeurs de pipe de plus de 20
étages (cas du pentium 4). Dans ce qui suit on donne l’exemple d’un
pipeline à 4 étages (profondeur de 4 étages): 1. Rechercher l’instruction
(Fetch), 2. Décoder l’instruction (Decode), 3. Executer l’instruction (
Execute); 4. Ecrire les résultats (Write).

19
Notion de Pipeline
Exemple d’un pipeline à 4 étages

20
Notion de Pipeline
Exemple d’un pipeline à 4 étages

De même que pour l’exemple de la fabrication du pain, l’exemple donné


pour un microprocesseur avec une architecture à N étages a besoin
d’avoir les ressources matérielles pour réaliser les N opérations que le
pipeline contient simultanément. En d’autres termes, chaque opération
du pipeline est exécuté par un composant ou constituant du μp.

21
Architecture Pipeline
Problèmes:

Quelques problèmes apparaissent avec les microprocesseurs ayant un


pipeline. On énumère les plus importants:

1. Dépendance de données

2. Dépendance de contrôle

2. Dépendance structurelle

22
Architecture Pipeline
Problèmes: 1. La dépendance de données

C’est le cas où deux instructions qui sont dans le pipeline ont besoin de lire
ou d’écrire dans les mêmes registres ou adresses mémoire. Parfois, une
instruction a besoin d’une donnée qui est le résultat d’une autre instruction. Si
l’ordre des lectures/écritures n’est pas respecté, il y aura des erreurs.

23
Architecture Pipeline
Problèmes: 2. La dépendance de contrôle

C’est le cas où un branchement s’effectue (interruption, exception, etc.). Le


problème réside dans le fait que l’adresse mémoire de branchement ne sera
connue qu’après l’étage de décodage. De ce fait, d’autres instructions vont
entrer dans le pipeline. Ces instructions ne devraient pas être chargées car
ça doit être les instructions correspondant à l’interruption ou exception qui
doivent être chargées d’où une erreur.

24
Architecture Pipeline
Problèmes: 3. La dépendance Structurelle

C’est le cas où deux instructions ont besoins d’utiliser une même ressource
en même temps. Il y aura donc conflit sur quelle instruction utilisera la
ressource en premier. Ce genre de problèmes peut provoquer le blocage du
pipeline. Une solution à ce genre de problèmes consiste à dupliquer la
ressource.

25
Thank you
for your attention

26
Microprocesseurs
Virgule fixe, virgule flottante

Mourad Adnane
Département d’Èlectronique, Ècole Nationale Polytechnique 2020

1
Introduction
Problème de la virgule

Le microprocesseur (en particulier l’UAL) traite des nombres


rationnels d’où la nécessité de traiter le problème de la virgule. En
réalité le problème réside dans la précision des calculs. Il ne faut
pas oublier que la capacité du microprocesseur est limité et il y
aura forcément des résultats arrondis. Il y aura aussi une limite
des nombres qu’on peut représenter avec un nombres N de bits.
Ces deux aspects sont opposés et un compromis doit être trouvé.
2
Virgule Fixe
Dans cette représentation, un nombre est représenté par un signe,
une valeur et la position de la virgule (fixe pour tous les nombres).
Dans ce genre de représentation, les plus petits nombres et en
particulier ceux inférieurs à 1 n’aurons pas assez de chiffres
significatifs; une autre représentation est nécessaire pour des
calculs plus précis. Exemple: écrire -0.382 dans un système avec
1 bit signe, 5 bits pour la partie entière et 2 bits pour la partie
fractionnelle.
3
Virgule Fixe
Après la virgule, en représentation binaire on multiple par, 2-n avec n la position du bit
par rapport à la virgule (pour le premier bit après la virgule, n=1)

1 0 0 0 0 0, 0 1 -1*(0*0.5+1*0.25)=-0.25

Avec seulement 2 bits pour la partie fractionnelle on perd beaucoup


en précision pour les petits nombres, surtout ceux inférieurs à 1. On
est tenté de dire pourquoi on n’ajoute pas plus de bits pour la partie
fractionnelle. Reprenons l’exemple avec 3 bits après la virgule et
4 bits pour la partie entière. On aura:
4
Virgule Fixe
1 0 0 0 0, 0 1 1 -1*(0*0.5+1*0.25+1*0.125)=-0.375

Avec 2 bits pour la partie fractionnelle on obtient une meilleure


précision pour les plus petits nombres cependant on perd en ce qui
concerne la représentation des grand nombres. En effet, avec 4 bits
pour la partie entière on peut représenter les nombres allant de
-1111.111 à 1111,111 (-15.875 à 15.875). Dans le premier cas on
pouvait aller de -11111,11 à 11111,11 (-31.75 à 31.75).
5
Virgule Flottante
Nécessité
Afin de régler le problème de la précision des petits nombres, d’une
part, et le problème de pouvoir représenter de grands nombres
d’autre part, il a fallu introduire le principe de la virgule flottante.
La position de la virgule n’est pas fixe et donc sa position doit être
déterminée à l’aide de quelques bits. Il est clair, d’ailleurs, qu’une
UAL classique ne peut pas prendre en charge cette représentation. À
partir de là, on peut dire qu’il y a deux types de microprocesseurs à
virgule fixe (simple) et virgule flottante (plus complexe)
6
Virgule Flottante
Exemple
Les nombres sont représentés par un bit signe, un exposant (n bits)
et une mantisse (m bits). Exemple: 12.53125 en binaire peut s’écrire
comme 1100,10001. La première étape est de normaliser ce nombre
1100,10001= (24)*0.110010001. Le signe du nombre est positif
alors le premier bit sera égal à 0. L’exposant ici est 4, en binaire
ça s’écrit comme 100. La mantisse est le nombre après la virgule:
110010001. Maintenant, si on dit que le nombre s’écrit sur 32
bits où on a 1 bit pour le signe, 8 bits pour l’exposant et 23
7
Virgule Flottante
Exemple (suite)

bits pour la mantisse, on a alors:


10000010011001000100000000000000 est la représentation en
format virgule. Cela nous permet d’introduire la norme IEEE 754
pour l’écriture des nombres flottants sur 32 bits (simple précision)
et sur 64 bits (double précision).

8
Virgule Flottante
La norme IEEE 754

Simple précision (sur 32 bits)

Signe Exposant Pseudo Mantisse


1 bit 8 bits 23 bits

Double précision (sur 64 bits)

Signe Exposant Pseudo Mantisse


1 bit 11 bits 52 bits

9
Virgule Flottante
La norme IEEE 754

1. Le bit signe est soit 1 pour les nombres négatifs, soit 0 pour les
nombres positifs.
2. L’exposant est la somme de la puissance en 2 plus le chiffre 127.
En réalité 8 bits peuvent aller de 0 à 255 pour la puissance de 2.
Afin de pouvoir utiliser cette puissance dans les deux sens, i.e., vers
les plus grands nombres comme vers les plus petits nombres. Ainsi,
de 0 à 127 c’est les puissances négatives de 2 et de 128 à 255 se
sont les puissances positives.
10
Virgule Flottante
La norme IEEE 754

3. Pour ce qui est de la pseudo mantisse, les opérations suivantes sont


à effectuer: a) la mantisse est normalisée; b) le bit de poids fort est
laissé avant la virgule; c) on code le nombre en IEE 754 avec les bits
après la virgule (le bit 1 est dit caché).
Exemple: écrire -123,25 en simple précision. On a le bit signe=1, en
suite 123,25 s’écrit en binaire comme 1111011, 01. Par la suite on
normalise et tire la pseudo mantisse: 1.11101101* 26 . Enfin, 6+127=
133 et en binaire c’est 10000101. On obtient donc:
11
Virgule Flottante
La norme IEEE 754

Signe Exposant Pseudo Mantisse


1 10000101 11101101000000000000000

En hexadécimal le nombre s’écrit: 0xC2F68000


Exemple2: trouver la valeur en décimal du nombre 0xC17A0000

12
Virgule Flottante
La norme IEEE 754

1. 0xC17A0000 s’écrit en binaire: 1 10000010 11110100000000000000000

2. Le premier bit est 1 donc c’est un nombre négatif.

3. 10000010 en décimal est égal à 130; 130-127=3 d’où l’exposant est 3

4. La pseudo mantisse est 0.111101 d’où on a 1.111101* 23=1111.101=15,625

Le résultat est donc: -15.625

13
Virgule Flottante
Multiplication et addition

Il est nécessaire de respecter des étapes précises lors d’une addition ou


d’une multiplication pour ne pas avoir d’erreurs de calculs.

Addition
On met les deux nombres au même exposant , additionner les mantisses et ensuite
normaliser.

Multiplication

On additionne les exposants et on multiplie les mantisses et on normalise à la fin

14
Virgule Flottante
Unité de calcul en virgule flottante

Certains processeurs possèdent une unité pour les calculs en virgule


flottantes. Cette unité est appelée « Floating Point Unit » la FPU.
Cette unité permet de faire des calculs plus précis.

15
Thank you
for your attention

16

Vous aimerez peut-être aussi