Vous êtes sur la page 1sur 10

TD organisation mmoire

Le processeur et la mmoire

Soit un processeur connecter 4 botiers mmoire. Chaque botier est organis en 220 octets ( 1 Mga octet ). Voir gure 1.

A0 -A23
AccsMem

R/W
20 fils adresses Type accs 8/16/32
Long0 Long1

CS

Mmoire Vive

D24-D31 D16-D23 D8 -D15 D0 -D7

RAM

R/W

8 fils donnes

F IG . 1 Description du processeur et des botiers RAM

Le processeur a un bus de donnes de 32 bits et un bus dadresses de 24 bits. Le processeur peut vouloir crire/lire diffrents types de donnes (un octet, deux octets, quatres octets) en un cycle dhorloge. Nous supposons ici que la convention de ce processeur est big endian.

Accs des donnes des mots de 4 octets

Nous supposons dans un premier temps que le processeur ne peut accder qu des mots de 4 octets (instructions assembleur ldr et str du ARM). 1

1. Comment connecter la RAM pour accder quatre octets en un cycle ? 2. Dessiner le processeur et les 4 botiers de RAM ainsi que leurs connexions.
AccsMem C/S

R/W D0 -D7
A 4X+3

D8 -D15
B Processeur 4X+2

D16 -D23
C 4X+1

D24 -D31
D 4X+0

A2 -A23
X

F IG . 2 Accs quatre octets en un cycle Comme illustr dans la gure 2, en envoyant X sur les bits de poids fort du bus dadresses, on peut accder aux octets : de poids fort dadresse 4X stock dans D via D24 -D31 . de poids moyen dadresses 4X+1 et 4X+2 stocks dans B et C via D8 -D15 et D16 -D23 . de poids faible dadresse 4X+3 stock dans D via D0 -D7 . 3. Dessiner les octets dadresses 4, 5 , 6 et 7 (donnes par le processeur) dans les botiers de RAM. Lemplacement de ces octets dpend il de la convention little/big endian ? 4. Le processeur met ladresse 256 (en dcimal) pour accder un mot long. Donner les adresses correspondantes arrivant sur les botiers de RAM. 5. Si le processeur accde ladresse "8 Mga" que se passe-t-il ? Comment vrier que de la mmoire est prsente pour une adresse donne ?

Accs des donnes de taille diffrente

Problme des tailles multiples : Le processeur peut maintenant accder des mots de un, deux ou quatre octets (instruction assembleur ldr, str, strb, strh, ldrb, 2

ldrh). Pour cela il donne le code de la taille sur les broches Long1 et Long0 comme suit : Long1 Long0 00 01 10 11 : : : : : Taille 1 octet 2 octets 4 octets Erreur

1. Quelles sont les combinaisons de parit dadresses et de tailles dobjet permises pour un accs en un seul cycle ? Dcrire le dcodeur dadresses. La fonction de dcodage doit calculer les signaux daccs chacun des botiers utiliss et le signal derreur daccs une adresse invalide. 2. Le processeur met ladresse 258 (en dcimale) pour accder un mot de deux octets. Donner les adresses correspondants ct mmoire. 1 octet : toutes adresses autorises : on prend dans le bon botier, le processeur remet loctet dans le poids faible du registre. A titre dexemple, ladresse 258 est de la forme 4X+2, loctet est lu dans B. En interne, le processeur recale cet octet sur les bits 7-0 dun registre. 2 octets : pour les adresses 4X+3, les octets concerns, 4X+3 et 4(X+1) se trouvent dans A et D respectivement. cette combinaison est impossible car il faudrait mettre la fois X et X+1 dans le bus dadresses entre A2 et A23 . Les autres combinaisons sont possibles mais en pratique on interdit toutes les adresses impaires. 4 octets : seulement les adresses multiples de 4 sont autorises. En rsum, les cas derreur sont les suivants : 2 octets 4 octets : : adresse impaire = Erreur adresse non multiple de quatre = Erreur

Connexion de la RAM : on rajoute un botier de slection des botiers de la mmoire. Ce botier est donn dans la gure 3.

AccsMem

A1 A0 Long1/0

Erreur

CSA CSB CSC CSD

F IG . 3 Dcodeur dadresse dans le cas daccs des tailles multiples

La table de vrit est donne dans la gure 1.

A1 0 0 1 1 0 0 1 1 0 0 1 1

A0 0 1 0 1 0 1 0 1 0 1 0 1

Long1 0 0 0 0 0 0 0 0 1 1 1 1 1

Long0 0 0 0 0 1 1 1 1 0 0 0 0 1

CSA 0 0 0 1 0 0 1 0 1 0 0 0 0

CSB 0 0 1 0 0 0 1 0 1 0 0 0 0

CSC 0 1 0 0 1 0 0 0 1 0 0 0 0

CSD 1 0 0 0 1 0 0 0 1 0 0 0 0

Erreur 0 0 0 0 0 1 0 1 0 1 1 1 1

TAB . 1 Fonction de dcodage dadresses

Augmentation de la mmoire disponible

On ajoute 12 botiers pour remplir tout lespace dadressage (224 octets). On dispose au total de 16 botiers de 1 Mega octet chacun et possdant comme prcdemment 20 ls dadresses et 8 ls de donnes.

1. Dcrire lorganisation de la mmoire et le dcodage dadresses sachant que lon veut pouvoir accder des octets, des mots de 16 bits ou des mots de 32 bits ? On assemble comme prcdemment 4 blocs de 4 botiers de 1 Megaoctets de RAM chacun. Ces 4 blocs peuvent tre vus comme des botiers possdant 22 ls de bus adresses et 32 ls de bus donnes. On rajoute un ls de slection CS ces blocs qui doit tre 1 pour slectionner le bloc. Les ls A0 A21 sont connects chacun de ces blocs et les bits de poids fort A22 et A23 du bus dadresses permettent de choisir le bon bloc comme suit : A23 0 0 1 1 A22 0 1 0 1

Bloc 0 Bloc 1 Bloc 2 Bloc 3

La gure 4 donne les connexions des 4 blocs dnomms A0, A1, A2 et A3.

CS

A0

00 01 CS 10 11
CS CS CS

A1

A2

A3

A2 - A21

A23 A22

F IG . 4 Slection du botier

Botiers de tailles diffrentes

Il existe un mode superviseur et un mode utilisateur sur ce processeur. Le signal envoy par le processeur vers lextrieur S/U indique sil est en mode superviseur ou utilisateur. Une erreur doit tre emise dans le cas o un accs une zone superviseur est demande alors que le processeur nest pas en mode superviseur. On considre une mmoire dans laquelle laccs des octets, des mots de 16 bits ou 32 bits est possible. La mmoire est organise comme suit : Quatre botiers de mmoire morte (accs en lecture seulement) de 256 Ko chacun. La ROM occupe les adresses [0 1M [ en mode superviseur seulement. Cest une partie du noyau du systme qui sexcute au moment du "boot" de la machine. Quatre botiers de mmoire vive de 256 Ko chacun, occupent les adresses [3 4M [ en mode superviseur seulement. Cest la pile systme. Huit botiers de mmoire vive de 1 Mo chacun, occupent [8 16M [ accessibles dans les deux modes. Ils contiendront les programmes et donnes utilisateurs. Un botier dE/S huit bits accessible en mode superviseur seulement. Il est considr comme trois octets. Deux broches (a1, a0) permettent dadresser les 3 cases mmoires du coupleur : a1, a0 case mmoire 00 registre donnes en L/E 10 registre tat en lecture 11 registre commande en criture On veut quil soit "vu" par le processeur aux adresses suivantes : 1M + 3 : registre donnes L/E 1M + 11 : registre tat Lecture 1M + 15 : registre commande Ecriture Un botier dE/S seize bits accessible en mode superviseur uniquement. Deux broches (a1,a0) permettent dadresser les 3 cases mmoires comme pour le premier coupleur. On veut quil soit "vu" par le processeur aux adresses suivantes : 2M + 2 : registre donnes L/E 2M + 10 : registre tat Lecture 2M + 14 : registre commande Ecriture

1. Sur quelle partie du bus donnes les coupleurs dentre sortie doivent ils tre branchs pour pouvoir utiliser les adresses donnes ci-dessus ? Quelles sont les ls du bus adresse du processeur quil faut brancher sur les deux ls (a1, a0) des coupleurs ? 2. Donner la fonction de dcodage dadresses pour cette mmoire. La fonction de dcodage doit calculer les signaux daccs chacun des botiers utiliss et le signal derreur daccs la mmoire pour tous les accs interdits (accs utilisateur, criture en ROM, accs impossible suivant ladresse) .

A23 0

s/u 0 1

A22 0

A21 0

A20 0

r/w 0 1

A19

A18

..

A2

A1

A0

L0

L1

1 8 1 1 0

0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 1

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

E 1 1 0

ROM 1 2

E/S a b

RAM b c d 0 0

RAM 3 4 5

1 0 1 0 1 0 1 0

1 1 1 0 0 0 0 0 0 0 0

0 1 1 0 1 0 0 0 0 0 0

0 0 1 0 0 0 1 1 0 0 0 0

0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0

1 0 1 0 1 0 1

TAB . 2 Fonction de dcodage dadresses [0M, 1M [ et [3M, 4M [ pour les botiers RAM et ROM accessibles en mode superviseur

A23 0

s/u 1

A22 0

A21 0

A20 1

r/w

A19 0

...

A3 0

A2 0

A1 1

A0 1

0 1

1 Autre 0

1 0 1

0 0

L0 0 0 1 0 0 1 0 0 1

L1 0 1 0 0 0 1

E 0 1

ROM 1 2 0

E/S a b 1 0

RAM b c d

1 0

RAM 3 4

0 1 0 1

1 0 1 0

0 1

1 Autre 1

1 0

0 0 1 0 0 1 0 0 1

0 1 0 0 0 1

0 0 1

0 1 0

0 1 0 1

1 0 1 0 0

TAB . 3 Fonction de dcodage dadresses pour les deux botiers servant aux entres/sorties

A23 1

s/u

A22 0

A21

A20

r/w

A19

...

A3

A2

A1 0

A0 0

L0 0 0 1 1 1 0 0 1 1 0 0 0 1 1 1 0 0 1 1 Idem

L1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

E 0 1

ROM 1 2

E/S a b 0

RAM b c d

0 1

0 1 1 1 0 0 0

1 0 1 1 0 1 0

2 0 0 1 0 0 0

RAM 3 4 0 0 1 0 0 0

5 0

10

0 1 0 1

0 0 0 0 0

0 0 0 0 0

1 1 0 0 0

0 1 0 1 0

Idem

Idem

TAB . 4 Fonction de dcodage dadresses [8M, 16M [ pour les 8 botiers RAM dans les deux modes