Architecture des ordinateurs

publicité
Systèmes temps réel et systèmes embarqués
Architecture des ordinateurs
Loı̈c Cuvillon
Telecom Physique Strasbourg
11 novembre 2015
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
1 / 84
Sommaire
1
Raspberry
2
Processeur ARM
Architecture ARM : principes
Jeu d’instruction et language assembleur ARM
3
Exceptions et Interruptions
Définition
Contrôleur d’interruptions et traitement
4
Gestion de la mémoire (pagination)
5
Les entrées-sorties (I/O)
I/O par port
I/O mappées en mémoire
6
Le temps : Horloge et Timers
L’horloge temps réel
Les timers
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
2 / 84
Bibliographie
Bibliographie
Architecture :
Architecture de l’ordinateur, 5ème édition, Andrew Tanenbaum, Pearson
education, 2005. par le créateur de l’OS Minix
Documentation technique :
Intel Architecture Software Developer’s Manuel
ARM Architecture Reference Manual
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
3 / 84
Bibliographie
Little/Big Endian
Petit/Gros boutiste (étymologie : voyage de Gulliver)
exemple : la valeur 433=0x01B1 nécessitant 2 octets en mémoire
Big endian : most significant bit (MSB : 01h) en premier
Little Endian : lest significant bit (LSB : B1h) en premier
Little-Endian (x86,arm)
adresse mémoire 00 01
B1 01
Big-Endian (powerpc,arm,mips)
adresse mémoire 00 01
01 B1
Protocole IP : big endian (pour tous, interopérabilité)
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
4 / 84
Raspberry
Plan
1
Raspberry
2
Processeur ARM
Architecture ARM : principes
Jeu d’instruction et language assembleur ARM
3
Exceptions et Interruptions
Définition
Contrôleur d’interruptions et traitement
4
Gestion de la mémoire (pagination)
5
Les entrées-sorties (I/O)
I/O par port
I/O mappées en mémoire
6
Le temps : Horloge et Timers
L’horloge temps réel
Les timers
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
5 / 84
Raspberry
Hardware
System on chip (Soc) ARM/GPU
+ SDRAM, DMA, MMU, GPIO, UART
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
6 / 84
Raspberry
Gpio
GPIO : General Purpose Input
Output
configurable en entrée ou sortie
niveau binaire : 0 - 3.3 Volt
peut produire une interruption
pas de CNA/CAN disponible
(mais un PWM)
GPIO particuliers
Liaison série RS232 (RX,TX)
I2C (SDA/SCL)
SPI(MOSI, MISO)
PWM
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
7 / 84
Raspberry
RS-232
RS232 :
une norme de liaison série
3 fils : GND, Transmission (Tx),
Reception (Rx)
bit 0 = niveau haut +3 à +15V
bit 1 = niveau bas -15V
Communication null-modem :
Periph 1 Périph 2
GND ↔ GND
TX ↔ RX
RX ↔ TX
utilise un UART
UART
composant qui serialise les
données
frame standard :
1 bit de start à 0
8 bits (l’octet de data)
1 bit de parité (ou non)
1 bit de fin à 1 (ou 2 bits)
baudrate = débit en
symboles/seconde
(<bits/seconde)
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
8 / 84
Raspberry
BerrylClip
Carte Berryclip+
Connexion haut-parleur, leds, interrupteurs sur les GPIOs
(Haut−parleur)
Pins
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
9 / 84
Raspberry
Connexion au RPI via la liaison série
Un adaptateur USB RS232 3.3V TTL
conversion niveau RS232 vers 0-3.3V du Rpi
+ emulation d’un port série pour les PC récents via /dev/ttyUSB0
Berryclip Pins
1
7
13
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
10 / 84
Raspberry
Connexion au RPI via la liaison série
le RPi par défaut ouvre un terminal sur son port série
login/passwd : pi/raspberry
Se connecter au RPi
1
Insérer la SD-card (ne pas alimenter le RPi)
2
Connecter le cable série entre le PC et le RPi
la commande screen /dev/ttyUSB0 115200 dans un terminal pour
se connecter
3
115200 est le baudrate coté RPi
sortir de l’utilitaire screen : touches [ctrl-a] puis [k]
4
alimenter le Rpi (les messages du noyau apparaissent, puis le login
après les 60s de timeout du DHCP)
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
11 / 84
Raspberry
Tools : mount
système de fichier
un système de fichier = organise le stockage et la récupération de
l’information sous forme de fichiers nommés.
les partitions disques (disques dur, clé USB) sont des périphériques
nommés /dev/sda1, /dev/sda2, /dev/sdd2 ..
Montage d’un système de fichier
mount [partition] [dir]
monter une partition sur un répertoire
umount [partition] ou umount [dir]
démonter une partition
df
liste les systèmes de fichers montés
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
12 / 84
Raspberry
Tools : mount
/
boot/
lib/
heros_S2_ep03.avi
/ENSPS/
Presentation_R5.ppt
mnt/
Readme.txt
/dev/sda : Clef USB
Disque dur
mount −t auto /dev/sda/ /mnt/
/
/boot
/lib
/mnt
heros_S2_ep03.avi
/ENSPS/
Presentation_R5.ppt
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
13 / 84
Raspberry
Tools : divers
Tools
cat [file]
concatener des fichiers
mais ici affiche le contenu sur la sortie standard
less ou more
découpe le flux de la sortie standart en page
(touches : [b] page précedente, [space] suivante, [q] exit)
exemple : cat encyclopedie.txt | less
tar xf [archive]
décompresser une archive au format tar
sudo {-s}
exécute la commande en tant que root,
-s ouvre un shell root
dmesg
messages de debug du noyau linux
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
14 / 84
Raspberry
Tools : manipulation fichiers
cp [file] [file/dir]
copie le fichier dans un autre fichier ou répertoire
cp -r [rep] [rep]
copier un répetoire dans un autre
mv [file/dir] [file/dir]
déplacer un fichier/répertoire dans un autre fichier ou répertoire
rm [file]
effacer un fichier
rm -r [dir]
effacer un répertoire (recursif)
mkdir [dir]
créer un répertoire
cd [dir]
changer de répertoire (.. le répertoire parent)
pwd
affiche le répertoire courant
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
15 / 84
Raspberry
Tools : editeur de texte
Vi (vim) : vi filemame
touche [echap]
sortir du mode courant
touche [i] ou touche [R]
mode insertion ou remplcement
touche([echap]) :w
écrire le fichier
touche ([echap]) :x
sauver et quitter
touche ([echap]) :q!
forcer quitter
nano
plus classique. Menus via touche [ctrl] + lettre
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
16 / 84
Processeur ARM
Plan
1
Raspberry
2
Processeur ARM
Architecture ARM : principes
Jeu d’instruction et language assembleur ARM
3
Exceptions et Interruptions
Définition
Contrôleur d’interruptions et traitement
4
Gestion de la mémoire (pagination)
5
Les entrées-sorties (I/O)
I/O par port
I/O mappées en mémoire
6
Le temps : Horloge et Timers
L’horloge temps réel
Les timers
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
17 / 84
Processeur ARM
Architecture ARM : principes
Architecture ARM (Advance RISC Machine)
processeur RISC 32 bit
Reduced Instruction Set Computer ; instr. de taille fixe (32bits)
architecture ”load and store”
(opération arithmétique réalisable uniquement entre registres)
avantages : architecture épurée et fréquence d’exécution rapide
inconvénient : programme plus long (2x) que le même en CISC
populaire dans l’embarqué : lego mindstorm, nintendo DS ; apple
ipod,iphone (consommation électrique)
la société ARM
ne fabrique pas de processeurs mais les dessine !
vend des licences et ses dessins à des fondeurs
perçoit des royalties sur les processeurs vendus
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
18 / 84
Processeur ARM
Architecture ARM : principes
L’architecture externe du ARM
bus d’adresses 32 bits :
4Go de RAM possible ;
bus de données
(+ instruction : Archi. Van
Neumann)
2 lignes d’interruptions ;
nReset : réinitialisation ;
nRW : sélection
écriture/lecture
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
19 / 84
Processeur ARM
Architecture ARM : principes
Fonction d’un processeur (Central Processing Unit)
Exécution séquentielle d’instructions au travers d’un pipeline
Étapes du pipeline ARM7
Fetch Instruction
Decode
Execute
Loı̈c Cuvillon (TPS)
Fetch : Récupérer le code de
l’instruction à exécuter
Decode : Décode instruction et
registres à utiliser
(préparation des chemins de
données)
Execute : Exécution instruction
lecture registres ;
opération ;
écriture résultat registre ;
...
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
20 / 84
Processeur ARM
Architecture ARM : principes
Architecture Interne d’un processeur
Single Core CPU
Address bus
R1
Data bus
R2
Memory
R3
Decode
IR
...
A
and Control Unit
Bus source
selection
PC
B
ALU
ALU operation mode
C
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Registres : stockage de
mots (16, 32, 64 bits
suivant architecture)
ALU : Unité Arithmétique
et Logique ;
+,-,*,/,ET,OU,XOR,
décalage,. . .
Unité de décodage et
commande : génération
signaux de commande
(opération ALU, routage
des bus A,B et C).
Bus mémoire :
Année scolaire 2010-2015
21 / 84
Processeur ARM
Architecture ARM : principes
Architecture Interne d’un processeur
Single Core CPU
Registres
Address bus
PC (R15) : Programme Counter
R1
R2
Data bus
R3
Decode
IR
...
A
B
ALU
ALU operation mode
C
Loı̈c Cuvillon (TPS)
and Control Unit
Bus source
selection
PC
Memory
adresse de l’instruction en
cours ;
incrémenté par le CPU ;
(ou IP, instruction pointer)
IR : mot de l’instruction en cours
R1,R2,R3.. R12 : registres à
usages généraux
CPSR : current program status
register
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
22 / 84
Processeur ARM
Architecture ARM : principes
CSPR register : Program status
mise à jour après chaque instruction
bits N, Z et V mis à jour suivant le résultat de l’instruction précédente
définit le mode d’opération du processeur
31 30
28
9
7
NZ CV
E
I
overflow
carry
zero
negative/less than
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
4
0
M[0:4]
Mode bits
IRQ Disable
Data endianness bit
Année scolaire 2010-2015
23 / 84
Processeur ARM
Jeu d’instruction et language assembleur ARM
ISA : Instruction Set Architecture
Jeu d’instructions d’un CPU
Langage machine
langage natif du processeur définit par les concepteurs
seul et unique pour un processeur
un code binaire
l’Assembleur (Assembly language) :
représentation symbolique du langage machine
usage de mnémoniques pour faciliter la vie du programmeur
→ non-portable (6= langage haut-niveau (C,java))
Exemple :
Saut d’adresse, ”branching” : B chez ARM et JMP chez INTEL
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
24 / 84
Processeur ARM
Jeu d’instruction et language assembleur ARM
ISA : Instruction Set Architecture
Instruction d’addition sur processeur ARM
doc technique : ADD Rd Rn Rm
Rd=Rn+Rm (Rd : registre destination)
31
28 26 25
21 20
c o n d 0 00 0 1 0 0 0
16
Rn
12
Rd
3
shift
0
Rm
Assembleur : ADD R3 R2 R3 − > Langage machine :0xE0823003
31
28 26 25
21 20
16
12
0
1 11 0 0 00 0 1 0 0 0 0 0 1 0 0 0 1 1 0 00 0 0 00 0 0 0 1 1
(cond=1110 signifie ”toujours exécuter”)
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
25 / 84
Processeur ARM
Jeu d’instruction et language assembleur ARM
Illustration : Réalisation d’une addition
PC initialisé à 100
initialisation par un autre programme (ou reset du CPU)
Memory
Single Core CPU
R1
Address bus
R2
R3
PC
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
Data bus
0x100
Read/Write
IR
0x200 : 0x0005
0x204 : 0x????
...
ALU
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
26 / 84
Processeur ARM
Jeu d’instruction et language assembleur ARM
Illustration : Réalisation d’une addition
Fetch de l’instruction par l’IFU (Instruction Fetch Unit)
adresse de l’instruction donnée par le PC
Memory
Single Core CPU
0x100
R1
Address bus
R2
LDR R2, 0x200
R3
PC
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
Data bus
0x100
IR
LDR R2, 0x200
R
Read/Write
0x200 : 0x0005
0x204 : 0x????
...
ALU
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
27 / 84
Processeur ARM
Jeu d’instruction et language assembleur ARM
Illustration : Réalisation d’une addition
fin du Fetch : code de l’instruction à exécuter dans IR
Décodage et préparation du chemin de données
Memory
Single Core CPU
R1
Address bus
R2
R3
PC
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
Data bus
0x100
IR
LDR
R2,0x200
Read/Write
0x200 : 0x0005
0x204 : 0x????
...
ALU
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
28 / 84
Processeur ARM
Jeu d’instruction et language assembleur ARM
Illustration : Réalisation d’une addition
Exécution de l’instruction LDR
LDR : load dans le registre Rx une donnée référencée ou une #constante
Single Core CPU
Memory
0x200
R1
R2
Address bus
0x0005
R3
PC
0x0005
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
Data bus
0x100
IR
LDR
R2,0x200
R
Read/Write
0x200 : 0x0005
0x204 : 0x????
...
ALU
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
29 / 84
Processeur ARM
Jeu d’instruction et language assembleur ARM
Illustration : Réalisation d’une addition
fin de l’instruction
Incrémentation du PC de 0x004 : pointe sur instruction suivante
Memory
Single Core CPU
R1
R2
Address bus
0x0005
R3
PC
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
Data bus
0x104
IR
LDR
R2,0x200
Read/Write
0x200 : 0x0005
0x204 : 0x????
...
ALU
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
30 / 84
Processeur ARM
Jeu d’instruction et language assembleur ARM
Illustration : Réalisation d’une addition
Fetch de l’instruction suivante
écrase le contenu de l’IR
Single Core CPU
Memory
0x104
R1
R2
Address bus
0x0005
R3
PC
LDR R3, #2
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
Data bus
0x104
IR LDR R3, #2
R
Read/Write
0x200 : 0x0005
0x204 : 0x????
...
ALU
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
31 / 84
Processeur ARM
Jeu d’instruction et language assembleur ARM
Illustration : Réalisation d’une addition
Décode et Exécute l’instruction
LDR : load dans le registre Rx une donnée référencée ou une #constante
Memory
Single Core CPU
R1
Address bus
R2
0x0005
R3
0x0002
PC
0x104
IR LDR R3, #2
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
Data bus
Read/Write
0x200 : 0x0005
0x204 : 0x????
...
ALU
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
32 / 84
Processeur ARM
Jeu d’instruction et language assembleur ARM
Illustration : Réalisation d’une addition
fin de l’instruction : Incrémente de 0x004 le PC
Fetch de l’instruction suivante
Memory
Single Core CPU
0x108
R1
Address bus
R2
0x0005
R3
0x0002
PC
0x108
IR
ADD R3,R2,R3
ADD R3, R2, R3
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
Data bus
R
Read/Write
0x200 : 0x0005
0x204 : 0x????
...
ALU
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
33 / 84
Processeur ARM
Jeu d’instruction et language assembleur ARM
Illustration : Réalisation d’une addition
exécution de l’instruction
ADD Rdest,Ra,Rb : addition Rdest<=Rb+Ra
Memory
Single Core CPU
R1
Address bus
R2
0x0005
R3
0x000 7
PC
0x108
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
Data bus
Read/Write
IR
ADD
R3,R2,R3
0x200 : 0x0005
0x204 : 0x????
...
0x05
0x02
ALU
Loı̈c Cuvillon (TPS)
+
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
34 / 84
Processeur ARM
Jeu d’instruction et language assembleur ARM
Illustration : Réalisation d’une addition
Fin instruction : incrémente le PC
Fetch instruction suivante
Memory
Single Core CPU
0x10C
R1
Address bus
R2
0x0005
R3
0x0007
PC
0x10C
IR R3,0x204
STR
STR R3,0x204
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
Data bus
Read/Write
0x200 : 0x0005
0x204 : 0x????
...
ALU
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
35 / 84
Processeur ARM
Jeu d’instruction et language assembleur ARM
Illustration : Réalisation d’une addition
Exécution de l’instruction
STR Rd Add : sauve contenu de Rd à l’adresse Add
Memory
Single Core CPU
0x204
R1
Address bus
R2
0x0005
R3
0x0007
PC
0x10C
IR R3,0x204
STR
0x0007
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
Data bus
W
Read/Write
0x200 : 0x0005
0x204 : 0x0007
...
ALU
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
36 / 84
Processeur ARM
Jeu d’instruction et language assembleur ARM
Le pipeline d’exécution
exécution en parallèle d’1 Fetch, 1 Décode et 1 Exécution
→ accélération du débit d’exécution : 1 exécution d’instruction/cycle
(alors que le traitement d’une instruction : 3 cycles)
Fetch de l’instruction pointée par PC+08 pendant exécution de PC
R1
Address bus
PC
R2
Data bus
LDR R2, #6
R3
Bus source
selection
PC
Decode
...
A
B
R3
R1
ALU
and Control Unit
(Inst.addr: PC−0x08)
IR
ADD R3, R3, R1
ADD R2, R2, R1
Fetch
Decode
Execute
Fetch
Decode
Execute
Fetch
Decode
LDR R2, #6
ALU operation mode
(Inst.addr: PC)
C
1 cycle
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Execute
temps
1 cycle
1 cycle
Année scolaire 2010-2015
37 / 84
Exceptions et Interruptions
Plan
1
Raspberry
2
Processeur ARM
Architecture ARM : principes
Jeu d’instruction et language assembleur ARM
3
Exceptions et Interruptions
Définition
Contrôleur d’interruptions et traitement
4
Gestion de la mémoire (pagination)
5
Les entrées-sorties (I/O)
I/O par port
I/O mappées en mémoire
6
Le temps : Horloge et Timers
L’horloge temps réel
Les timers
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
38 / 84
Exceptions et Interruptions
Définition
Exceptions (et Interruptions)
Définition d’une exception
arrêt temporaire du flux normal d’instructions pour répondre à un
événement exceptionnel ou externe
Exception synchrone (”Exception”) : résultat d’une instruction exécutée
par le processeur générant une erreur
arithmétique : division par 0, débordement (overflow)
mémoire : erreur d’alignement, mémoire insuffisante, erreur manipulation
pointeur
appel système (LINUX) : par l’instruction INT 0x80, une application requiert
un service de l’OS.
Exception asynchrone (”Interruption”) : associée à un événement issu
d’un périphérique
timers : expiration d’un timer ou un tick (période) d’horloge système
autres périphériques : touche clavier, clic souris, paquet ethernet,. . .
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
39 / 84
Exceptions et Interruptions
Définition
Interruption
Interruption matérielle
interruption : un signal sur la broche (INT) du CPU
déclenchant l’exécution d’une routine en réponse
(ISR : Interrupt Service Routine)
é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 (TPS)
Entrée−Sortie programmée avec interruption
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
40 / 84
Exceptions et Interruptions
Définition
Interruption
Exemple : Clavier PS2
si une touche est enfoncée ou relâchée
le contrôleur du clavier :
écrit dans un de ses registres le code de la touche
génère une interruption
le CPU notifié arrête le processus en cours et exécute une routine
d’interruption qui consiste à venir lire la valeur de la touche dans le
registre
interrupteur sur GPIO
Activation interrupt GPIO 7 :
echo 07 > /sys/class/gpio/export
echo rising > /sys/class/gpio/gpio7/edge
cat /proc/interrupts pour visualiser
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
41 / 84
Exceptions et Interruptions
Contrôleur d’interruptions et traitement
Contrôleur d’interruptions
Gestion des interruptions
plusieurs périphériques et interruptions (éventuellement simultanées)
le CPU ne peut exécuter qu’un ISR à la fois
problème de concurrence
solution : un contrôleur d’interruption
priorités pour les interruptions (arbitrage de la concurrence)
interruption présentée une à la fois au CPU
masquer les interruptions non-prioritaires mais les mémoriser (buffer)
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
42 / 84
Exceptions et Interruptions
Contrôleur d’interruptions et traitement
Contrôleur d’interruptions
Un contrôleur programmable d’interruptions (PIC) : le 8259
utilisé par le PC IBM et ses successeurs, peut être mis en cascade
priorité par ordre décroissant (0(+prioritaire),2,...,7(-))
3 registres :
1 contenant l’interruption actuellement traitée par le CPU
1 contenant les interruptions pas encore traitées (de priorité inférieure)
1 contenant les interruptions à masquer (celle dont le CPU ne veut pas)
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
Source : Architecture des ordinateurs, Tanenbaum
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
43 / 84
Exceptions et Interruptions
Contrôleur d’interruptions et traitement
Vecteur d’interruption
1 exception = 1 routine ISR à une adresse mémoire donnée
(cette adresse est appellée le vecteur d’interruption)
le numéro d’exception/interruption sert d’indice dans la table des
vecteurs d’interruption pour trouver l’adresse mémoire où se trouve
l’ISR
Exemple sur architecture i386
un registre du processeur IDTR (INT Descriptor Table Register) stocke en
permanence l’adresse en mémoire de la table des vecteurs d’interruption
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
44 / 84
Exceptions et Interruptions
Contrôleur d’interruptions et traitement
Exception et interruption
Traitement complet
1
2
3
4
5
sauvegarde du contexte,l’état actuel du processeur ;
(souvent, dans la pile d’exécution de la tache en cours)
chargement du vecteur d’interruption (adresse ISR) dans le registre PC
exécution de l’ISR
recharger contexte antérieur (état du processeur avant INT)
reprise exécution du programme
traitement rapide, changement de contexte minimal effectué par le
matériel
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
45 / 84
Exceptions et Interruptions
Contrôleur d’interruptions et traitement
Traitement de l’interruption
interruption la plus élevée présentée sur broche INT du CPU
le traitement d’une exception synchrone est similaire
Single Core CPU
R1, R2, ....
PC
Memory
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
Address bus
0x108
...
IR LDR R3,#2
Data bus
0x200 : 0x0005
0x204 :
IDTR 0xFF00
SP
0x404
...
INT
...
4
PIC
4
7
Périph.
Pile du processus en cours
0x400: 0x0003
0x404: 0x040
...
ALU
...
Table des vecteurs d’int
0xFF00: 0x844
...
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
46 / 84
Exceptions et Interruptions
Contrôleur d’interruptions et traitement
Traitement de l’interruption
PC du processus interrompu poussé sur la pile par le matériel
adresse de sommet de la pile stockée dans registre SP
Single Core CPU
Memory
SP+0x04: 0x408
R1, R2, ....
PC
Address bus
0x108
PC: 0x108
...
IR LDR R3,#2
Data bus
0x200 : 0x0005
0x204 :
IDTR 0xFF00
SP
0x40 8
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
...
INT
...
4
PIC
4
7
Périph.
Pile du processus en cours
0x400: 0x0003
0x404: 0x040
0x408: 0x108 (PC)
...
ALU
...
Table des vecteurs d’int
0xFF00: 0x844
...
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
47 / 84
Exceptions et Interruptions
Contrôleur d’interruptions et traitement
Traitement de l’interruption
table des vecteurs d’int. stockée à l’adresse contenue dans IDTR
cherche dans la table, l’entrée du numéro d’INT (4)
Single Core CPU
Memory
IDTR+(0x4)* 4
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
0xFF10
R1, R2, ....
PC
Address bus
0x108
...
IR LDR R3,#2
Data bus
0x200 : 0x0005
0x204 :
IDTR 0xFF00
SP
0x40 8
...
INT
...
4
PIC
4
7
Périph.
Pile du processus en cours
0x400: 0x0003
0x404: 0x040
0x408: 0x108 (PC)
...
ALU
Table
... des vecteurs d’int
0xFF00: 0x844
...
0xFF10: 0x64C
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
No
0
1
...
4
Année scolaire 2010-2015
48 / 84
Exceptions et Interruptions
Contrôleur d’interruptions et traitement
Traitement de l’interruption
l’entrée contient le vecteur d’int. (adresse du gestionnaire de l’int.(ISR))
PC <= vecteur d’interruption
Single Core CPU
Memory
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
0xFF10
R1, R2, ....
Address bus
PC 0x1080x64C
0x64C
...
IR LDR R3,#2
Data bus
le vecteur d’INT:
adresse de l’ISR
IDTR 0xFF00
SP
0x40 8
INT
...
4
PIC
4
7
Périph.
0x200 : 0x0005
0x204 :
...
Pile du processus en cours
0x400: 0x0003
0x404: 0x040
0x408: 0x108 (PC)
...
0x64C: PUSH R1
ALU
...
(asm
x86)
0x670: IRET
Table
... des vecteurs d’int
0xFF00: 0x844
...
0xFF10: 0x64C
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
No
0
1
...
4
Année scolaire 2010-2015
49 / 84
Exceptions et Interruptions
Contrôleur d’interruptions et traitement
Traitement de l’interruption
exécution de l’ISR (l’instruction pointée par PC)
Single Core CPU
Memory
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
0x64C
R1, R2, ....
PC
Address bus
0x64C
IR PUSH R1
PUSH R1
...
Data bus
0x200 : 0x0005
0x204 :
IDTR 0xFF00
SP
0x40 8
...
...
INT
4
PIC
Périph.
7
Pile du processus en cours
0x400: 0x0003
0x404: 0x040
0x408: 0x108 (PC)
...
(pile utilisable par ISR)
0x64C: PUSH R1
ALU
...
0x670: IRET
Table
... des vecteurs d’int
0xFF00: 0x844
...
0xFF10: 0x64C
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
(asm
x86)
ISR code
No
0
1
...
4
Année scolaire 2010-2015
50 / 84
Exceptions et Interruptions
Contrôleur d’interruptions et traitement
Traitement de l’interruption
dans l’ISR, accès au périphérique pour lever l’INT
ISR se finit par l’instruction IRET (x86)
Single Core CPU
R1, R2, ....
PC
0x670
IR
IRET
Memory
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
Address bus
IRET
...
Data bus
0x200 : 0x0005
0x204 :
IDTR 0xFF00
SP
0x40 8
...
...
INT
PIC
Périph.
7
Pile du processus en cours
0x400: 0x0003
0x404: 0x040
0x408: 0x108 (PC)
...
0x64C: PUSH R1
ALU
...
0x670: IRET
Table
... des vecteurs d’int
0xFF00: 0x844
...
0xFF10: 0x64C
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
(asm
x86)
ISR code
No
0
1
...
4
Année scolaire 2010-2015
51 / 84
Exceptions et Interruptions
Contrôleur d’interruptions et traitement
Traitement de l’interruption
IRET : reprendre le processus initial (PC<= valeur avant l’int.)
le PC initial en mémoire au sommet de la pile (adresse contenu dans SP)
Single Core CPU
Memory
0x408
R1, R2, ....
PC
0x108
IR
IRET
Address bus
0x108 (PC)
...
Data bus
0x200 : 0x0005
0x204 :
IDTR 0xFF00
SP
0x408
...
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
...
INT
PIC
Périph.
7
Pile du processus en cours
0x400: 0x0003
0x404: 0x040
0x408: 0x108 (PC)
...
0x64C: PUSH R1
ALU
...
0x670: IRET
Table
... des vecteurs d’int
0xFF00: 0x844
...
0xFF10: 0x64C
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
(asm
x86)
ISR code
No
0
1
...
4
Année scolaire 2010-2015
52 / 84
Exceptions et Interruptions
Contrôleur d’interruptions et traitement
Traitement de l’interruption
SP pointe vers le nouveau sommet de la pile
le processus peut reprendre (mais il reste l’int 7 à traiter)
Single Core CPU
Memory
0x100 : LDR R2, 0x200
0x104 : LDR R3, #2
0x108 : ADD R3, R2, R3
0x10C : STR R3, 0x204
0x108 ?
R1, R2, ....
PC
0x108
IR
IRET
Address bus
...
Data bus
0x200 : 0x0005
0x204 :
IDTR 0xFF00
SP
0x40 4
...
...
INT
PIC
Périph.
7
Pile du processus en cours
0x400: 0x0003
0x404: 0x040
0x408:
0x108
...
0x64C: PUSH R1
ALU
...
0x670: IRET
Table
... des vecteurs d’int
0xFF00: 0x844
...
0xFF10: 0x64C
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
(asm
x86)
ISR code
No
0
1
...
4
Année scolaire 2010-2015
53 / 84
Gestion de la mémoire (pagination)
Plan
1
Raspberry
2
Processeur ARM
Architecture ARM : principes
Jeu d’instruction et language assembleur ARM
3
Exceptions et Interruptions
Définition
Contrôleur d’interruptions et traitement
4
Gestion de la mémoire (pagination)
5
Les entrées-sorties (I/O)
I/O par port
I/O mappées en mémoire
6
Le temps : Horloge et Timers
L’horloge temps réel
Les timers
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
54 / 84
Gestion de la mémoire (pagination)
Problématique d’un système multi-tâche
Des processus mais 1 mémoire : Et si la place est occupée ?
code dépendant de sa position en mémoire
(adresses absolues des données)
Main Memory (RAM)
Secondary Memory
(Hard Disk Drive)
0x00
0x08
./prog
ELF Header
08 4F E1 C5
@start_: 0x18
4F 23 A3 00
Programm Header
0x10
section
memory addr
0x18
movl 0x30 , %eax
.text
0x18
.data
0x30
0x20
movl $0x32, %ebx
addl (%ebx), %eax
0x28
0x30
0x38
movl 0x30, %eax
movl $0x32, %ebx
compl %edx, $0
jne 0x08
movl $1, %eax
movl $2, %ebx
subs %eax, %edx
addl (%ebx), %eax
?
0e 00 00 00
07 00 00 00
0x3F
.text
.data
./program2
./program3
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
55 / 84
Gestion de la mémoire (pagination)
Gestion de la mémoire
000
000
10K
Processus H
70K
Processus H
Problématique de la
réallocation dynamique
comment positionner les
processus en mémoire ?
comment obtenir un bloc
contigüe pour un malloc
sans retasser ?
(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
1M
Mémoire après un temps
de fonctionnement
Retassement par réallocation
dynamique
2 solutions possibles utilisant une translation d’adresse :
la segmentation
la pagination
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
56 / 84
Gestion de la mémoire (pagination)
La pagination :Principe
1
1 table de correspondance entre :
adresse logique (@logique/virtuelle) du Code/Data dans l’executable ELF
adresse physique (@physique) où il est effectivement en mémoire
Memoire Physique (RAM)
Processus
Mémoire Logique/Virtuelle
@logique
@physique
0x00
0x04
0x00
0x00
Processus A
0x08
0x08
0x08
0x10
0x14
0x18
0x18
movl 0x30, %eax
0x20
movl $0x32, %ebx
addl (%ebx), %eax
0x1C
0x20
0x2C
0x30
0x34
0x38
0x3C
0e 00 00 00
07 00 00 00
0x38
0x3C
Loı̈c Cuvillon (TPS)
0x18
0x3F
movl 0x30, %eax
movl $0x32, %ebx
Processus B
0x10
0x14
0x20
0x20
addl (%ebx), %eax
0x28
0x24
0x28
0x28
0x30
0x10
0x0C
0x10
Processus B
0x30
0x38
0x3C
0x38
0e 00 00 00
0x3C
07 00 00 00
0x3F
Chargmement du programme et céation table correspondance
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
57 / 84
Gestion de la mémoire (pagination)
La pagination : Principe
1
Translation d’adresse pour toute lecture/ecriture d’un code/donnée
(Exemple : Fetch de la première instruction du programme)
@logique
Memoire Physique (RAM)
@physique
0x00
0x04
EAX
Processus A
0x08
EBX
0x18
ECX
PC
0x00
0x18
@start_: 0x18
0x08
0x0C
0x10
0x10
0x10
0x14
0x18
0x10
0x1C
0x20
0x14
0x20
0x24
0x28
0x2C
0x30
0x34
0x38
0x3C
Loı̈c Cuvillon (TPS)
0x18
0x20
0x28
0x38
0x3C
0x30
movl 0x30, %eax
movl $0x32, %ebx
Processus B
addl (%ebx), %eax
Processus A
Processus B
0x38
0e 00 00 00
0x3C
07 00 00 00
Systèmes temps réel et systèmes embarqués
0x3F
Année scolaire 2010-2015
58 / 84
Gestion de la mémoire (pagination)
La pagination : Principe
1
Translation d’adresse pour toute lecture/ecriture d’un code/donnée
(Exemple : lecture d’un opérande)
@logique
Memoire Physique (RAM)
@physique
0x00
0x04
EAX
Processus A
0x08
EBX
0x30
movl 0x30,%eax
PC
0x00
0x18
0x08
0x0C
0x10
0x38
0x10
0x14
0x18
0x10
0x1C
0x20
0x14
0x20
0x18
0x20
0x24
0x28
0x2C
0x30
0x34
0x38
0x3C
Loı̈c Cuvillon (TPS)
Read
0x38
0x3C
0x28
0x30
movl 0x30, %eax
movl $0x32, %ebx
Processus B
addl (%ebx), %eax
Processus A
Processus B
0x38
0e 00 00 00
0x3C
07 00 00 00
Systèmes temps réel et systèmes embarqués
0x3F
Année scolaire 2010-2015
59 / 84
Gestion de la mémoire (pagination)
La pagination
Déplacement de code/donnée en mémoire physique
1
déplacement et mise-à-jour table
@logique
EAX
EBX
PC
Memoire Physique (RAM)
@physique
0x00
0x04
0x00
0x08
0x08
0x0C
0x10
0x10
Processus A
0x14
0x18
0x10
0x08
0x1C
0x20
0x14
0x20
0x0C
0x18
0x20
0x24
0x28
0x2C
0x30
0x34
0x38
0x3C
Loı̈c Cuvillon (TPS)
Read
0x38
0x3C
0x28
0x30
movl 0x30, %eax
movl $0x32, %ebx
Processus B
addl (%ebx), %eax
Processus A
Processus B
0x38
0e 00 00 00
0x3C
07 00 00 00
Systèmes temps réel et systèmes embarqués
0x3F
Année scolaire 2010-2015
60 / 84
Gestion de la mémoire (pagination)
La pagination
Avantage
programme utilise des @virtuelles contigües
↔ à des adresses physiques non-contiguë
déplacement en RAM du code/données
= quelques ligne de la table à updater.
Inconvéniant
la table de correspondance aussi grande que la mémoire physique RAM !
(si une adresse=32bits)
gestion lourde de la mémoire
Solution
Déplacement du code/donnée par paquet de 2, 4, ou 2n octets
Table de correspondance entre @logique et @physique du paquet
Taille de la Table divisée par 2, 4 ou 2n → gestion plus légère
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
61 / 84
Gestion de la mémoire (pagination)
La pagination
Table de pages
blocs (ici de tailles 23 octets) sont appellés pages
Processus
Mémoire Logique/Virtuelle
Numéro
de page
Memoire Physique (RAM)
0x00
0x00
0
0x08
1
Page
virtuelle
2
0
1
2
3
4
5
6
7
0x10
0x18
movl 0x30, %eax
0x20
movl $0x32, %ebx
addl (%ebx), %eax
0x28
0x30
3
4
5
0e 00 00 00
07 00 00 00
6
0x38
0x3C
Loı̈c Cuvillon (TPS)
7
Processus A
Table des pages
Page
physique
0x08
0x10
0x18
2
4
7
0x20
movl 0x30, %eax
movl $0x32, %ebx
Processus B
addl (%ebx), %eax
2
3
4
5
Processus B
0x38
0e 00 00 00
0x3C
07 00 00 00
Systèmes temps réel et systèmes embarqués
0
1
0x28
0x30
Numéro
de page
6
7
Année scolaire 2010-2015
62 / 84
Gestion de la mémoire (pagination)
La pagination : Mémoire virtuelle
Mémoire virtuelle
Possible de ne charger que le début du programme si manque de place
Un bit indique dans la table si la page est chargée ou non
Processus
Mémoire Logique/Virtuelle
Numéro
de page
0x00
0
0x08
1
0x10
2
0x18
movl 0x30, %eax
0x20
movl $0x32, %ebx
addl (%ebx), %eax
0x28
0x30
3
4
5
0e 00 00 00
07 00 00 00
6
0x38
0x3C
Loı̈c Cuvillon (TPS)
7
Memoire Physique (RAM)
Table des pages
Page
virtuelle
0
1
2
3
4
5
6
7
Page
physique
0x00
0x08
0x10
0x18
2
7
1
0
1
1:page présente
0:page absente
0x20
0x28
0x30
Processus A
0
Processus A
1
movl 0x30, %eax
movl $0x32, %ebx
2
Processus B
3
Processus A
4
Processus B
5
Processus B
6
0x38
0e 00 00 00
0x3C
07 00 00 00
Systèmes temps réel et systèmes embarqués
Numéro
de page
7
Année scolaire 2010-2015
63 / 84
Gestion de la mémoire (pagination)
La pagination : Mémoire virtuelle
Mémoire virtuelle : besoin de charger la suite ?
la page non chargée mise temporairement sur une mémoire secondaire
Table des pages
Page
virtuelle
Memoire Physique (RAM)
Page
physique
0x00
0
1
0x08
2
3
4
5
6
0x10
2
7
1
0
0x18
1
0x20
7
1:page présente
0:page absente
addl (%ebx), %eax
Loı̈c Cuvillon (TPS)
(3)
Processus A
0
Processus A
1
movl 0x30, %eax
movl $0x32, %ebx
0x28
Memoire Secondaire
(Disque Dur)
0x30
2
Processus B
3
Processus A
4
Processus B
5
Processus B
6
0x38
0e 00 00 00
0x3C
07 00 00 00
Systèmes temps réel et systèmes embarqués
Numéro
de page
7
Année scolaire 2010-2015
64 / 84
Gestion de la mémoire (pagination)
La pagination : Mémoire virtuelle
Mémoire virtuelle : besoin de charger la suite ?
un programme demon (kswapd sous linux) libère des pages :
si un programme requiert une page non chargée (”défaut de page”)
si la mémoire est presque pleine (retire vieilles pages)
Table des pages
Page
virtuelle
Memoire Physique (RAM)
Page
physique
0x00
0
1
0x08
2
3
4
5
6
0x10
2
7
1
0
0x18
0x20
1
7
1:page présente
0:page absente
addl (%ebx), %eax
Memoire Secondaire
(Disque Dur)
0x28
Numéro
de page
Processus A
0
Processus A
1
movl 0x30, %eax
movl $0x32, %ebx
2
Processus B
3
Processus A
4
Processus B
5
Processus B
6
Kswapd
0x30
(3)
0x38
0e 00 00 00
0x3C
07 00 00 00
7
swap area
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
65 / 84
Gestion de la mémoire (pagination)
La pagination : Mémoire virtuelle
Mémoire virtuelle : besoin de charger la suite ?
chaque processus a sa table de pages
on met à jour les 2 pages de tables
Table des pages de B
Table des pages
Page
virtuelle
Page
physique
Page
virtuelle
Memoire Physique (RAM)
Page
physique
0x00
0
1
0
1
5
2
2
6
1
1
1
3
4
3
0
1
5
6
3
4
5
6
2
3
7
1
0x08
7
7
1:page présente
0:page absente
1:page présente
0:page absente
Memoire Secondaire
(Disque Dur)
Processus A
0
Processus A
1
0x10
movl 0x30, %eax
movl $0x32, %ebx
0x18
addl (%ebx), %eax
0x20
0x28
0x30
Numéro
de page
2
3
Processus A
4
Processus B
5
Processus B
6
0x38
0e 00 00 00
0x3C
07 00 00 00
7
Processus B
swap area
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
66 / 84
Gestion de la mémoire (pagination)
La pagination : Mémoire virtuelle
Avantages
Code et Données du programme dynamiquement relogeables en
mémoire
Mémoire virtuelle : Taille des programmes en cours > taille de la mémoire
Utilisation du disque comme stockage secondaire
Inconvéniants
Une architecture plus complexe : nécessite une unité spécifique pour
gérer la table de pages et faire les calculs d’adresses
Temps d’accès non déterministe à la mémoire : si la page requise n’est
pas en mémoire mais sur le disque (page default)
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
67 / 84
Gestion de la mémoire (pagination)
Unité de Gestion de la mémoire (MMU)
circuit imprimé distinct ou inclus dans le processeur
dédié aux traductions d’adresse par segmentation ou pagination
une logique importante (jusqu’à 30% de la surface du processeur)
au niveau matériel, elle contient :
logique de conversion des adresses virtuelles en adresses physiques
logique de vérification de la validité de l’adresse (sinon segfault) ou
disponibilité de la page en RAM.
mémoire cache associative TLB (Translation Lookaside Buffer) contenant la
portion la + utilisée de la table des pages (réduit les accès plus lent à la
table de pages en RAM.)
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
68 / 84
Les entrées-sorties (I/O)
Plan
1
Raspberry
2
Processeur ARM
Architecture ARM : principes
Jeu d’instruction et language assembleur ARM
3
Exceptions et Interruptions
Définition
Contrôleur d’interruptions et traitement
4
Gestion de la mémoire (pagination)
5
Les entrées-sorties (I/O)
I/O par port
I/O mappées en mémoire
6
Le temps : Horloge et Timers
L’horloge temps réel
Les timers
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
69 / 84
Les entrées-sorties (I/O)
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 (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
70 / 84
Les entrées-sorties (I/O)
Entrées-sorties
interaction entre CPU et périphériques (monde externe)
entre registres du contrôleur d’un périph. et le CPU
2 stratégies : adressage par port dédié ou par mappage en mémoire
0xFFFF
0xFFFF
mémoire
mémoire
0xF140
Plage réservée
I/O
physique
physique
0
I/O ports
I/O registres par adresse de port
Loı̈c Cuvillon (TPS)
0xF400
0x6E
0
0
I/O registres mappées en mémoire
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
71 / 84
Les entrées-sorties (I/O)
I/O par port
I/O par port
broche I/O du CPU active − > @ sur le bus = @ d’un port (et non
mémoire)
instructions lecture/écriture : IN, OUT (asm) ou inb,outb (en C)
adresses de ports liées à la conception de la carte mère
cat /proc/ioport permet de lister les ports existants
CPU
Address Bus
0x3F8
NorthBridge
IO/M
Memory
I/O
S I/O controller
Serial
Port
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
72 / 84
Les entrées-sorties (I/O)
I/O par port
I/O par port
Exemple : port
parallèle
12 broches sortie
et 5 broches en entrée
le niveau électrique de
la broche
= la valeur du bit du
registre
(source :
linux device drivers, 3eme edition)
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
73 / 84
Les entrées-sorties (I/O)
I/O par port
I/O par port
#define PORT 0x378
main{
ioperm(PORT,2,1);
//demande accès (1=accès on)
//à 2 octets à partir
// de l’@ de port PORT
0 0 0 0 0 0 0 1
2
outb(0x1,PORT);
//ecriture sur port
//de la valeur 1
+
−
}
(source : linux device drivers, 3eme edition)
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
74 / 84
Les entrées-sorties (I/O)
I/O mappées en mémoire
I/O mapping
des @ mémoires physiques sont détournées par la carte mère vers des
registres des périphériques
mémoire pas accessible sur ces adresses
sur architecture intel 32 bits :
la plage ≈ 3.5Go − >4Go réservée pour I/O
si plus de 3.5 Go installés, cette RAM est inutilisable (non adressable)
TOLUD<0xFF4A<0xFFFF
CPU
Address Bus
0xFFFF
0xFF4A
NorthBridge
Memory
Data Bus
0x0000
PCI device controller
South
bridge
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
75 / 84
Les entrées-sorties (I/O)
I/O mappées en mémoire
I/O mapping
adresses physiques réservés aux I/O
voir la documentation de la carte-mère ou du Soc.
cat /proc/iomem : liste les zones mémoires réservées
lspci -v : liste périphériques pci et adresses physiques des registres
mappés (et port)
accès et lecture/ecriture (Drivers Linux)
Le noyau et les processus utilisent des @ virtuelles et non physiques !
(void*)add_virtuel ioremap( (void*)add_phys, length)
demande une @ virtuelle mappée/correspondant à l’@ physique
lecture écriture ensuite avec :
ioread((void*)add_virtuel) et iowrite(value,(void*))
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
76 / 84
Les entrées-sorties (I/O)
I/O mappées en mémoire
I/O mapping
accès et lecture/ecriture (Process utilisateur)
Le périhérique /dev/mem est une image de la mémoire physique (RAM)
(void*) mmap(NULL, length, , ,fd, offset)
demande une @ virtuelle mappée/correspondant à l’@ offset de la
mémoire/fichier fd
lecture et écriture via le pointeur dans mémoire/registre du périphérique
length et offset doivent être des multiples de la taille des pages
avantage : accès direct à la mémoire (mémoire périphérique)
risque : accès non protégé et concurrent possible.
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
77 / 84
Les entrées-sorties (I/O)
I/O mappées en mémoire
I/O mapping
Exemple avec les gpios du RPi
D’après /proc/iomem et la doc du Soc :
Adresse phy
0x20200000
0x2020001C
0x20200028
0x20200034
Description
GPIO function select0
GPIO Pin Output Set 0
GPIO Pin Output Clear 0
GPIO Pin Level 0
Size
32
32
32
32
RW
RW
W
W
R
GPIO Pin Output Set : chaque bit représente un GIPO, un bit écrit à 1
allume le GPIO
GPIO Pin Output Clear : idem mais met à 0 le GPIO
voir exemple gpio_direct.c
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
78 / 84
Les entrées-sorties (I/O)
I/O mappées en mémoire
I/O par ports et mappées en mémoire
Comparatif
I/O port
+ adressage séparé : plage
d’adresses mémoires complète
+ si CPU a 1 petit bus d’adresses
+ instruction spécifique : lisibilité
code
- hardware supplémentaire
(logique + broche CPU)
Loı̈c Cuvillon (TPS)
I/O mappée en mémoire
+pas de logique pour les ports sur
CPU (prix,simplicité)
+même instruction qu’un accès
mémoire (RISC)
-occupe des adresses mémoires
(où il peut y avoir de la RAM)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
79 / 84
Le temps : Horloge et Timers
Plan
1
Raspberry
2
Processeur ARM
Architecture ARM : principes
Jeu d’instruction et language assembleur ARM
3
Exceptions et Interruptions
Définition
Contrôleur d’interruptions et traitement
4
Gestion de la mémoire (pagination)
5
Les entrées-sorties (I/O)
I/O par port
I/O mappées en mémoire
6
Le temps : Horloge et Timers
L’horloge temps réel
Les timers
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
80 / 84
Le temps : Horloge et Timers
La gestion du temps
Planification d’actions dans le futur
travaux périodiques (réordonnancement des tâches, pooling)
travaux à échéances (timer décrémenté jusque 0)
Timers
matériels : composant électronique (quartz), générateur d’INT, µs.
logiciels : registres décrémentés, réduction charge processeur
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
81 / 84
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 (TPS)
Puce southbridge (RTC inclus)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
82 / 84
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 ix86
incrémentation de 1 à chaque signal d’horloge CPU
190 ans pour le remplir à 3GHz, résolution : nanosecondes (ns)
accessible par une instruction processeur (asm) ”RDTSC”
Loı̈c Cuvillon (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
83 / 84
Le temps : Horloge et Timers
Les timers
Timers
Linux : usage des timers
variable kernel jiffies
variable 32 bits
incrémentée à chaque interruption timer
(pour linux, à défini à la compilation du kernel)
utilisée par le noyau et pour la fréquence de réordonnancement des threads
usage noyau : void init timer (struct timer list* timer) et scheduler tick()
usage user : clock gettime()
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 (TPS)
Systèmes temps réel et systèmes embarqués
Année scolaire 2010-2015
84 / 84
Téléchargement