1. [Tapez un texte] Page 1
La gestion de la
mémoire sous ARMv7
& Androïd OS
Préparé par : Lanasri Dihia
09/04/2013
2. 2
Sommaire
Introduction................................................................................................................................................3
Définition d’ARMv7 : ..................................................................................................................................3
Ses caractéristiques :..................................................................................................................................3
Familles d’ARM7 :.......................................................................................................................................3
Son architecture :.......................................................................................................................................4
Le jeu d’instruction :...................................................................................................................................4
L’OS Android :.............................................................................................................................................5
La gestion des processus par android ........................................................................................................5
L’organisation de la mémoire :...................................................................................................................5
Les nouveaux aspects de gestion mémoire................................................................................................7
Protection de la mémoire...........................................................................................................................7
Conclusion : ................................................................................................................................................8
Bibliographie :.............................................................................................................................................8
3. 3
Introduction
Aujourd’hui les Smartphones, les iPhones ainsi que les iPads ont envahi notre vie quotidienne.
Et de plus en plus leurs performances connaissent une amélioration progressive grâce aux
microprocesseurs qui les équipent.
Parmi ces microprocesseurs, il y a le ARM qui depuis sa création ne cesse de connaitre de
nouvelles améliorations en termes de rapidité, taille ainsi que le mode de gestion de la
mémoire.
De plus, android a pris une place très importante dans la plupart de ces Smartphones
aujourd’hui et qui permet d’installer toute sorte d’applications.
Dans notre étude, on va s’intéresser au microprocesseur ARM version 7 et à android comme
OS, et on essaiera de comprendre comment se fait-il pour gérer la mémoire vive.
Définition d’ARMv7 :
L’ARMv7 (Acorn RISC - Reduced Instruction Set Computer - Machine) est un microprocesseur
de la famille ARM. Il a une architecture fondé sur les principes de conception RISC de 32 bits,
développé par l’entreprise ARM Ltd en 2005.
L’entreprise ne fabrique les processeurs mais vend la licence aux fabricants.
Il contient des registres généraux de 32 bits, son jeu d’instructions est sur 32 bits.
Ses caractéristiques :
Il est de petite taille.
Il consomme peu d’énergie.
une très faible consommation et dissipation thermique.
Il est adapté aux applications embarquées et aux téléphones mobiles ainsi que les
tablettes, les serveurs TCP/IP…
Figure1 : le processeur ARMv7
Dans ce circuit on utilise le cœur ARMv7 de taille 0,5mm2
en 180nm.
Familles d’ARM7 :
On peut dire qu’il y a les familles suivantes :
ARMv7 coretex-M : sans protection de la mémoire
ARMv7 coretex-R : utilise la segmentation pour l’organisation de la mémoire
4. 4
ARMv7 coretex-A : utilise la MMU pour la pagination
Son architecture :
Le processeur ARMv7 a 3 niveaux de pipeline (Fetch, Decode, Execute) ce qui permet
d’accélérer la vitesse d’exécution.
Figure2 : Les niveaux de pipeline
Il contient 16 registres de taille 32 bits :
o 13 registres généraux
o Un registre pointeur de pile SP
o Un compteur ordinal CO
o Registre des indicateurs CPSR
Figure3 : architecture d’ARMv7
A cette architecture est rajouté : 4 à 8 K octets de cache, une MMU (Management Memory
Unit), des Buffers et un coprocesseur
Le jeu d’instruction :
Il y a trois jeux d’instructions ARMv7
o ARM: c’est le jeu d’instruction par défaut sur 32 bits.
o Thumb : les instructions sont sur 16 bits. ce qui implique un gain en mémoire
o Jazelle : Exécution du byte code Java, les instructions sont sur 8 bits.
o Thumb-2 : « étend le jeu d'instructions limité 16 bits de Thumb par un
des instructions 32 bits additionnelles afin de donner plus de largesse
5. 5
au jeu d'instruction. Il en résulte un jeu d'instructions de largeur
variable. Thumb-2 a pour visée d'atteindre une densité de code
proche de Thumb tout en conservant des performances similaires au
jeu d'instructions ARM en mémoire 32 bits. » (Wikipédia)
L’ARMv7 utilise le big et le little endian pour organiser les mots mémoire ie : que selon la
dernière approche il commence par stocker le poids le plus faible du mot mémoire ensuite le
poids fort dans la mémoire, et inversement pour le big endian.
L’OS Android :
Andoid est un système d’exploitation open source utilisant le noyau Linux, il était crée par la
PME Andoid en 2003 puis elle était rachetée par Google company en 2005. Il était conçu
initialement pour être déployé sur les Smartphones, tablettes… basés sur l’architecture ARM.
Il comporte une interface spécifique développée sous Java et les programme sont exécutés via
JIT interpréteur. Il utilise toutes les bibliothèques open source C utilisées par Linux ;
La gestion des processus par android
Android exécute tous ses programmes en processus, en suivant un certain ordre. Sous android
un processus est composé de un ou plusieurs threads ce qui permet leurs exécution en
parallèle donc ils doivent partager la mémoire entre eux.
L’organisation de la mémoire :
L’adressage mémoire se fait sur 32 bits se qui donne une mémoire de taille 4GO=232
octet.
Les données sont soit sur 8 bits, 16 bits ou de taille d’un mot mémoire =32 bits.
La mémoire peut être vue comme une ligne d’octets repliée en mots à partir de l’adresse
0.Deux façons d’organiser la mémoire sachant qu’on réserve 4 octets par mot :
6. 6
Figure 4 : Organisation de la mémoire vive par ARM7
L’organisation de la mémoire sous ARMv7 -A
Avant que l’adresse virtuelle envoyée par le microprocesseur soit reçue par le registre
d’adresse mémoire, elle doit être d’abord convertie en adresse physique réelle comprise par
la mémoire.
Sachant que l’ARMv7-A supporte le principe de pagination alors la MMU (Memory Manager
Unit) permet cette conversion en transformant les numéros de pages qui sont logiques en
adresse début de cadre de pages physiques reconnus par la mémoire.
L’adresse logique=numéro d’hyperPAGE+ numéro de page + déplacement dans la page
La MMU assure que chaque processus aura son propre espace réservé en mémoire ;
La table des pages
L’ARM7-A utilise une table de pagination à deux niveaux ; la taille d’une page peut être :
Small pages: 4Kbits (12-bit offsets),
Large pages : 64Kbits (16-bit offsets),
Sections: 1Mbits (20-bit offsets),
Super section: 16Mbits (24-bit offsets).
Le nombre d’entrée dans la table de pages ne dépend pas de la taille de la page.
Chaque entrée de la table de page de premier niveau contient un pointeur vers une table de
2ème
niveau.
Donc pour assurer la translation d’une adresse virtuelle en adresse physique il faut :
Consulter la 1ère
table de pages qui se trouvent en mémoire centrale ; cette table en réalité est
décomposée en 2 tables, mais pour savoir à quelle table il faut accéder cela dépend des bits
de poids forts.
L’adresse de cette table est enregistrée dans l’un des registres suivants : TTBR0 ou TTBR1
L’entré de la 1 ère
table contient l’adresse physique de la 2ème
table de page. Et l’entrée de la
2èmè table de page représente l’adresse physique réelle de la page en mémoire vive.
Si la taille de la page est très grande (section ou super section) il y aura pas deux niveaux de
pagination, un seul suffit par contre l’adresse de la section est enregistré dans la 1 ère
table.
Donc pour trouver l’adresse physique il faut rajouter à l’adresse de début de page le
déplacement à l’intérieure de la page.
7. 7
Les nouveaux aspects de gestion mémoire
Le système android avec l’ARM7 supportent la mémoire virtuelle et la gèrent. Pour réduire le
temps d’accès à la mémoire les processeurs ARM7 utilisent des mémoires caches de différents
niveaux L1, L2…qui sont intercalées entre le processeur et la mémoire.
Mais puisque android et ARM7 sont créés pour être exécutés sur des Smartphones cela veut
dire que la taille de la mémoire est réduite et ne peut pas atteindre les 4GO c’est la raison
pour laquelle dès que la mémoire n’est plus suffisante andoid opte à fermer quelque
applications sachant qu’il laisse plusieurs processus en cours d’exécution en arrière plan ce
qui consomme de la mémoire.
Figure5: Hiérarchie de la mémoire
Protection de la mémoire
L’accès à la mémoire est contrôlé selon les permissions définies, que ce soient aux blocs
mémoires (pages) ou bien aux tables de pages. Il existe plusieurs modes de permission et
chaque page peut avoir un mode différent que les autres.
On a :
Execute never: elle n’autorise pas l’accès à la page mémoire pour lire un mot.
Read-only, read/write, no access: These modes can be set for user-mode as well as
privileged (kernel) mode.
Non-secure: elle identifie les régions mémoire.
sharable: vérifie si une région est partageable ou non entre les processus