Vous êtes sur la page 1sur 27

7.

Mémoire morte
Elle ne permet que des opérations de lecture (ROM –Read Only Memory-).

C’une mémoire informatique non volatile dont le contenu est fixé lors de sa programmation, qui pouvait
être lue plusieurs fois par l'utilisateur, mais ne pouvait plus être modifiée

immuables
Les ROM sont programmées par leurs fabricants pour contenir des informations

qui ne doivent pas être perdues


lorsque l'appareil, qui les contient,
n'est plus alimenté en électricité.

telles que:

. les informations nécessaires au démarrage d’un ordinateur (BIOS, instructions de


démarrage, microcode

 des tables de constantes ou des tables de facteurs de conversion ;

 Elle fait aussi partie des microprogrammes présents dans les ordinateurs et la plupart des appareils
électroniques (smartphone, baladeur et autres lecteurs de CD/DVD) mais aussi la plupart des appareils
programmables (TV, réveil, machine à laver, lave vaisselle, etc.).
7. Mémoire morte

Historique: Carte IBM à 80 colonnes

Le modèle le plus courant de cartes perforées, breveté par IBM en 1928, était la carte
dite à 80 colonnes.

Il s'agit d'une feuille de bristol mince de forme rectangulaire, dont un coin était tronqué, où les caractères
alphanumériques (BCD, EBCDIC ou ASCII) étaient traduits par des perforations rectangulaires (au nombre
de 1, 2 ou 3 par caractère) disposées en colonnes parallèles à la largeur (80 colonnes) et sur douze lignes
parallèles à la longueur.

Les cartes étaient perforées par des opératrices spécialisées.

Les cartes étaient susceptibles d'être triées sur des machines appelées trieuses et interclasseuses.

Les machines mécanographiques ont utilisé ces cartes jusqu'au remplacement des dernières de ces machines par
des ordinateurs vers 1970.

Les ordinateurs ont été équipés d'unités périphériques capables de lire et de perforer ces cartes jusqu'au début
des années 1980.
7. Mémoire morte
Selon la possibilité de les programmer et de les effacer, on a plusieurs types de mémoires mortes:

ROM (Read Only Memory) dont le contenu est défini lors de la fabrication.

PROM "Programmable ROM":

Mémoire morte programmable par l'utilisateur et de façon irréversible, en raison du moyen de


stockage, des données (Elles sont stockées par des fusibles).

Peut être programmée à l'aide d'un graveur de PROM. Une fois écrite, il est impossible d'en
modifier le contenu.

EPROM "Erasable PROM":

Même que la PROM avec possibilité de l'effacer plusieurs fois: La première EPROM
fabriquée par INTEL (1971)
Une fois effacée, l'EPROM peut être reprogrammée.

UVPROM « Ultra Violet PROM":

Elles sont effaçables en les mettant dans une chambre à ultraviolet.

On efface ces mémoires en les laissant 10 à 20 minutes sous des rayons ultraviolets.
Le composant possède une petite fenêtre qui permet le passage des UV.
7. Mémoire morte
EPROM "Erasable PROM"

EEPROM « Electrically EPROM":

elles sont effaçables électriquement donc sans manipulations physiques 


ne nécessitent pas d’être extraites de l'appareil pour être reprogrammées..

Le principal type de mémoire morte avec les mémoires


SD, USB, Compact Flash et disques SSD.

Flash EPROM

La Flash EPROM plus souvent appelée mémoire Flash est un modèle de


mémoire effaçable électriquement.

Les opérations d'effacement et d'écriture sont plus rapides qu'avec les


anciennes EEPROM. C'est ce qui justifie l'appellation "Flash".

Cette mémoire, comme les autres ROM, conserve les données même quand elle
n'est plus sous tension. Ce qui en fait le composant mémoire amovible idéal pour
les appareils photos numériques, les GSM, les PDA et l'informatique embarquée.

La caractéristique essentielle de toutes ces "mémoires mortes" n'est donc pas qu'elles peuvent uniquement
être lues mais plutôt qu'elles ne s'effacent pas quand l'alimentation est coupée.
ROM vs. PROM 7. Mémoire morte
ROM

Le principe de fonctionnement d'une ROM est relativement simple. Cette mémoire contient une matrice de diodes.

L'adresse du mot à lire agit sur un décodeur qui dans le schéma ci-dessous est représenté symboliquement par un
commutateur à quatre positions.

Ce schéma représente donc une PROM de 4 octets.

Le code en sortie de la mémoire est une combinaison de bits à 1 et à 0.

Les niveaux '1' sont fournis au travers de résistances électriques reliées à la tension d'alimentation du circuit.

Par endroits, des diodes forcent les bits de la ligne sélectionnée vers une tension qui correspond au niveau logique 0.
7. Mémoire morte
ROM
7. Mémoire morte

PROM

Le principe de fonctionnement d'une PROM est fort similaire à celui d'une ROM.

Dans une PROM vierge, les diodes sont en série avec de petits fusibles.

La programmation se fait en brûlant les fusibles pour les positions des bits devant être mis à 1.

Cette opération est irréversible.


7. Mémoire morte
Les mémoires Flash

La mémoire flash a été mise au point en 1980 par le Pr Fujio


Masuoka employé de Toshiba.

L'un de ses collègues (Shoji Ariizumi), l’a appelé Flash parceque son lecture/écriture était très rapide
(comme le Flash d’un appareil photo),

En 1984, cette nouvelle technologie est dévoilée à l'International Electron Devices Meeting (IEDM)
de San Francisco.

En 1967, Dawon Kahng et Simon Sze conçoivent le MOSFET à


grille flottante (FGMOS), qui, selon eux, pourrait être utilisé pour la
mémoire morte reprogrammable (EPROM).
7. Mémoire morte
Les mémoires Flash

L’isolant sous la grille est beaucoup plus épais, car il contient une deuxième grille appelée Grille flottante,

La Grille flottante est séparée de la grille de dessus appelée Grille de contrôle par une couche épaisse
appelée Barrière,

La Grille flottante est séparée du substrat en dessous par une fine couche d’isolant appelée Tunnel.

Les isolants (les différentes épaisseurs d’oxydes) encapsulant la grille flottante ne doivent donc pas laisser
passer les charges électriques.

Dans la structure classique d’une mémoire non volatile à grille flottante, pour que l’état du point mémoire soit
considéré comme non volatile, il est nécessaire que cet état de déséquilibre puisse perdurer :

 la charge ne doit pas s’échapper de la grille flottante lorsque la structure n’est plus polarisée.
7. Mémoire morte
Les mémoires Flash

Durant Les phases de lecture/écriture du transistor, le transport de charges se fait par un processus intimement
quantique : l’effet tunnel. C’est pourquoi cet oxyde fin est parfois nommé "oxyde tunnel".

En mécanique classique, la matière est considérée comme un corps liquide ou solide.

En mécanique quantique, au niveau des petites particules (électrons), la matière est considérée comme une onde
 L’électron peut traverser un isolant, d’où l’effet tunnel,

La zone de l’effet tunnel se trouve au dessous de la grille flottante,


7. Mémoire morte
Les mémoires Flash

Quelque soit l’état de la FG, le transistor se


comporte de façon classique:

Sans alimentation de la grille de commande (<vt1) pas de


canal entre drain et source  circuit ouvert = 1

Si alimentation de la grille de commande (>vt2), alors il y a


un canal entre drain et source  circuit fermé= 1

L’effet tunnel possède un rôle essentiel et cependant dual : bloquer le transport de charges quand la
cellule est programmée dans un état logique et assurer le transport de charges lors des phases de
programmation.

Ceci se fait par un jeu de polarisation, qui permet de faire transiter les charges électriques depuis le substrat
(ou le drain) vers la grille flottante (qui est en métal et contient des électrons libres), via l’oxyde fin.

Si on applique un courant entre les deux seuils (de +3 v à


+5 v) :
si le courant passe alors la grille flottante est déchargée
 Etat 1

si le courant ne passe pas alors la grille flottante est chargée


 Etat 0
7. Mémoire morte
Les mémoires Flash

Pour obtenir un état de déséquilibre, il faut


injecter ou retirer des charges dans la grille flottante
dans un processus (on parle d’opération d’écriture
ou d’effacement) qui soit reproductible et stable.

Si on applique une alimentation négative (-10v à -20 v) 


commande négative, la FG se décharge (Ecriture du 1 logique)

Si on applique une alimentation positive (+10v à +20 v) 


commande positive, la FG se recharge (Ecriture du 0 logique)
8. Les mémoires assiciatives

Avec les mémoires informatiques standards (RAM (SRAM ou DRAM) ou ROM) le demandeur ou l'application
utilisatrice fournit une adresse mémoire et la mémoire renvoie la donnée stockée à cette adresse,

Les mémoires associatives ont un fonctionnement totalement opposé aux mémoires adressables normales :

au lieu d'envoyer l'adresse pour accéder à la donnée, on envoie la donnée pour récupérer son adresse.

On les appelle aussi des mémoires adressables par contenu, ou encore Content-adressed Memory (CAM) en anglais.

A quoi cela peut-il bien servir de récupérer l'adresse d'une donnée ?

La réponse est que les mémoires associatives ont été conçues pour répondre à une problématique assez connue des
programmeurs :

Chercher une donnée dans un ensemble.


8. Les mémoires assiciatives

Généralement, les données manipulées par un programme sont regroupées dans des structures de données
organisées : tableaux, listes, graphes, sets, tables de hachage, arbres, etc.

Et il arrive fréquemment que l'on recherche une donnée bien précise dedans.

Certaines structures de données sont conçues pour accélérer cette recherche (les tableaux associatifs –Clefs/Valeurs-), ce
qui donne des gains de performance bienvenus, mais au prix d'une complexité de programmation non-négligeable.

Les mémoires associatives sont une solution matérielle alternative bien plus rapide.

Le processeur envoie la donnée recherchée à la mémoire associative, et celle-ci répond avec son adresse en quelques
cycles d'horloge de la mémoire.

Les mémoires associatives dépassent rarement quelques mébioctets et nous n'avons pas encore de mémoire
associative capable de mémoriser un gibioctet de mémoire.

Leur faible capacité fait qu'elles sont utilisées dans certaines applications bien précises, où les structures de
données sont petites.

La contrainte de la taille des données fait que ces situations sont très rares.
8. Les mémoires assiciatives

L'interface des mémoires associatives

Une mémoire associative prend en entrée une donnée et renvoie son adresse.

Le bus de donnée est donc accessible en lecture/écriture, comme sur une mémoire normale.

Par contre, son bus d'adresse est accessible en lecture et en écriture, c'est une entrée/sortie.

L'usage du bus d'adresse comme entrée est similaire à celui d'une mémoire normale :

il faut bien écrire des données dans la mémoire associative, ce qui demande de l'adresser comme une mémoire normale.

Par contre, le fonctionnement normal de la mémoire associative, à savoir récupérer l'adresse d'une donnée,
demande d'utiliser le bus d'adresse comme une sortie, de lire l'adresse dessus.
8. Les mémoires assiciatives

Principe de fonctionnement d'une mémoire associative

Lorsque l'on recherche une donnée dans une mémoire CAM, il se peut que la donnée demandée ne soit
pas présente en mémoire.

La mémoire CAM doit donc préciser si elle a trouvé la donnée recherchée avec un signal dédié.

Un autre problème survient quand la donnée est présente en plusieurs exemplaires en mémoire :

la mémoire renvoie alors le premier exemplaire rencontré (celui dont l'adresse est la plus petite).

D'autres mémoires renvoient aussi les autres exemplaires, qui sont envoyées une par une au processeur.

Ceci ne vaut que pour le port de lecture de la mémoire.


8. Les mémoires assiciatives

Les mémoires associatives ont généralement un port d'écriture, qui fonctionne comme pour une mémoire normale.

Sur ce port, on envoie l'adresse et la donnée à écrire, en même temps ou l'une après l'autre, comme pour une
mémoire RAM.

Le port d'écriture est géré comme pour une mémoire RAM : la mémoire associative contient un décodeur d'adresse,
connecté aux cellules mémoires, et tout ce qu'il faut pour fabriquer une mémoire RAM normale, excepté que le port
de lecture est retiré.

Cela fait partie des raisons pour lesquelles les mémoires associatives sont plus chères et ont une capacité moindre :
elles contiennent plus de circuits à capacité égale.

On doit ajouter les circuits qui rendent la mémoire associative, en plus des circuits d'une RAM quasi-normale
pour le port d'écriture.
8. Les mémoires assiciatives

La microarchitecture des mémoires associatives:

Si on omet tout ce qui a rapport au port d'écriture, l'intérieur d'une mémoire associative est organisée autour de deux
fonctions :

1. vérifier la présence d'une donnée dans chaque case mémoire  effectuer une comparaison

2. déterminer l'adresse d'une case mémoire sélectionnée.

La donnée à rechercher dans la mémoire est envoyée à toutes les cases mémoires simultanément
et toutes les comparaisons sont effectuées en parallèle.

Plan mémoire d'une mémoire associative.


8. Les mémoires assiciatives

Une fois la case mémoire qui contient la donnée identifiée, il faut déduire son adresse.

Le problème qui est posé est l'exact inverse de celui qu'on trouve dans une mémoire adressable :
on n'a pas l'adresse, mais les signaux sont là.

La traduction va donc devoir se faire par un circuit assez semblable au décodeur : l'encodeur.

Dans le cas où la donnée est présente en plusieurs exemplaires dans la mémoire, la solution la plus simple est
d'en sélectionner un seul, généralement celui qui a l'adresse la plus petite (ou la plus grande).

Pour cela, l'encodeur doit subir quelques modifications et devenir un encodeur à priorité.

Intérieur d'une mémoire associative.


8. Les mémoires assiciatives

Exemples d’utilisation:

Elles sont normalement utilisées en supplément d'une mémoire RAM principale.

Il arrive plus rarement que la mémoire associative soit utilisée comme mémoire principale.

Mais cette situation est assez rare car les mémoires associatives ont souvent une faible capacité.

1/ Les routeurs

Un cas d'utilisation basique est celui des routeurs, des équipements réseaux qui servent d'intermédiaire de transmission.

Chaque routeur contient une table CAM et une table de routage, qui sont souvent implémentées avec des mémoires
associatives.
8. Les mémoires assiciatives
Exemples d’utilisation:

2/ Les MMU « Memory Management Unit »

Mémoire physique (RAM) est une mémoire coûteuse.


Mémoire secondaire (disques, mémoire étendue, ...) peu coûteuse.  Utiliser la mémoire secondaire
"comme" mémoire RAM.
Programmes gourmands en mémoire et qui ne "tiennent pas"
toujours en RAM.

Idée générale:

Il s'agit de conserver en mémoire une "partie" des programmes en cours d'exécution.

Si un programme "A" veut s'exécuter alors qu'il n'y a plus de place en mémoire, un "bout" d'un autre programme
est "viré" en mémoire secondaire et remplacé par un "bout" de "A".

La mémoire physique est découpée en blocs de taille fixe, appelés case (en anglais frame).

Par ailleurs, la mémoire linéaire des processus, encore appelée mémoire virtuelle, est elle-même découpée en
blocs de taille fixe, appelés page.

La taille d'une page correspond à la taille d'une case.


8. Les mémoires assiciatives
Exemples d’utilisation:

2/ MMU « Memory Management Unit »

Chaque page peut alors être placée dans une case quelconque.

Le mécanisme de pagination du matériel assure la traduction des adresses de mémoire virtuelle en une adresse de
mémoire physique, de façon à retrouver la contiguïté de cette mémoire virtuelle.

Ce mécanisme doit associer à chaque numéro de page virtuelle le numéro de case réelle qui contient cette page, si
elle existe.
Lorsque le processeur traduit une adresse virtuelle, il en isole le
numéro de page virtuelle qu'il utilise comme déplacement dans
cette table des pages pour en trouver l'entrée correspondante.

Si l'indicateur de présence est positionné, il contrôle la validité


de l'accès vis à vis des indicateurs de protection.

Si l'accès est accepté, il concatène le numéro de case au


déplacement virtuel dans la page pour obtenir l'adresse en
mémoire physique de l'emplacement recherché.

Pour éviter l'accès mémoire supplémentaire à la table des


pages, une mémoire associative contient les entrées de la
table correspondant aux derniers accès.
9. Hiérarchie de mémoires
Une mémoire est un dispositif capable d'enregistrer, de conserver et de restituer des informations.

On distingue 5 types de mémoire:

Coût
registre

cache
« antémémoire »

Mémoire centrale

Mémoire intermédiaire entre la mémoire


Mémoire d'appui
centrale et les mémoires auxiliaires.

Mémoire permanente: disque dur

Mémoire optique Mémoire magnétique


Mémoire de masse (auxiliaire):
Capacité
mémoire périphérique, utilisée pour le
Temps d’accès
stockage permanent des informations.

(CD, DVD, BluRay...) Enregistreur-lecteur de bande magnétique

Quand on s'éloigne du processeur vers les mémoires auxiliaires:

le temps d'accès augmente la capacité augmente le coût par bit diminue


10. Unité Arithmétique et Logique (ALU) = Arithmetic and Logic Unit (UAL)

Principal organe de traitement de l’information dans le processeur

L’UAL est un élément essentiel du processeur, et il est présent à la fois dans l'architecture de von Neumann et l'architecture de Harvard.

Von Neumann a proposé le concept de l’UAL en 1945 alors qu'il développait les rudiments de l'informatique EDVAC.

L’UAL est composée d’un ensemble de circuits combinatoires majoritairement de type arithmétique.

Elle possède:

Séquenceur
Deux entrées de données sur n bits Processor Status Word
« PSW »

Registres
Une sortie correspondant au résultat sur n bits

Une entrée de commande qui sélectionne l’opération à effectuer (addition, multiplication, décalage …)

Une sortie correspondant au registre d’état ou Processeur Status Word -PSW (Drapeaux ou FLAGS)
positionnés par l’opération (dépassement de capacité, division par zéro, …)

L’UAL s’alimente, entre autres, des différents registres du processeur quelle met à jour.
10. Unité Arithmétique et Logique (ALU) = Arithmetic and Logic Unit (UAL)

L’UAL peut être:

Elementaire:

Les UAL élémentaires exécutent des calculs sur des nombres entiers,

Les opérations arithmétiques : addition, soustraction, changement


Elles peuvent effectuer les opérations communes suivantes: de signe, etc.
Les opérations logiques : compléments à un, à deux, et, ou, ou-
exclusif, non, non-et, etc.
Les comparaisons : test d'égalité, supérieur, inférieur, et leur
équivalents « ou égal ».

Eventuellement, les décalages et les rotations.


Spécialisée:

Certaines UAL sont spécialisées dans la manipulation des nombres à virgule flottante, en simple ou double précision.

On les appelle Unités de calcul en virgule flottante (UVF, en anglais floating-point unit, FPU).

Typiquement, ces unités savent accomplir les opérations arithmétiques (additions, soustractions, multiplications, divisions, comparaisons).

Certaines UAL, le plus souvent de la classe des FPUs, notamment celles des superordinateurs, sont susceptibles d'offrir des fonctions
avancées (inverse 1/x, racine carrée, logarithmes, fonctions transcendantes - sin x, cos x, …-, opération vectorielle - produit scalaire, vectoriel,
…- …).

Les processeurs modernes font appel à plusieurs UAL, au moins deux :

Une située dans le chemin de contrôle pour incrémenter le compteur ordinal (de 1, 2, 4 ou 8 typiquement).

Une autre dans le chemin de données pour traiter l’information.


11. Le processeur Intel 8086
Le processeur Intel 8086, appelé aussi iAPX 86, est le premier microprocesseur de la famille 80x86 fabriqué par Intel.

Il fut lancé en 1978.


Le 8086 est un processeur 16 bits.

Le 8086 possède une interface externe de 40 pins.

Il fonctionne en deux modes:

Min mode pour les processeurs singuliers Max mode si le processeur travaille avec un
co-processeur 8087 ou 8089.

Il dispose de 14 registres 16 bits, répartis en 04 catégories:

Les registres de segment:

CS (Code Segment):
Contient l'adresse du segment de la mémoire où se trouvent les instructions du ppm.
DS (Data segment): Contient l'adresse du segment de la mémoire contenant les données définies dans le prgm.
SS (Stack Segment): Donne l'adresse de début de la pile
ES (Extra Segment): Contient l'adresse d'un segment supplémentaire pouvant recevoir des données.

Les registres de travail:

AX ou Acc (Accumulateur):
Il est utilisé dans les opérations arithmétiques et d’E/S.
BX (Base Register): Il est utilisé dans l'adressage des données dans la mémoire.
CX (Counter Register): Il sert de compteur de boucle.
DX (Data Register): C’est un registre de données utilisé dans les opérations arithmétiques.

Les registres d’index:

SI (Source Index): Il est associé au DS, et est utilisé lors des opérations sur des chaînes de caractères.
DI (Destination Index): Il est associé au DS ou ES et est utilisé lors des opérations sur des chaînes de caractères.
BP (Base Pointer): Il est associé au SS, pour accéder aux données de la pile lors des appels de sous programmes.
Il est associé au SS pour indiquer le dernier élément de la pile.
SP (Stack Pointer):
Les registres d'état et de contrôle:
IP (Instruction Pointer) ou CO: Il est associé au CS pour indiquer la prochaine instruction à exécuter.
FLAGs (Registre des indicateurs): surveillent le résultat des opérations effectuées par le processeur.

Les processeurs 8086 et 8088 possèdent un bus d'adresse de 20 bits

==> Accès à 220 o = 1 Mo de mémoire et chaque case mémoire sera adressée moyennant 5 chiffres hexadécimaux.

Le bus d'adresse est de 20 bits alors que la taille des registres internes d'adresse est de 16 bits

==> le 8086/8088 possède un additionneur interne qui:

Ajoute à une adresse générée par le programme le numéro du segment qui est contenu dans un
registre de segmentation, transmet le résultat comme adresse effective vers l’extérieur

==> Adressephysique = (Segment * 16) + offset.

Avec le 80286 le bus d'adresse est passé à 24 bits et l'espace d'adressage à 16 Mo.

La difficulté de conversion de l’adresse des programmes en adresses physiques a persisté jusqu'à ce que l'architecture 80386
introduise des registres plus larges (32 bits).

Vous aimerez peut-être aussi