• Aucun résultat trouvé

Syst `emes temps r ´eel et syst `emes embarqu ´es Architecture des ordinateurs

N/A
N/A
Protected

Academic year: 2022

Partager "Syst `emes temps r ´eel et syst `emes embarqu ´es Architecture des ordinateurs"

Copied!
84
0
0

Texte intégral

(1)

Syst `emes temps r ´eel et syst `emes embarqu ´es

Architecture des ordinateurs

Lo¨ıc Cuvillon

Telecom Physique Strasbourg

11 novembre 2015

(2)

Sommaire

1 Raspberry

2 Processeur ARM

Architecture ARM : principes

Jeu d’instruction et language assembleur ARM

3 Exceptions et Interruptions D ´efinition

Contr ˆoleur d’interruptions et traitement

4 Gestion de la m ´emoire (pagination)

5 Les entr ´ees-sorties (I/O) I/O par port

I/O mapp ´ees en m ´emoire

6 Le temps : Horloge et Timers L’horloge temps r ´eel Les timers

(3)

Bibliographie

Bibliographie

Architecture :

Architecture de l’ordinateur, 5 `eme ´edition, Andrew Tanenbaum, Pearson education, 2005.par le cr ´eateur de l’OS Minix

Documentation technique :

Intel Architecture Software Developer’s Manuel ARM Architecture Reference Manual

(4)

Bibliographie

Little/Big Endian

Petit/Gros boutiste( ´etymologie : voyage de Gulliver)

exemple : la valeur 433=0x01B1 n ´ecessitant 2 octets en m ´emoire Big endian : most significant bit (MSB : 01h) en premier

Little Endian : lest significant bit (LSB : B1h) en premier

Little-Endian (x86,arm) adresse m ´emoire 00 01

B1 01

Big-Endian (powerpc,arm,mips) adresse m ´emoire 00 01

01 B1

Protocole IP : big endian (pour tous, interop ´erabilit ´e)

(5)

Raspberry

Plan

1 Raspberry

2 Processeur ARM

Architecture ARM : principes

Jeu d’instruction et language assembleur ARM

3 Exceptions et Interruptions D ´efinition

Contr ˆoleur d’interruptions et traitement

4 Gestion de la m ´emoire (pagination)

5 Les entr ´ees-sorties (I/O) I/O par port

I/O mapp ´ees en m ´emoire

6 Le temps : Horloge et Timers L’horloge temps r ´eel Les timers

(6)

Raspberry

Hardware

System on chip (Soc) ARM/GPU + SDRAM, DMA, MMU, GPIO, UART

(7)

Raspberry

Gpio

GPIO : General Purpose Input Output

configurable en entr ´ee ou sortie niveau binaire : 0 - 3.3 Volt peut produire une interruption pas de CNA/CAN disponible (mais un PWM)

GPIO particuliers

Liaison s ´erie RS232 (RX,TX) I2C (SDA/SCL)

SPI(MOSI, MISO)

(8)

Raspberry

RS-232

RS232 :

une norme de liaison s ´erie

3 fils : GND, Transmission (Tx), Reception (Rx)

bit 0 = niveau haut +3 `a +15V bit 1 = niveau bas -15V Communication null-modem : Periph 1 P ´eriph 2

GND ↔GND

TX ↔ RX

RX ↔ TX

utilise un UART baudrate = d ´ebit en symboles/seconde (<bits/seconde)

UART

composant qui serialise les donn ´ees

frame standard : 1 bit de start `a 0 8 bits (l’octet de data) 1 bit de parit ´e (ou non) 1 bit de fin `a 1 (ou 2 bits)

(9)

Raspberry

BerrylClip

Carte Berryclip+

Connexion haut-parleur, leds, interrupteurs sur les GPIOs

(Haut−parleur)

Pins

(10)

Raspberry

Connexion au RPI via la liaison s ´erie

Un adaptateur USB RS232 3.3V TTL

conversion niveau RS232 vers 0-3.3V du Rpi

+ emulation d’un port s ´erie pour les PC r ´ecents via/dev/ttyUSB0

7 1

13 Berryclip Pins

(11)

Raspberry

Connexion au RPI via la liaison s ´erie

le RPi par d ´efaut ouvre un terminal sur son port s ´erie login/passwd : pi/raspberry

Se connecter au RPi

1 Ins ´erer la SD-card (ne pas alimenter le RPi)

2 Connecter le cable s ´erie entre le PC et le RPi

3 la commandescreen /dev/ttyUSB0 115200dans un terminal pour se connecter

115200 est le baudrate cot ´e RPi

sortir de l’utilitairescreen: touches [ctrl-a] puis [k]

4 alimenter le Rpi (les messages du noyau apparaissent, puis le login apr `es les 60s de timeout du DHCP)

(12)

Raspberry

Tools : mount

syst `eme de fichier

un syst `eme de fichier = organise le stockage et la r ´ecup ´eration de l’information sous forme de fichiers nomm ´es.

les partitions disques (disques dur, cl ´e USB) sont des p ´eriph ´eriques nomm ´es/dev/sda1,/dev/sda2,/dev/sdd2..

Montage d’un syst `eme de fichier

mount [partition] [dir]

monter unepartitionsur un r ´epertoire umount [partition]ouumount [dir]

d ´emonter une partition df

liste les syst `emes de fichers mont ´es

(13)

Raspberry

Tools : mount

/ boot/

lib/

mnt/

Readme.txt

/ /boot /lib /mnt

heros_S2_ep03.avi /ENSPS/

Presentation_R5.ppt

heros_S2_ep03.avi /ENSPS/

Presentation_R5.ppt

Disque dur /dev/sda : Clef USB

mount −t auto /dev/sda/ /mnt/

(14)

Raspberry

Tools : divers

Tools

cat [file]

concatener des fichiers

mais ici affiche le contenu sur la sortie standard lessoumore

d ´ecoupe le flux de la sortie standart en page

(touches : [b] page pr ´ecedente, [space] suivante, [q] exit) exemple :cat encyclopedie.txt | less

tar xf [archive]

d ´ecompresser unearchiveau format tar sudo {-s}

ex ´ecute la commande en tant que root, -souvre un shell root

dmesg

messages de debug du noyau linux

(15)

Raspberry

Tools : manipulation fichiers

cp [file] [file/dir]

copie le fichier dans un autre fichier ou r ´epertoire cp -r [rep] [rep]

copier un r ´epetoire dans un autre mv [file/dir] [file/dir]

d ´eplacer un fichier/r ´epertoire dans un autre fichier ou r ´epertoire rm [file]

effacer un fichier rm -r [dir]

effacer un r ´epertoire (recursif) mkdir [dir]

cr ´eer un r ´epertoire cd [dir]

changer de r ´epertoire (..le r ´epertoire parent) pwd

(16)

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

´ecrire le fichier touche([echap]) :x

sauver et quitter touche([echap]) :q!

forcer quitter

nano

plus classique. Menus via touche[ctrl]+ lettre

(17)

Processeur ARM

Plan

1 Raspberry

2 Processeur ARM

Architecture ARM : principes

Jeu d’instruction et language assembleur ARM

3 Exceptions et Interruptions D ´efinition

Contr ˆoleur d’interruptions et traitement

4 Gestion de la m ´emoire (pagination)

5 Les entr ´ees-sorties (I/O) I/O par port

I/O mapp ´ees en m ´emoire

6 Le temps : Horloge et Timers L’horloge temps r ´eel Les timers

(18)

Processeur ARM Architecture ARM : principes

Architecture ARM (Advance RISC Machine)

processeur RISC 32 bit

ReducedInstruction Set Computer ; instr. de taille fixe (32bits) architecture ”load and store”

(op ´eration arithm ´etique r ´ealisable uniquement entre registres) avantages : architecture ´epur ´ee et fr ´equence d’ex ´ecution rapide inconv ´enient : programme plus long (2x) que le m ˆeme en CISC populaire dans l’embarqu ´e : lego mindstorm, nintendo DS ; apple ipod,iphone (consommation ´electrique)

la soci ´et ´e ARM

ne fabrique pas de processeurs mais les dessine ! vend des licences et ses dessins `a des fondeurs perc¸oit des royalties sur les processeurs vendus

(19)

Processeur ARM Architecture ARM : principes

L’architecture externe du ARM

bus d’adresses 32 bits : 4Go de RAM possible ; bus de donn ´ees

(+ instruction : Archi. Van Neumann)

2 lignes d’interruptions ; nReset : r ´einitialisation ; nRW : s ´election

(20)

Processeur ARM Architecture ARM : principes

Fonction d’un processeur (Central Processing Unit)

Ex ´ecution s ´equentielle d’instructions au travers d’un pipeline

Fetch Instruction

Decode

Execute

Etapes du pipeline ARM7 ´

Fetch : R ´ecup ´erer le code de l’instruction `a ex ´ecuter

Decode: D ´ecode instruction et registres `a utiliser

(pr ´eparation des chemins de donn ´ees)

Execute: Ex ´ecution instruction lecture registres ;

op ´eration ;

´ecriture r ´esultat registre ; ...

(21)

Processeur ARM Architecture ARM : principes

Architecture Interne d’un processeur

R1 R2 R3

IR

...

PC selection

Bus source

ALU ALU operation mode Address bus

Data bus Memory

C

A B

Single Core CPU

and Control Unit

Decode

Registres : stockage de mots (16, 32, 64 bits suivant architecture) ALU : Unit ´e Arithm ´etique et Logique ;

+,-,*,/,ET,OU,XOR, d ´ecalage,. . .

Unit ´e de d ´ecodage et commande : g ´en ´eration signaux de commande (op ´eration ALU, routage des bus A,B et C).

Bus m ´emoire:

(22)

Processeur ARM Architecture ARM : principes

Architecture Interne d’un processeur

R1 R2 R3

IR ...

PC selection

Bus source

ALU ALU operation mode Address bus

Data bus Memory

C

A B

Single Core CPU

and Control Unit

Decode

Registres

PC (R15) : Programme Counter adresse de l’instruction en cours ;

incr ´ement ´e par le CPU ; (ou IP, instruction pointer) IR : mot de l’instruction en cours R1,R2,R3.. R12 : registres `a usages g ´en ´eraux

CPSR : current program status register

(23)

Processeur ARM Architecture ARM : principes

CSPR register : Program status

mise `a jour apr `es chaque instruction

bits N, Z et V mis `a jour suivant le r ´esultat de l’instruction pr ´ec ´edente d ´efinit le mode d’op ´eration du processeur

M[0:4]

Data endianness bit IRQ Disable

Mode bits 0 4

I

9 7

28 30 31

zero

negative/less than

E V

Z

N C

overflow carry

(24)

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 ´efinit par les concepteurs seul et unique pour un processeur

un code binaire

l’Assembleur (Assembly language) :

repr ´esentation symbolique du langage machine

usage de mn ´emoniques 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

(25)

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)

Rd Rn 0 0 0 0 0

0 12

16 20 25

28

31 26 21

1

c o n d 0 0 shift

3

Rm

Assembleur : ADD R3 R2 R3−>Langage machine :0xE0823003

0 0

0 0 100 0000 0000

0 12

16 20 25

28

31 26 21

001 0 0

1 1 1 0 0011 0011

(cond=1110 signifie ”toujours ex ´ecuter”)

(26)

Processeur ARM Jeu d’instruction et language assembleur ARM

Illustration : R ´ealisation d’une addition

PC initialis ´e `a 100

initialisation par un autre programme (ou reset du CPU)

...

ALU

Single Core CPU

Address bus R1

R2 R3

PC

IR

0x108 : ADD R3, R2, R3

0x200 : 0x0005 0x204 : 0x????

Memory

Data bus

Read/Write

0x104 : LDR R3, #2

0x100

0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204

(27)

Processeur ARM Jeu d’instruction et language assembleur ARM

Illustration : R ´ealisation d’une addition

Fetch de l’instructionpar l’IFU (Instruction Fetch Unit) adresse de l’instruction donn ´ee par le PC

...

Single Core CPU

Address bus R1

R2 R3

PC

IR

0x108 : ADD R3, R2, R3

0x200 : 0x0005 0x204 : 0x????

Memory

Data bus

Read/Write

0x104 : LDR R3, #2

0x100

0x100

R

0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204 LDR R2, 0x200

LDR R2, 0x200

(28)

Processeur ARM Jeu d’instruction et language assembleur ARM

Illustration : R ´ealisation d’une addition

fin du Fetch : code de l’instruction `a ex ´ecuter dans IR D ´ecodage et pr ´eparation du chemin de donn ´ees

...

ALU

Single Core CPU

Address bus R1

R2 R3

PC

IR

0x108 : ADD R3, R2, R3

0x200 : 0x0005 0x204 : 0x????

Memory

Data bus

Read/Write

0x100

0x104 : LDR R3, #2 0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204

LDR R2,0x200

(29)

Processeur ARM Jeu d’instruction et language assembleur ARM

Illustration : R ´ealisation d’une addition

Ex ´ecution de l’instruction LDR

LDR : load dans le registre Rx une donn ´ee r ´ef ´erenc ´ee ou une #constante

...

Single Core CPU

Address bus R1

R2 R3

PC

IR

0x108 : ADD R3, R2, R3

0x200 : 0x0005 0x204 : 0x????

R

Memory

Data bus

Read/Write

0x100 0x0005

0x104 : LDR R3, #2 0x0005

0x200 0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204

LDR R2,0x200

(30)

Processeur ARM Jeu d’instruction et language assembleur ARM

Illustration : R ´ealisation d’une addition

fin de l’instruction

Incr ´ementation du PC de 0x004: pointe sur instruction suivante

...

ALU

Single Core CPU

Address bus R1

R2 R3

PC

IR

0x108 : ADD R3, R2, R3

0x200 : 0x0005 0x204 : 0x????

Memory

Data bus

Read/Write

0x104 : LDR R3, #2

0x104 0x0005

0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204

LDR R2,0x200

(31)

Processeur ARM Jeu d’instruction et language assembleur ARM

Illustration : R ´ealisation d’une addition

Fetch de l’instruction suivante

´ecrase le contenu de l’IR

...

ALU

Single Core CPU

Address bus R1

R2 R3

PC

IR

0x108 : ADD R3, R2, R3

0x200 : 0x0005 0x204 : 0x????

Memory

Data bus

Read/Write

0x0005

0x104 : LDR R3, #2 0x104

0x104 R

LDR R3, #2

LDR R3, #2

0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204

(32)

Processeur ARM Jeu d’instruction et language assembleur ARM

Illustration : R ´ealisation d’une addition

D ´ecode et Ex ´ecute l’instruction

LDR : load dans le registre Rx une donn ´ee r ´ef ´erenc ´ee ou une #constante

...

ALU

Single Core CPU

Address bus R1

R2 R3

PC

IR

0x108 : ADD R3, R2, R3

0x200 : 0x0005 0x204 : 0x????

Memory

Data bus

Read/Write

0x0005

LDR R3, #2

0x104 : LDR R3, #2

0x0002 0x104

0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204

(33)

Processeur ARM Jeu d’instruction et language assembleur ARM

Illustration : R ´ealisation d’une addition

fin de l’instruction :Incr ´emente de 0x004 le PC Fetch de l’instruction suivante

...

Single Core CPU

Address bus R1

R2 R3

PC

IR

0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204

0x200 : 0x0005 0x204 : 0x????

Memory

Data bus

Read/Write

0x0005

0x104 : LDR R3, #2

0x0002 0x108

0x108

ADD R3, R2, R3

R ADD R3,R2,R3

0x100 : LDR R2, 0x200

(34)

Processeur ARM Jeu d’instruction et language assembleur ARM

Illustration : R ´ealisation d’une addition

ex ´ecution de l’instruction

ADD Rdest,Ra,Rb : addition Rdest<=Rb+Ra

...

ALU

Single Core CPU

Address bus R1

R2 R3

PC

IR

0x108 : ADD R3, R2, R3

0x200 : 0x0005 0x204 : 0x????

Memory

Data bus

Read/Write

0x0005

0x104 : LDR R3, #2

ADD R3,R2,R3 0x108

0x05

+

0x02 0x0007

0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204

(35)

Processeur ARM Jeu d’instruction et language assembleur ARM

Illustration : R ´ealisation d’une addition

Fin instruction: incr ´emente le PC Fetch instruction suivante

...

Single Core CPU

Address bus R1

R2 R3

PC

IR

0x108 : ADD R3, R2, R3

0x200 : 0x0005 0x204 : 0x????

Memory

Data bus

Read/Write

0x0005

0x104 : LDR R3, #2

0x0007 0x10C

0x10C 0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204 STR R3,0x204

STR R3,0x204

(36)

Processeur ARM Jeu d’instruction et language assembleur ARM

Illustration : R ´ealisation d’une addition

Ex ´ecution de l’instruction

STR Rd Add : sauve contenu de Rd `a l’adresse Add

...

ALU

Single Core CPU

Address bus R1

R2 R3

PC

IR

0x108 : ADD R3, R2, R3

0x200 : 0x0005 Memory

Data bus

Read/Write

0x0005

0x104 : LDR R3, #2

0x0007 0x10C

0x204

W 0x204 :0x0007 0x0007

0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204

STR R3,0x204

(37)

Processeur ARM Jeu d’instruction et language assembleur ARM

Le pipeline d’ex ´ecution

ex ´ecution en parall `ele d’1Fetch, 1D ´ecodeet 1Ex ´ecution

→ acc ´el ´eration du d ´ebit d’ex ´ecution : 1 ex ´ecution d’instruction/cycle (alors que le traitement d’une instruction : 3 cycles)

Fetch de l’instruction point ´ee par PC+08 pendant ex ´ecution de PC

Execute Execute

Execute temps (Inst.addr: PC)

(Inst.addr: PC−0x08) ADD R3, R3, R1

LDR R2, #6

Fetch Decode Fetch Decode

Fetch Decode ADD R2, R2, R1

...

selection Bus source

ALU ALU operation mode C

A B and Control Unit

Decode

PC IR

R3 R1 R1 R2

R3 Data bus

Address bus PC LDR R2, #6

1 cycle 1 cycle 1 cycle

(38)

Exceptions et Interruptions

Plan

1 Raspberry

2 Processeur ARM

Architecture ARM : principes

Jeu d’instruction et language assembleur ARM

3 Exceptions et Interruptions D ´efinition

Contr ˆoleur d’interruptions et traitement

4 Gestion de la m ´emoire (pagination)

5 Les entr ´ees-sorties (I/O) I/O par port

I/O mapp ´ees en m ´emoire

6 Le temps : Horloge et Timers L’horloge temps r ´eel Les timers

(39)

Exceptions et Interruptions D ´efinition

Exceptions (et Interruptions)

D ´efinition d’une exception

arr ˆet temporaire du flux normal d’instructions pour r ´epondre `a un

´ev ´enement exceptionnel ou externe

Exception synchrone (”Exception”) : r ´esultat d’une instruction ex ´ecut ´ee par le processeur g ´en ´erant une erreur

arithm ´etique : division par 0, d ´ebordement (overflow)

m ´emoire : erreur d’alignement, m ´emoire insuffisante, erreur manipulation pointeur

appel syst `eme (LINUX) : par l’instruction INT 0x80, une application requiert un service de l’OS.

Exception asynchrone (”Interruption”) : associ ´ee `a un ´ev ´enement issu d’un p ´eriph ´erique

timers : expiration d’un timer ou un tick (p ´eriode) d’horloge syst `eme autres p ´eriph ´eriques : touche clavier, clic souris, paquet ethernet,. . .

(40)

Exceptions et Interruptions D ´efinition

Interruption

Interruption mat ´erielle

interruption : un signal sur la broche (INT) du CPU d ´eclenchant l’ex ´ecution d’une routine en r ´eponse (ISR : Interrupt Service Routine)

´economie pour le CPU du temps de scrutation des p ´eriph ´eriques

CPU

RAM CPU

RAM

Entrée−Sortie programmée avec attente de disponibilité Entrée−Sortie programmée avec interruption INT

INT 1 INT 2 PIC

Scrutation périodique par le CPU de l’état du périphèrique

I/O (1)

I/O (2) I/O (2)

I/O (1) controleur

controleur

controleur

controleur

(41)

Exceptions et Interruptions D ´efinition

Interruption

Exemple : Clavier PS2

si une touche est enfonc ´ee ou rel ˆach ´ee le contr ˆoleur du clavier :

´ecrit dans un de ses registres le code de la touche g ´en `ere une interruption

le CPU notifi ´e arr ˆete le processus en cours et ex ´ecute une routine d’interruption qui consiste `a 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/interruptspour visualiser

(42)

Exceptions et Interruptions Contr ˆoleur d’interruptions et traitement

Contr ˆoleur d’interruptions

Gestion des interruptions

plusieurs p ´eriph ´eriques et interruptions ( ´eventuellement simultan ´ees) le CPU ne peut ex ´ecuter qu’un ISR `a la fois

probl `eme de concurrence

solution : un contr ˆoleur d’interruption

priorit ´es pour les interruptions (arbitrage de la concurrence) interruption pr ´esent ´ee une `a la fois au CPU

masquer les interruptions non-prioritaires mais les m ´emoriser (buffer)

(43)

Exceptions et Interruptions Contr ˆoleur d’interruptions et traitement

Contr ˆoleur d’interruptions

Un contr ˆoleur programmable d’interruptions (PIC) : le 8259

utilis ´e par le PC IBM et ses successeurs, peut ˆetre mis en cascade priorit ´e par ordre d ´ecroissant (0(+prioritaire),2,...,7(-))

3 registres :

1 contenant l’interruption actuellement trait ´ee par le CPU

1 contenant les interruptions pas encore trait ´ees (de priorit ´e inf ´erieure) 1 contenant les interruptions `a masquer (celle dont le CPU ne veut pas)

8259A Interrupt controller CPU

D0-D7 CS A0 WR INTA

RD

INT IR0

IR1 IR2 IR3 IR4 IR5 IR6 IR7

+5 v

Keyboard Clock

Disk

Printer

(44)

Exceptions et Interruptions Contr ˆoleur d’interruptions et traitement

Vecteur d’interruption

1 exception = 1 routine ISR `a une adresse m ´emoire donn ´ee (cette adresse est appell ´ee le vecteur d’interruption)

le num ´ero d’exception/interruption sert d’indice dansla table des vecteurs d’interruptionpour trouver l’adresse m ´emoire o `u se trouve l’ISR

Exemple sur architecture i386

un registre du processeur IDTR (INT Descriptor Table Register) stocke en permanence l’adresse en m ´emoire de la table des vecteurs d’interruption

(45)

Exceptions et Interruptions Contr ˆoleur d’interruptions et traitement

Exception et interruption

Traitement complet

1 sauvegarde du contexte,l’ ´etat actuel du processeur ; (souvent, dans la pile d’ex ´ecution de la tache en cours)

2 chargement du vecteur d’interruption (adresse ISR) dans le registre PC

3 ex ´ecution de l’ISR

4 recharger contexte ant ´erieur ( ´etat du processeur avant INT)

5 reprise ex ´ecution du programme

traitement rapide, changement de contexte minimal effectu ´e par le mat ´eriel

(46)

Exceptions et Interruptions Contr ˆoleur d’interruptions et traitement

Traitement de l’interruption

interruption la plus ´elev ´ee pr ´esent ´ee sur broche INT du CPU le traitement d’une exception synchrone est similaire

PIC ...

ALU Single Core CPU

Address bus

Data bus IDTR

IR PC R1, R2, ....

SP 0xFF00

0x108

4 4 7 INT

Périph.

0x108 : ADD R3, R2, R3 Memory

0x104 : LDR R3, #2 0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204 LDR R3,#2

0xFF00: 0x844 ...

0x204 : 0x200 : 0x0005

...

...

0x400: 0x0003 0x404: 0x040 0x404

...

Pile du processus en cours

Table des vecteurs d’int ...

(47)

Exceptions et Interruptions Contr ˆoleur d’interruptions et traitement

Traitement de l’interruption

PC du processus interrompu pouss ´e sur la pile par le mat ´eriel adresse de sommet de la pile stock ´ee dans registre SP

PIC ...

ALU Single Core CPU

Address bus

Data bus IDTR

IR PC R1, R2, ....

SP 0xFF00

0x108

4 4 7 INT

Périph.

0x108 : ADD R3, R2, R3 Memory

0x104 : LDR R3, #2 0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204 LDR R3,#2

0xFF00: 0x844 ...

0x204 : 0x200 : 0x0005

...

...

0x400: 0x0003 0x404: 0x040 0x40

...

Pile du processus en cours

Table des vecteurs d’int SP+0x04: 0x408

PC: 0x108

0x408: 0x108 (PC)...

8

(48)

Exceptions et Interruptions Contr ˆoleur d’interruptions et traitement

Traitement de l’interruption

table des vecteurs d’int. stock ´ee `a l’adresse contenue dans IDTR cherche dans la table, l’entr ´ee du num ´ero d’INT (4)

PIC ...

ALU Single Core CPU

Data bus IDTR

IR PC R1, R2, ....

SP 0xFF00

0x108

INT

Périph.

0x108 : ADD R3, R2, R3 Memory

0x104 : LDR R3, #2 0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204 LDR R3,#2

0xFF00: 0x844 ...

0x204 : 0x200 : 0x0005

...

...

0x400: 0x0003 0x404: 0x040 0x40

...

Pile du processus en cours

0x408: 0x108 (PC)...

Address bus 0xFF10

0 Table des vecteurs d’int

1 ...

No

0xFF10: 0x64C 8

4 4 7

4 IDTR+(0x4)*4

(49)

Exceptions et Interruptions Contr ˆoleur d’interruptions et traitement

Traitement de l’interruption

l’entr ´ee contient le vecteur d’int. (adresse du gestionnaire de l’int.(ISR)) PC<=vecteur d’interruption

PIC ...

ALU Single Core CPU

Data bus IDTR

IR PC R1, R2, ....

SP 0xFF00

INT

Périph.

0x108 : ADD R3, R2, R3 Memory

0x104 : LDR R3, #2 0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204 LDR R3,#2

0xFF00: 0x844 ...

0x204 : 0x200 : 0x0005

...

...

0x400: 0x0003 0x404: 0x040 0x40

...

Pile du processus en cours

0x408: 0x108 (PC)...

Address bus

0 Table des vecteurs d’int No 0xFF10

0x64C 0x108

0x64C

0x64C: PUSH R1...

0x670: IRET

x86) (asm 4

4 7 8

le vecteur d’INT:

adresse de l’ISR

(50)

Exceptions et Interruptions Contr ˆoleur d’interruptions et traitement

Traitement de l’interruption

ex ´ecution de l’ISR (l’instruction point ´ee par PC)

PIC ...

ALU Single Core CPU

Data bus IDTR

IR PC R1, R2, ....

SP 0xFF00

INT

Périph.

0x108 : ADD R3, R2, R3 Memory

0x104 : LDR R3, #2 0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204

0xFF00: 0x844 ...

0x204 : 0x200 : 0x0005

...

...

0x400: 0x0003 0x404: 0x040 0x40

...

Pile du processus en cours

0x408: 0x108 (PC)...

Address bus

4 0 Table des vecteurs d’int

1 ...

No

0xFF10: 0x64C 0x64C: PUSH R1...

0x670: IRET 0x64C

0x64C

PUSH R1

(pile utilisable par ISR)

ISR code x86) (asm PUSH R1

7 8 4

(51)

Exceptions et Interruptions Contr ˆoleur d’interruptions et traitement

Traitement de l’interruption

dans l’ISR, acc `es au p ´eriph ´erique pour lever l’INT ISR se finit par l’instruction IRET (x86)

PIC ...

ALU Single Core CPU

Data bus IDTR

IR PC R1, R2, ....

SP 0xFF00

INT

Périph.

0x108 : ADD R3, R2, R3 Memory

0x104 : LDR R3, #2 0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204

0xFF00: 0x844 ...

0x204 : 0x200 : 0x0005

...

...

0x400: 0x0003 0x404: 0x040 0x40

...

Pile du processus en cours

0x408: 0x108 (PC)...

Address bus

0 Table des vecteurs d’int No

0x64C: PUSH R1...

0x670: IRET ISR code x86) (asm

0x670 IRET

IRET

7 8

(52)

Exceptions et Interruptions Contr ˆoleur d’interruptions et traitement

Traitement de l’interruption

IRET : reprendre le processus initial (PC<=valeur avant l’int.)

le PC initial en m ´emoire au sommet de la pile (adresse contenu dans SP)

PIC ...

ALU Single Core CPU

IDTR IR PC R1, R2, ....

SP 0xFF00

INT

Périph.

0x108 : ADD R3, R2, R3 Memory

0x104 : LDR R3, #2 0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204

0xFF00: 0x844 ...

0x204 : 0x200 : 0x0005

...

...

0x400: 0x0003 0x404: 0x040

...

Pile du processus en cours

0x408: 0x108 (PC)...

Address bus

4 0 Table des vecteurs d’int

1 ...

No

0xFF10: 0x64C 0x64C: PUSH R1...

0x670: IRET ISR code x86) (asm Data bus

0x408

0x108 (PC)

0x408 IRET 0x108

7

(53)

Exceptions et Interruptions Contr ˆoleur 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 `a traiter)

PIC ...

ALU Single Core CPU

IDTR IR PC R1, R2, ....

SP 0xFF00

INT

Périph.

0x108 : ADD R3, R2, R3 Memory

0x104 : LDR R3, #2 0x100 : LDR R2, 0x200

0x10C : STR R3, 0x204

0xFF00: 0x844 ...

0x204 : 0x200 : 0x0005

...

...

0x400: 0x0003 0x404: 0x040

...

Pile du processus en cours

...

Address bus

0 Table des vecteurs d’int No

0x64C: PUSH R1...

0x670: IRET ISR code x86) (asm Data bus

IRET 0x108

0x404

0x408: 0x108 7

0x108 ?

(54)

Gestion de la m ´emoire (pagination)

Plan

1 Raspberry

2 Processeur ARM

Architecture ARM : principes

Jeu d’instruction et language assembleur ARM

3 Exceptions et Interruptions D ´efinition

Contr ˆoleur d’interruptions et traitement

4 Gestion de la m ´emoire (pagination)

5 Les entr ´ees-sorties (I/O) I/O par port

I/O mapp ´ees en m ´emoire

6 Le temps : Horloge et Timers L’horloge temps r ´eel Les timers

(55)

Gestion de la m ´emoire (pagination)

Probl ´ematique d’un syst `eme multi-t ˆache

Des processus mais 1 m ´emoire : Et si la place est occup ´ee ?

coded ´ependant de sa position en m ´emoire (adresses absolues des donn ´ees)

Main Memory (RAM)

(Hard Disk Drive) Secondary Memory

./prog

@start_:

section memory addr 0x18 ELF Header

Programm Header .text

07 00 00 00 0e 00 00 00

.data 0x08

0x00

0x10 0x18 0x20 0x28

0x38

0x30

.data addl (%ebx), %eax

movl $0x32, %ebx

addl (%ebx), %eax .text movl $0x32, %ebx compl %edx, $0

jne 0x08 movl $1, %eax movl $2, %ebx subs %eax, %edx 0x30

08 4F E1 C5 4F 23 A3 00

./program2

?

movl , %eax0x30

movl , %eax0x30 0x18

(56)

Gestion de la m ´emoire (pagination)

Gestion de la m ´emoire

Probl ´ematique de la r ´eallocation dynamique

comment positionner les processus en m ´emoire ? comment obtenir un bloc contig ¨ue pour un malloc

sans retasser ? d’exploitation Système

d’exploitation Système Processus A

Processus B Processus H

000 10K

100K

280K

900K

1M

Processus H

Processus A

Processus B 000

70K

270K

580K

900K

1M Retassement par réallocation dynamique

Mémoire après un temps de fonctionnement

(libre) (libre)

2 solutions possibles utilisant une translation d’adresse :

la segmentation la pagination

(57)

Gestion de la m ´emoire (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 `u il est effectivement en m ´emoire

0x08 0x00

0x10 0x18 0x20 0x28

addl (%ebx), %eax movl $0x32, %ebx

0x30

movl 0x30, %eax

07 00 00 00 0e 00 00 00 Processus

Mémoire Logique/Virtuelle @logique @physique

0x08 0x00

0x10 0x18 0x20 0x28 0x30

0x10 0x14 0x20

0x38 0x3C 0x04 0x0C 0x14 0x1C 0x24 0x2C 0x34 0x38

0x08 0x00

0x10 0x18 0x20 0x28

0x38 0x30

Processus A

Processus B movl 0x30, %eax movl $0x32, %ebx

0e 00 00 00 07 00 00 00 addl (%ebx), %eax Memoire Physique (RAM)

Processus B

0x3C 0x3F

(58)

Gestion de la m ´emoire (pagination)

La pagination : Principe

1 Translation d’adresse pour toute lecture/ecriture d’un code/donn ´ee (Exemple : Fetch de la premi `ere instruction du programme)

0x08 0x00

0x10

0x18

0x20

0x28

0x38

0x3F 0x30

0x3C

Processus A

Processus A Processus B

Processus B addl (%ebx), %eax movl 0x30, %eax movl $0x32, %ebx

0e 00 00 00 07 00 00 00

Memoire Physique (RAM)

PC EAX

ECX

0x18

@start_: 0x18

0x10

@physique

@logique

0x08 0x00

0x10

0x18

0x20

0x28

0x30 0x10 0x14 0x20

0x38 0x3C 0x04

0x0C

0x14

0x1C

0x24

0x2C

0x34 0x38 0x3C EBX 0x18

(59)

Gestion de la m ´emoire (pagination)

La pagination : Principe

1 Translation d’adresse pour toute lecture/ecriture d’un code/donn ´ee (Exemple : lecture d’un op ´erande)

0x08 0x00

0x10

0x18

0x20

0x28

0x30

Processus A

Processus A Processus B

Processus B addl (%ebx), %eax movl 0x30, %eax movl $0x32, %ebx Memoire Physique (RAM)

PC EAX

0x18

@physique

movl 0x30,%eax

@logique

0x08 0x00

0x10

0x18

0x20

0x28

0x30 0x10 0x14 0x20

0x38 0x3C 0x04

0x0C

0x14

0x1C

0x24

0x2C

0x34 0x38

0x30 0x38

Read EBX

(60)

Gestion de la m ´emoire (pagination)

La pagination

D ´eplacement de code/donn ´ee en m ´emoire physique

1 d ´eplacement et mise- `a-jour table

0x08 0x00

0x10

0x18

0x20

0x28

0x38 0x30

0x3C

Processus A

Processus A Processus B

Processus B addl (%ebx), %eax

0e 00 00 00 07 00 00 00

Memoire Physique (RAM)

PC EAX

Read

movl 0x30, %eax movl $0x32, %ebx

@physique

@logique

0x08 0x00

0x10

0x18

0x20

0x28

0x30 0x10 0x14 0x20

0x38 0x3C 0x04

0x0C

0x14

0x1C

0x24

0x2C

0x34 0x38 0x3C

0x08 0x0C EBX

(61)

Gestion de la m ´emoire (pagination)

La pagination

Avantage

programme utilise des @virtuelles contig ¨ues

↔ `a des adresses physiques non-contigu ¨e d ´eplacement en RAM du code/donn ´ees

= quelques ligne de la table `a updater.

Inconv ´eniant

la table de correspondance aussi grande que la m ´emoire physique RAM ! (si une adresse=32bits)

gestion lourde de la m ´emoire

Solution

D ´eplacement du code/donn ´ee par paquet de 2, 4, ou 2noctets Table de correspondance entre @logique et @physiquedu paquet

(62)

Gestion de la m ´emoire (pagination)

La pagination

Table de pages

blocs (ici de tailles 23octets) sont appell ´espages

0x08 0x00

0x10 0x18 0x20 0x28

0x38

addl (%ebx), %eax movl $0x32, %ebx

0x30

movl 0x30, %eax

07 00 00 00 0e 00 00 00

0x3C Processus

Mémoire Logique/Virtuelle Numéro de page

0 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7 0

1 2 3 4 5 6 7

Page physique virtuelle Page

Table des pages

4 2

7

0x08 0x00

0x10 0x18 0x20 0x28

0x38 0x30

0x3C

Processus A

Processus B

Processus B movl 0x30, %eax movl $0x32, %ebx

0e 00 00 00 07 00 00 00

Numéro de page

addl (%ebx), %eax Memoire Physique (RAM)

(63)

Gestion de la m ´emoire (pagination)

La pagination : M ´emoire virtuelle

M ´emoire virtuelle

Possible de ne charger que le d ´ebut du programme si manque de place Un bit indique dans la table si la page est charg ´ee ou non

0 1 2 3 4 5 6 7 0x08

0x00

0x10 0x18 0x20 0x28

0x38

addl (%ebx), %eax movl $0x32, %ebx

0x30

movl 0x30, %eax

07 00 00 00 0e 00 00 00

0x3C Processus

Mémoire Logique/Virtuelle Numéro de page

0 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7

Page physique virtuelle Page

Table des pages

2

7 1

1 0

0x08 0x00

0x10 0x18 0x20 0x28

0x38 0x30

0x3C

Processus A

Processus B movl 0x30, %eax movl $0x32, %ebx

0e 00 00 00 07 00 00 00

Numéro de page Memoire Physique (RAM)

Processus A

Processus A Processus B Processus B 1:page présente

0:page absente

(64)

Gestion de la m ´emoire (pagination)

La pagination : M ´emoire virtuelle

M ´emoire virtuelle : besoin de charger la suite ?

la page non charg ´ee mise temporairement sur une m ´emoire secondaire

0 1 2 3 4 5 6 addl (%ebx), %eax 7

(3) 0

1 2 3 4 5 6 7

0x08 0x00

0x10 0x18 0x20 0x28

0x38 0x30

0x3C

Processus A

Processus B movl 0x30, %eax movl $0x32, %ebx

0e 00 00 00 07 00 00 00

Numéro de page Memoire Physique (RAM)

Processus A

Processus A Processus B Processus B 1:page présente

0:page absente Page physique virtuelle Page

2

7 1

1 0 Table des pages

(Disque Dur) Memoire Secondaire

(65)

Gestion de la m ´emoire (pagination)

La pagination : M ´emoire virtuelle

M ´emoire virtuelle : besoin de charger la suite ?

un programme demon (kswapd sous linux) lib `ere des pages : si un programme requiert une page non charg ´ee (”d ´efaut de page”) si la m ´emoire est presque pleine (retire vieilles pages)

0 1 2 3 4 5 6

addl (%ebx), %eax (3) 7 0

1 2 3 4 5 6 7

0x08 0x00

0x10 0x18 0x20 0x28

0x38 0x30

0x3C

Processus A

movl 0x30, %eax movl $0x32, %ebx

0e 00 00 00 07 00 00 00

Numéro de page Memoire Physique (RAM)

Processus A

Processus A Processus B Processus B 1:page présente

0:page absente Page physique virtuelle Page

2

7 1

1 0 Table des pages

Processus B

Memoire Secondaire (Disque Dur)

Kswapd

Références

Documents relatifs

– Il ne peut y avoir plus d’un processus dans sa section critique en mˆeme temps – Un processus en dehors de sa section critique ne peut bloquer un autre

Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 1 /

3 Proposer un exemple dans lequel la valeur renvoy´ ee par une lecture est celle transmise au cours d’une ´ ecriture : penser ` a prot´ eger lecture et ´ ecriture par un mutex.

Modifier le pilote afin que lors d’une ´ ecriture dans ce pseudo-fichier, la valeur ´ ecrite dans un premier temps (echo &#34;valeur&#34; &gt; fichier) soit m´ emoris´ ee,

• Alternative au temps r´ eel : le mat´ eriel reconfigurable se charge des op´ erations rapides et d´ echarge le processeur de tˆ aches imm´ ediates (UART, FIFO, ADC du coldfire

• Partant de l’exemple de module avec timer en /dev, impl´ ementer une m´ ethode read qui se d´ ebloque ` a intervalles de temps r´ eguliers (utiliser un mutex). • Proposer

• depuis le CPU (Linux) : pilote noyau pour communiquer avec les p´ eriph´ eriques. • description de la configuration mat´ erielle par le m´ ecanisme des devicetree consult´ e par

Notion de syst` eme embarqu´ e Architecture des processeurs Mat´ eriel v.s logiciel Rappels de C Les microcontrˆ oleurs 8 bits G´ en´ eralit´ es sur les syst` emes num´ eriques