Syst[PleaseinsertPrerenderUnicode{è}intopreamble]

publicité
Systèmes temps réel et systèmes embarqués
Elements d’architecture des ordinateurs
Jacques Gangloff, Loı̈c Cuvillon
Ecole Nationale Supérieure de Physique de Strasbourg
5 février 2008
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
1 / 42
Bibliographie
Bibliographie
Livres :
◮
◮
◮
Architecture et technologie des ordinateurs, P.Zanella et Y.Ligier, Dunod,
1998.
Architecture de l’ordinateur, 5ème édition, Andrew Tanenbaum, Pearson
education, 2005. Une référence : par le créateur de l’OS minix, extrêmement
détaillé.
Systèmes d’exploitation, 2ème édition, Andrew Tanenbaum, Pearson
education, 2003.
WEB :
◮
◮
http ://www.intel.com
http ://en.wikipedia.org
Iconographie : wikipédia et A. Tanenbaum
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
2 / 42
Acronymes
Acronymes
DMA : Direct Memory Access
FSB : Front Side Bus
INT : Interruption
IRQ : Interrupt ReQuest
ISR : Interrupt Service Routine
MMU : Memory Management Unit
OS : Operating System
PIC : Programmable Interrupt Controleur
RAM : Random Access Memory
RTC : Real Time Clock
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
3 / 42
Note
Le Propos
quelques éléments d’architecture des ordinateurs pertinents pour les
systèmes temps réel et embarqués (en particulier à base de Linux).
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
4 / 42
Plan
Plan
1
Le temps : Horloge et Timers
L’horloge temps réel
Les timers
2
Interruption
Contrôleur d’interruptions
Partage d’interruptions
3
Mémoire
Mode réel et protégé
Segmentation
Pagination
4
Les entrées-sorties (I/0) : adressage
I/O par port
I/O mappées en mémoire
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
5 / 42
Rappel : Architecture des cartes-mères
Rappel : Architecture des cartes-mères
Northbridge
contrôleur mémoire
(rafraı̂chissement, sélection,.)
bande passante élevée
compatibilité limité avec 1 type de
mémoire et 1 CPU
terminologie Intel : Graphics and
Memory Controller Hub (GMCH)
Southbridge
dédié aux bus de moindres débits
peut inclure : DMA, RTC, PIC
terminologie Intel : I/O Controller
Hub (ICH).
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
6 / 42
Le temps : Horloge et Timers
Plan
1
Le temps : Horloge et Timers
L’horloge temps réel
Les timers
2
Interruption
Contrôleur d’interruptions
Partage d’interruptions
3
Mémoire
Mode réel et protégé
Segmentation
Pagination
4
Les entrées-sorties (I/0) : adressage
I/O par port
I/O mappées en mémoire
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
7 / 42
Le temps : Horloge et Timers
L’horloge temps réel
L’horloge temps réel ou Real-time Clock (RTC)
quartz 32.768 kHz (maximum≈30MHz)
alimentation : batterie lithium ou supercondensateur
avantages :
◮
◮
indépendante du reste du système (1 utilisation : réveil programmé)
sauvegarde de l’heure et du jour en absence d’alimentation
inconvénients :
◮
◮
consultation lente (I/O)
résolution faible (ms : milliseconde)
Circuit intégré RTC
Loı̈c Cuvillon (ENSPS)
Puce southbridge (RTC inclus)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
8 / 42
Le temps : Horloge et Timers
Les timers
Les timers
Programmable Interrupt Timer (PIT)
compteurs programmables en mode one-shot ou périodique
résolution temporelle : µs
un des compteur est utilisé comme ”timer système”
le timer système génère l’INT de plus haute priorité : l’INT timer (IRQ 0)
Ex : puce intel 825x, inclus dans le southbridge à l’adresse I/O : 0x40-43
Time Stamp Counter (TSC)
compteur (registre) 64 bits interne au CPU
incrémentation de 1 à chaque signal d’horloge CPU
190 ans pour le remplir à 3GHz, résolution en nanosecondes (ns)
accessible par une instruction processeur (asm) ”RDTSC”
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
9 / 42
Le temps : Horloge et Timers
Les timers
Timers
Linux : usage des timers
variable kernel xtime
◮
◮
◮
initialisée à partir de la Real Time Clock
fréquence de rafraı̂chissement 1000Hz
usage : get time of day()
variable kernel jiffies
◮
◮
◮
◮
variable 32 bits
incrémentée à chaque interruption timer
(100 ou 1000Hz pour linux, défini à la compilation du kernel)
utilisée par le noyau et pour la fréquence de réordonnancement des threads
usage : void init timer (struct timer list* timer) et scheduler tick()
registre TSC
◮
◮
◮
la meilleur résolution (ns)
usage : rtdsc(low,high), lecture en 2 variable 32 bits du TSC
utilisé par le Linux temps réel Xenomai sur architecture intel386
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
10 / 42
Interruption
Plan
1
Le temps : Horloge et Timers
L’horloge temps réel
Les timers
2
Interruption
Contrôleur d’interruptions
Partage d’interruptions
3
Mémoire
Mode réel et protégé
Segmentation
Pagination
4
Les entrées-sorties (I/0) : adressage
I/O par port
I/O mappées en mémoire
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
11 / 42
Interruption
Interruption
Définition d’une interruption matérielle
signal sur une broche (INT) du CPU déclenchant l’exécution d’une routine
notification au CPU d’événements asynchrones en provenance des
périphériques (ex : touche enfoncée, fin d’un transfert mémoire)
économie pour le CPU du temps de scrutation des périphériques
Scrutation périodique par le CPU
de l’état du périphèrique
INT
CPU
CPU
RAM
PIC
I/O (1)
INT 1
RAM
(controleur)
I/O (1)
I/O (2)
(controleur)
I/O (2)
INT 2
(controleur)
(controleur)
Entrée−Sortie programmée avec attente de disponibilité
Loı̈c Cuvillon (ENSPS)
Entrée−Sortie programmée avec interruption
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
12 / 42
Interruption
Interruption
Exemple : convertisseur analogique-numérique Séliatec
une interruption est utilisée pour notifier au CPU que la conversion de la
tension analogique en valeur numérique est achevée
1
la conversion démarre par une écriture fictive sur le port d’un des
convertisseurs analogique-numeriques
2
une interruption est générée par la carte seliatec en fin de conversion
le CPU notifié, exécute l’ISR correspondant :
3
◮
◮
lecture d’un registre de la carte indiquant quel CNA a fini la conversion ;
cette lecture désactive l’interruption
lecture de la valeur de la tension dans un registre de la carte
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
13 / 42
Interruption
Contrôleur d’interruptions
Contrôleur d’interruptions
Gestion des interruptions
définition de priorités pour arbitrer les concurrences
présentation d’une interruption à la fois au CPU
nécessité de masquer des interruptions et de les mémoriser (buffer)
→ Utilisation d’un contrôleur d’interruption (PIC)
Note : Temps de réponse (latence) à une interruption
minimum : fonction du contrôleur d’interruption et sa configuration
maximum : fonction de l’OS (taille code critique non-interruptible +
priorité d’ordre supérieur qui retarde l’exécution)
un OS temps réel doit garantir un maximum
ordre de grandeur de la latence (micro-secondes)
OS
moyenne
max
min
Linux 2.6.12
15.8
179.9 15.2
Linux temps réel (xenomai)
13.9
53.2 13.2
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
écart-type
1.3
0.5
Année scolaire 2007-2008
14 / 42
Interruption
Contrôleur d’interruptions
Interruption
Un contrôleur programmable d’interruptions (PIC) : le 8259
utilisé par le PC IBM et ses successeurs, peut être mis en cascade
(deux 8259 en cascade = 15 INT)
1 registre de masque, 1 d’interruption activée, 1 d’interruption servie
programmation/lecture via le bus de données du CPU (DO-D7)
priorité par ordre décroissant (0(+prioritaire),2,...,7(-))
INT
INTA
CPU
RD
WR
A0
CS
8259A
Interrupt
controller
D0-D7
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
Clock
Keyboard
Disk
Printer
+5 v
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
15 / 42
Interruption
Partage d’interruptions
Signaux d’Interruption : sur front ou niveau
”Edge sensitive” interruption
periph 1
periph 2
V
”Level sensitive” interruption
periph 1
periph 2
V
t
ligne INT2 fin traintement int
t
ligne INT1
actif sur un front du pulse
sensible au bruit, pertes par
masquage temporaire ou
recouvrement de 2 INT
requiert : capture par une
bascule flip-flop
norme du bus ISA
Loı̈c Cuvillon (ENSPS)
actif sur un niveau
actif (niveau haut) tant que
l’interruption n’est pas
acquittée
indépendance au bruit,
immanquable
norme du bus PCI
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
16 / 42
Interruption
Partage d’interruptions
Signaux d’Interruption : Partage de lignes
d’interruption
configuration à 15 interruptions est classique (2x8259 en cascade)
or, plus de périph. que d’interruptions → partage des lignes d’INT
Problèmes du partage d’une ligne d’interruption par n périph.
”Edge-sensitve” interruption
”Level-sensitive” interruption
avantages (/edge level) :
inconvénients :
◮
◮
◮
obligation de tester les n
périph. (2 INTs confondues)
pas de retour sur le résultat
du traitement de l’interruption
◮
avantage :
◮
si un périph. ne peut pas être
acquitté : pas de problème
(ligne d’INT libre)
Loı̈c Cuvillon (ENSPS)
parcours des périph. jusqu’à
disparition du niveau haut de
la ligne
ordre de traitement important
pour l’efficacité (d’abord celui
qui génère beaucoup d’INT)
inconvénients :
◮
si un périph. ne peut pas être
acquitté : Int bloqué niveau
haut (ligne d’INT bloquée)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
17 / 42
Interruption
Partage d’interruptions
Interruption : Partage de lignes d’interruption
Conclusion sur le partage d’une ligne d’interruption par n périph.
augmentation du temps de traitement des interruptions en n2
gestion des interruptions plus complexe
Nouvelles approches
→ supprimer les lignes d’interruptions partagées
APIC : Advance Programmable Interrupts Controller
◮
◮
◮
chaque processeur possède un local APIC (LAPIC) de 24 à 64 interruptions
jusqu’à 8 I/0 APIC collectent les interruptions et les renvoient vers les LAPIC
(8x 24-64 interruptions possibles)
permet de partager des interruptions entre multiprocesseurs, flexible
”message-signalled” interruptions
◮
◮
◮
supprime les lignes physiques d’interruption sur la carte-mère
requête envoyée par un message court sur un médium unique
(un peu comme Ethernet)
le message contient un identifiant du périphérique qui a généré une
interuption (Ex : PCI-Express (bus série avec des trames)
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
18 / 42
Mémoire
Plan
1
Le temps : Horloge et Timers
L’horloge temps réel
Les timers
2
Interruption
Contrôleur d’interruptions
Partage d’interruptions
3
Mémoire
Mode réel et protégé
Segmentation
Pagination
4
Les entrées-sorties (I/0) : adressage
I/O par port
I/O mappées en mémoire
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
19 / 42
Mémoire
Mode réel et protégé
Mode réel et protégé
Le mode réel : définition
le mode d’exécution du 8086
8086 : processeur 16 bits (1978-320$)
avec bus d’adresse de 220 bits (1Mo)
des registres de 16 bits permettent
d’adresser une mémoire linéaire de
216 bits (64 Ko)
pour accéder au 1Mo de mémoire :
◮
◮
◮
◮
un registre segment de 16bits
offset : l’adresse mémoire sur 16bits
adresse finale= segment x16 + offset
système complexe, où l’on définit des
segments adressables de 64 Ko
commençant à l’adresse de base
(segment x16)
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
8086
Année scolaire 2007-2008
20 / 42
Mémoire
Mode réel et protégé
Mode réel et protégé
Le mode protégé
introduit avec le 80286 (1982)
80286 : processeur 16 bits (bus adresse de
24 bits)
mode augmentant via le hardware, la
sécurité et stabilité des OS multi-tâches
par opposition avec le mode réel, il
apporte :
◮
◮
◮
des niveaux de privilège d’exécution
un accès à la mémoire > 1Mo
mémoire virtuelle et protection mémoire
(MMU de 1Go d’adresses virtuelles)
80286 (i286)
pour compatibilité avec le 8086 : tout les
CPU Intel démarrent en mode réel
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
21 / 42
Mémoire
Mode réel et protégé
Gestion de la mémoire
Problématiques liées à un système multi-tâche
cohabitation de nombreux programmes dans une mémoire limitée
protection de l’intégrité du code et données de chaque processus
(empêcher le programme d’un utilisateur d’aller modifier le code du
système ou d’un autre utilisateur)
Problématique de la réallocation dynamique
le compilateur produit un code A sans savoir où il sera exécuté en
mémoire
hypothèse : la première instruction est un appel à une procédure
(fonction) à l’adresse absolue 100 dans le fichier binaire.
si le binaire est chargé à l’adresse 100K, l’instruction sautera à l’adresse
absolu 100 (où peut se trouver le code d’un autre utilisateur). L’adresse
où sauter devrait en fait être 100K+100.
de même, si le binaire est chargé à l’adresse 250K, l’instruction doit
sauter en 250K+100.
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
22 / 42
Mémoire
Segmentation
Gestion de la mémoire : la réallocation dynamique
000
OS mono-tâche : pas de problème
une seul processus toujours chargé à
l’adresse 0 et de taille maximale limitée
(900K, ici)
Code A
pas de nécessité de réallocation
(translation d’adresses) car chargé en 0.
900K
Système
d’exploitation
quand le processus est fini, il est écrasé
par le code du suivant
1M
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
23 / 42
Mémoire
Segmentation
Gestion de la mémoire : la réallocation dynamique
OS multi-tâche
000
000
10K
Processus H
70K
Processus H
(libre)
Processus A
270K
100K
Processus A
Processus B
580K
280K
Processus B
(libre)
900K
900K
Système
d’exploitation
Système
d’exploitation
1M
Mémoire après un temps
de fonctionnement
Loı̈c Cuvillon (ENSPS)
1M
Retassement par réallocation
dynamique
plusieurs tâches chargées
en mémoire aux adresses
où il y a de la place
nécessite un mécanisme
de réallocation pour
déplacer les programmes
tout en permettant leur
exécution correcte
(nouvelles adresses des
procédures dans le code)
le retassement permet de
supprimer la fragmentation
et libérer un bloc mémoire
contiguë
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
24 / 42
Mémoire
Segmentation
Réallocation dynamique et segmentation
Mécanisme de translation d’adresses
lors du chargement en mémoire d’un processus, l’adresse de départ, où
il est chargé, est stockée dans le registre base
à toute adresse à laquelle fait référence le processus (offset), on ajoute la
valeur du registre de base :
adresse effective = base + adresse relative au début du processus (offset)
(1)
ainsi, lors du déplacement d’un processus en mémoire :
◮
◮
◮
le code binaire est déplacé sans aucune modification
le registre base est mis à jour avec la nouvelle valeur
on utilise l’équation précédente pour le calcul des adresses effectives
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
25 / 42
Mémoire
Segmentation
Réallocation dynamique et segmentation
Mécanisme de translation d’adresses
illustration avec l’appel d’une procédure stockée à l’adresse 100 dans le
binaire
Mémoire
100K
Table de segment
Processus A
Exécution
procédure 1
adresse effective
100,1K
Loı̈c Cuvillon (ENSPS)
CALL 100
CALL 100
base
100,1K
100K
CALL 100,1K
base
procédure 1
Processus A
Code
appel procédure 1
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
26 / 42
Mémoire
Segmentation
Réallocation dynamique et segmentation
Mécanisme de protection mémoire
risque de débordement (involontaire ou mal intentionné) d’un processus
dans la zone mémoire d’un autre processus
taille du segment mémoire du processus stockée dans un registre limite
pour chaque adresse effective, on teste si :
adresse effective < base + limite
en cas de tentative de dépassement : interruption SIGSEGV
Mémoire
100K
Table de segment
Processus A
Exécution
procédure 1
adresse effective
100,1K
CALL 100
CALL 100
limite
base
130K
100K
CALL 100,1K
100,1K
procédure 1
230K
Test sécurité
adresse < base+limite
Loı̈c Cuvillon (ENSPS)
base
Processus A
Code
appel procédure 1
limite
Ok
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
27 / 42
Mémoire
Segmentation
Gestion de la mémoire : Segmentation
mécanisme présenté précédemment de réallocation et protection
mémoire : la segmentation (cas 1 seul segment)
la segmentation, plus généralement consiste à :
◮
◮
◮
définir un ou plusieurs segments pour un programme (code, données, pile,..)
associer des droits (lecture/écriture) à chaque segment
partager des segments communs pour éviter la duplication de code en
mémoire (ex : 2 exécution de l’éditeur ed (ED1 et ED2) )
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
28 / 42
Mémoire
Pagination
Gestion de la mémoire : Mémoire virtuelle
Apport de la segmentation
la segmentation permet aisément de faire coexister plusieurs
programmes en mémoire (réallocation) avec des protections adéquates
la segmentation cause une fragmentation externe de la mémoire qui peut
être corrigée périodiquement par un processus très coûteux en temps
CPU : le retassement de la mémoire
Limitation
la segmentation n’apporte pas de solutions efficaces pour exécuter un
programme (ou plusieurs) nécessitant plus de RAM que celle disponible
or, à un instant donné, seules quelques parties du programme et de ses
données sont nécessaires en mémoire, le reste pouvant être stocké en
mémoire secondaire (disque dur)
la mémoire virtuelle : méthode permettant d’implémenter la stratégie
ci-dessus avec utilisation de la mémoire secondaire
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
29 / 42
Mémoire
Pagination
Gestion de la mémoire : Mémoire virtuelle
Principe
le CPU (et l’OS) travaille sur une mémoire virtuelle importante
un démon ou une unité de gestion de la mémoire (MMU) se charge de :
◮
◮
◮
mise en mémoire physique des données nécessaires à un instant donné
copie temporaire des données sur le disque pour libérer de la mémoire
physique
translation d’adresses entre l’adresse virtuelle accédée par le CPU et
l’adresse mémoire réelle de la donnée
Mémoire secondaire
Mémoire virtuelle
4Go (2^32)
Disque dur
Mémoire physique (RAM)
32Ko (2^15)
0
MMU
CPU
Adresse
virtuelle
(32 bits)
Adresse réelle
Bus adresse
mémoire
Bus données
0
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
30 / 42
Mémoire
Pagination
Mémoire virtuelle : Pagination
Pagination : une technique de mémoire virtuelle
découpage d’un espace d’adressage virtuel de grande dimension (2m
adresses) en pages de petite taille (2p bits)
découpage de la mémoire physique (2n adresses, n ≤ m) également en
pages
une [adresse mémoire] est découpée en :
[numéro de page | position dans la page (offset)]
une table des pages virtuelles de 2m−p entrées stocke les informations
liées à chaque page virtuelle :
◮
◮
un flag indiquant si la page virtuelle est en mémoire physique ou sur le
disque
si en mémoire, l’adresse physique de la page
dans la cas où n ≤ m : à un instant donné, il est forcément impossible
d’avoir toutes les pages virtuelles chargées en mémoire physique
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
31 / 42
Mémoire
Pagination
Mémoire virtuelle : Pagination
Exemple
mémoire virtuelle : 4Go
(adresses de 32 bits)
mémoire physique : 32Ko
(adresses de 15 bits)
taille de page : 4Ko
(12 bits d’adresses)
donc :
◮
◮
8 pages de mémoire physique
disponibles
220 pages de mémoire virtuelle
nombres d’entrées table de pages :
220
Page
Virtual addresses
15
61440 – 65535
14
57344 – 61439
13
53248 – 57343
12
49152 – 53247
11
45056 – 49151
10
40960 – 45055
9
36864 – 40959
8
7
32768 – 36863
Physical addresses
28672 – 32767
7
28672 – 32767
6
24576 – 28671
6
24576 – 28671
5
20480 – 24575
5
20480 – 24575
4
16384 – 20479
4
16384 – 20479
3
12288 – 16383
3
12288 – 16383
2
8192 – 12287
2
8192 – 12287
1
4096 – 8191
1
4096 – 8191
0
0 – 4095
0
0 – 4095
(a)
Loı̈c Cuvillon (ENSPS)
Bottom 32K of
main memory
Page
frame
Systèmes temps réel et systèmes embarqués
(b)
Année scolaire 2007-2008
32 / 42
Mémoire
Pagination
Mémoire virtuelle : Pagination
15-bit
Output
register
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0
Input
register
Page
table
Exemple (suite)
Present/absent
bit
MMU : translation d’adresses
virtuelles de 32 bits vers 15 bits
12 bits pour l’offset dans la page de
4Ko
Table des pages :
◮
◮
Memory address
1 1 0 0 0 0 0 0 0 0 1 0 1 1 0
Virtual
page
15
14
13
12
11
10
9
8
7
6
l’adresse virtuelle demandée
correspond à la 3ème page virtuelle
d’après la table, elle est déjà en
mémoire (flag=1) et sotckée dans la
6ème /8 page physique
5
4
3
1
110
2
1
0
20-bit virtual page
12-bit offset
32-bit virtual address
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
33 / 42
Mémoire
Pagination
Mémoire virtuelle : Pagination
Exemple (fin)
illustration : utilisation optimale de la
mémoire physique
toutes les pages de RAM occupées
par divers programmes
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
34 / 42
Mémoire
Pagination
Unité de Gestion de la mémoire (MMU)
circuit imprimé distinct ou inclus dans le processeur
circuit dédié accélérant fortement les translations et tests sur les
adresses
une logique importante (jusqu’à 30% de la surface du processeur)
au niveau matériel, elle contient :
◮
◮
◮
◮
mémoire dédiée pour les tables de pages et registres (base, limite)
logique de conversion des adresses virtuelles en adresses physiques
logique de calcul des adresses de type base + offset
logique de test de dépassement de limite d’un segment
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
35 / 42
Mémoire
Pagination
Gestion de la mémoire : Conclusion
Pagination et Segmentation
2 méthodes pour optimiser et automatiser la gestion de la mémoire
(protection, occupation mémoire)
segmentation et pagination utilisées simultanément sous linux
(un segment de programme = plusieurs pages en mémoire virtuelle)
segmentation et pagination sont temporellement non-déterministes :
◮
◮
◮
défauts de pages : il faut charger la page à partir du disque (périph. lent)
(solution : appel système bloquant une page critique en RAM)
retassement : liberation d’un bloc contiguë de mémoire (process lent.)
Mémoire linéaire (flat memory)
système sans MMU : accès direct à la mémoire physique linéaire
avantage : déterminisme temporelle (programme toujours en mémoire à
une adresse immuable)
inconvénient : développement difficile pour un système multi-tâche
(pas de protection mémoire, relocation)
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
36 / 42
Les entrées-sorties (I/0) : adressage
Plan
1
Le temps : Horloge et Timers
L’horloge temps réel
Les timers
2
Interruption
Contrôleur d’interruptions
Partage d’interruptions
3
Mémoire
Mode réel et protégé
Segmentation
Pagination
4
Les entrées-sorties (I/0) : adressage
I/O par port
I/O mappées en mémoire
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
37 / 42
Les entrées-sorties (I/0) : adressage
Entrées-sorties
interaction fondamentale entre CPU et périphériques
un échange entre registres du contrôleur d’un periph. et le CPU
matériel impliqué : bus, chipset, contrôleur de périphériques
instructions nécessaires : adressage, lecture et écriture.
2 stratégies d’adressage différentes :
port dédié ou mappage en mémoire
Espace memoire
et
E/S separees
E/S mappees en
memoire
Espace d’adressage
hybride
0xFFFF
0xFFFF
0xFFFF
memoire
memoire
ports d’ E/S
ports d’ E/S
0xFF
O
Loı̈c Cuvillon (ENSPS)
O
Systèmes temps réel et systèmes embarqués
O
Année scolaire 2007-2008
38 / 42
Les entrées-sorties (I/0) : adressage
I/O par port
I/O par port
la sortie I/O du CPU indique que l’adresse sur le bus correspond à un
port de périph. et non pas à une adresse mémoire
instructions CPU dédiées : IN, OUT (asm) ou inb,outb (langage C)
Northbridge déroute la requête vers le Southbridge si la sortie I/O du
CPU est active (sinon vers la mémoire)
adresses de ports définies par la carte mère (Super I/O contrôleur)
CPU
Address Bus
0x3F8
NorthBridge
IO/M
Memory
I/O
S I/O controller
Serial
Port
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
39 / 42
Les entrées-sorties (I/0) : adressage
I/O mappées en mémoire
I/O mapping
une partie des adresses mémoires (virtuelles) est réservée pour les
entrées-sorties vers les périphériques
toutes les lectures/écritures sur cette plage d’adresses sont redirigées
vers le southbridge (périph.)
sur chipset Intel : adresses entre TOLUD et 4Go (chipset spec.)
TOLUD<0xFF4A<0xFFFF
CPU
Address Bus
0xFFFF
0xFF4A
NorthBridge
Memory
Data Bus
0x0000
PCI device controller
South
bridge
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
40 / 42
Les entrées-sorties (I/0) : adressage
I/O mappées en mémoire
I/O par ports et mappées en mémoire
Comparatif
I/O port
+adressage séparé : toute
la plage d’adressage peut
être utilisée pour la
mémoire
+instruction spécifique :
lisibilité code
-nécessite du hardware
supplémentaire et une
broche sur le CPU
intéressant sur architecture
à petit bus d’adressage
I/O mappée en mémmoire
+CPU ne requiert pas de
logique pour les ports
(prix,simplicité)
+instruction identique à un
accès mémoire (RISC)
- occupe des adresses
mémoires (si virtuelles, MMU
nécessaire)
sur archi 32 bits, peux de
problèmes d’adressage limité
Sous Linux/ix86 : cohabitation des 2 modes d’adressage (pci)
Loı̈c Cuvillon (ENSPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
41 / 42
Les entrées-sorties (I/0) : adressage
I/O mappées en mémoire
Note : Les canaux DMA
DMA : Direct memory Access
les canaux DMA peuvent être considérés comme des périphériques
chacun de ces périphériques permet de réaliser des opérations
d’entrées-sorties et de délester ainsi le CPU de ce travail
le CPU initialise alors les paramètres du transfert (source, destination,
nombre d’octets)
le DMA lui signale la fin du transfert par interruption
Terminal
1.initilisation DMA
Address
CPU
DMA
Count
100
RS232C
Controller
…
Loı̈c Cuvillon (ENSPS)
…
Device
Memory
100
32
4
1
Direction
Bus
Systèmes temps réel et systèmes embarqués
Année scolaire 2007-2008
42 / 42
Téléchargement