Architecture des ordinateurs. Loïc Cuvillon. 20 novembre 2013



Documents pareils
Ordinateurs, Structure et Applications

Structure d un programme

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Programmation assembleur : aperçu

Rappels d architecture

IV- Comment fonctionne un ordinateur?

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007

Réalisation d un OS 32 bits pour PC(x86)

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Exécution des instructions machine

Architecture des ordinateurs

TD Architecture des ordinateurs. Jean-Luc Dekeyser

CH.3 SYSTÈMES D'EXPLOITATION

Logiciel de base. Première année ENSIMAG

Architecture des ordinateurs

Temps Réel. Jérôme Pouiller Septembre 2011

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Initiation à la sécurité

Compilation (INF 564)

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Cours Informatique 1. Monsieur SADOUNI Salheddine

Conception de circuits numériques et architecture des ordinateurs

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Leçon 1 : Les principaux composants d un ordinateur

KoinKoin. Système d exploitation à architecture basée micro-noyau. Antoine Castaing Nicolas Clermont Damien Laniel

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Exécutif temps réel Pierre-Yves Duval (cppm)

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

Programmation C. Apprendre à développer des programmes simples dans le langage C

Microprocesseur + Logiciel

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Chapitre 4 : Les mémoires

Architecture des Ordinateurs. Partie II:

Architecture ordinateur. Organisation mémoire et Entrées/Sorties

Partie 7 : Gestion de la mémoire

Description du logiciel Modbus RTU

Systèmes d exploitation

Prentice Hall, 2011 (ISBN )

Résumé Génération de code Le code intermédiaire

LOGICIEL DC4D MONITOR

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes

ASR1 TD7 : Un microprocesseur RISC 16 bits

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Croisière au cœur d un OS Étape 4 : Mise en place de la pagination

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

Contraintes, particularités. 1. Généralités Gestion de la mémoire a. Type des variables et constantes... 2

Architecture des ordinateurs Introduction à l informatique

IFT1215 Introduction aux systèmes informatiques

Traitement de données

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

PIC : COURS ASSEMBLEUR

La mémoire. Un ordinateur. L'octet. Le bit

GPA770 Microélectronique appliquée Exercices série A

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

On distingue deux grandes catégories de mémoires : mémoire centrale (appelée également mémoire interne)

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Bienvenue sur Lab-Windows Il n'y a de vents favorables que pour ceux qui ont un cap

Concept de machine virtuelle

<Insert Picture Here> Solaris pour la base de donnés Oracle

Matériel & Logiciels (Hardware & Software)

ST50 Projet de fin d études Noyau Linux et multi-processeur pour une plateforme embarquée

Licence Sciences et Technologies Examen janvier 2010

SRS DAY: Problématique liée à la virtualisation

Ordinateurs, Structure et Applications

Les avantages de la virtualisation sont multiples. On peut citer:

Architecture des calculateurs

CM2 L architecture MIPS32

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

Tsoft et Groupe Eyrolles, 2005, ISBN :

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Architecture des ordinateurs

1 Mesure de la performance d un système temps réel : la gigue

CQP 112 Introduc/on à la programma/on. Thème 2 : Architecture d un système informa/que. Département d informa/que

PIC EVAL Dev Board PIC18F97J60

Structure fonctionnelle d un SGBD

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu

Introduction à la Programmation Parallèle: MPI

Stockage des machines virtuelles d un système ESXi jose.tavares@hesge.ch & gerald.litzistorf@hesge.ch

Guide pour l Installation des Disques Durs SATA et la Configuration RAID

Fiche technique CPU 315SN/PN (315-4PN33)

Chapitre I Notions de base et outils de travail

Programmation système I Les entrées/sorties

Fonctionnement et performance des processeurs

Présentation du système informatique utilisé et éléments d architecture des ordinateurs

Mise en oeuvre TSM 6.1

Modules du DUT Informatique proposés pour des DCCE en 2014/2015

Document de formation pour une solution complète d automatisation Totally Integrated Automation (T I A) MODULE A5 Programmation de la CPU 314C-2DP

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

Spécifications détaillées

Initiation. àl algorithmique et à la programmation. en C

Prise en main. Prise en main - 0

Bravo! Vous venez d acquérir un routeur large bande à 4 ports Conceptronic C100BRS4H.

Initiation au HPC - Généralités

Informatique pour scientifiques hiver Plan général Systèmes d exploitation

Transcription:

Systèmes temps réel et systèmes embarqués Architecture des ordinateurs Loïc Cuvillon Ecole Nationale Supérieure de Physique de Strasbourg 20 novembre 2013 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 1 / 93

Sommaire 1 Processeur Architecture ARM : principes Architecture Intel et Assembleur x86 2 Exceptions et Interruptions Définition Contrôleur d interruptions et traitement 3 Du source à l exécutable Le format ELF Les bibliothèques 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 (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 2 / 93

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 (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 3 / 93

Bibliographie Notation 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 (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 4 / 93

Plan Processeur 1 Processeur Architecture ARM : principes Architecture Intel et Assembleur x86 2 Exceptions et Interruptions Définition Contrôleur d interruptions et traitement 3 Du source à l exécutable Le format ELF Les bibliothèques 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 (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 5 / 93

Processeur 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 (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 6 / 93

Processeur 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 (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 7 / 93

Processeur Architecture ARM : principes Fonction d un processeur (Central Processing Unit) Execution séquentielle d instructions au travers d un pipeline Fetch Instruction Decode Execute Etapes du pipeline ARM7 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 ; Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 8 / 93

Processeur Architecture ARM : principes Architecture Interne d un processeur Single Core CPU R1 R2 Address bus Data bus Memory Registres : stockage de mots (16, 32, 64 bits suivant architecture) C A R3 PC IR ALU B Bus source selection Decode ALU operation mode and Control Unit 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 : Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 9 / 93

Processeur Architecture ARM : principes Architecture Interne d un processeur Single Core CPU Registres C A R1 R2 R3 PC IR ALU B Address bus Bus source selection ALU operation mode Data bus Decode and Control Unit Memory PC (R15) : Programme Counter 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.. R14 : registres à usages généraux CPSR : current program status register (flags sur résultat inst. : Zero, Negatif) Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 10 / 93

Processeur Architecture ARM : principes 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 ( langage haut-niveau (C,java)) (Saut d adresse : B(L) chez ARM et JMP chez INTEL ) Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 11 / 93

Processeur Architecture ARM : principes 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 16 12 3 0 c o n d 0 0 0 0 1 0 0 0 Rn Rd shift Rm Assembleur : ADD R3 R2 R3 > Langage machine :0xE0823003 31 28 26 25 21 20 16 12 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 (cond=1110 signifie toujours exécuter ) Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 12 / 93

Processeur Architecture ARM : principes Illustration : Réalisation d une addition PC initialisé à 100 initialisation par un autre programme (ou reset du CPU) Single Core CPU R1 R2 R3 Address bus Data bus Memory 0x100 : LDR R2, 0x200 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 PC IR 0x100 Read/Write 0x200 : 0x0005 0x204 : 0x???? ALU Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 13 / 93

Processeur Architecture ARM : principes 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 Single Core CPU R1 R2 R3 PC 0x100 IR LDR R2, 0x200 0x100 Address bus LDR R2, 0x200 Data bus R Read/Write Memory 0x100 : LDR R2, 0x200 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 0x200 : 0x0005 0x204 : 0x???? ALU Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 14 / 93

Processeur Architecture ARM : principes 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 Single Core CPU R1 R2 R3 PC 0x100 IR LDR R2,0x200 Address bus Data bus Read/Write Memory 0x100 : LDR R2, 0x200 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 0x200 : 0x0005 0x204 : 0x???? ALU Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 15 / 93

Processeur Architecture ARM : principes 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 R1 R2 0x0005 0x200 Address bus 0x0005 0x100 : LDR R2, 0x200 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 R3 Data bus PC 0x100 IR LDR R2,0x200 R Read/Write 0x200 : 0x0005 0x204 : 0x???? ALU Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 16 / 93

Processeur Architecture ARM : principes Illustration : Réalisation d une addition fin de l instruction Incrémentation du PC de 0x004 : pointe sur instruction suivante Single Core CPU Memory 0x100 : LDR R2, 0x200 R1 R2 0x0005 Address bus 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 R3 Data bus PC 0x104 LDR IR R2,0x200 Read/Write 0x200 : 0x0005 0x204 : 0x???? ALU Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 17 / 93

Processeur Architecture ARM : principes Illustration : Réalisation d une addition Fetch de l instruction suivante écrase le contenu de l IR Single Core CPU Memory R1 R2 0x0005 0x104 Address bus LDR R3, #2 0x100 : LDR R2, 0x200 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 R3 Data bus PC 0x104 IRLDR R3, #2 R Read/Write 0x200 : 0x0005 0x204 : 0x???? ALU Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 18 / 93

Processeur Architecture ARM : principes 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 Single Core CPU Memory 0x100 : LDR R2, 0x200 R1 R2 0x0005 Address bus 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 R3 0x0002 Data bus PC 0x104 IRLDR R3, #2 Read/Write 0x200 : 0x0005 0x204 : 0x???? ALU Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 19 / 93

Processeur Architecture ARM : principes Illustration : Réalisation d une addition fin de l instruction : Incrémente de 0x004 le PC Fetch de l instruction suivante Single Core CPU Memory R1 R2 0x0005 0x108 Address bus ADD R3, R2, R3 0x100 : LDR R2, 0x200 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 R3 0x0002 Data bus PC 0x108 IR ADD R3,R2,R3 R Read/Write 0x200 : 0x0005 0x204 : 0x???? ALU Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 20 / 93

Processeur Architecture ARM : principes Illustration : Réalisation d une addition exécution de l instruction ADD Rdest,Ra,Rb : addition Rdest<=Rb+Ra Single Core CPU Memory 0x100 : LDR R2, 0x200 R1 R2 0x0005 Address bus 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 R3 0x000 7 Data bus PC 0x108 IR ADD R3,R2,R3 Read/Write 0x200 : 0x0005 0x204 : 0x???? 0x05 ALU 0x02 + Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 21 / 93

Processeur Architecture ARM : principes Illustration : Réalisation d une addition Fin instruction : incrémente le PC Fetch instruction suivante Single Core CPU Memory R1 R2 R3 0x0005 0x0007 0x10C Address bus STR R3,0x204 Data bus 0x100 : LDR R2, 0x200 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 PC 0x10C STR IR R3,0x204 Read/Write 0x200 : 0x0005 0x204 : 0x???? ALU Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 22 / 93

Processeur Architecture ARM : principes Illustration : Réalisation d une addition Exécution de l instruction STR Rd Add : sauve contenu de Rd à l adresse Add Single Core CPU Memory R1 R2 R3 0x0005 0x0007 0x204 Address bus 0x0007 Data bus 0x100 : LDR R2, 0x200 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 PC 0x10C STR IR R3,0x204 W Read/Write 0x200 : 0x0005 0x204 : 0x0007 ALU Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 23 / 93

Processeur Architecture ARM : principes 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 R2 R3 Address bus Data bus PC LDR R2, #6 PC Bus source selection (Inst.addr: PC 0x08) A R3 IR B R1 Decode and Control Unit ADD R3, R3, R1 ADD R2, R2, R1 LDR R2, #6 Fetch Decode Fetch Execute Decode Fetch Execute Decode Execute C ALU ALU operation mode (Inst.addr: PC) temps 1 cycle 1 cycle 1 cycle Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 24 / 93

Processeur Architecture Intel et Assembleur x86 Intel 8086 le 8086 processeur 16 bits, 8MHz, total de 16 registres registres de 16 bits = 64Ko de mémoire (2 16 adresses codées) mais bus d adresse de 2 20 bits = 1Mo (2 20 adresses) accès complexe au 1Mo de mémoire : un registre segment de 16bits offset : l adresse mémoire sur 16bits adresse finale= segment x16 + offset son dérivé le 8088, coeur de l IBM PC! (1981) 8086 (1978-320$) Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 25 / 93

80286 (i286) Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 26 / 93 Intel Pentium Processeur Architecture Intel et Assembleur x86 ix86 : 386, 486, Pentium (586) Démarrage en Mode réel : Emulation du 8086 (compatibilité) 1 Mo uniquement accessible! Mode protégé (activé par le bit Protection Enable dans le registre CR0) : Mémoire virtuelle pagination, protection mémoire Mécanisme pour le multitâche Niveau de privilèges d exécution (4) Noyau (Toute Instruction permise) User (Instruction I/O (entrées-sorties) indisponibles )

Intel Pentium Processeur Architecture Intel et Assembleur x86 Registres du x86 EAX CS Code Segment EBX ECX General registers DS SS Data Segment Stack Segment EDX EIP Instruction pointer EFLAGS Status EBP Stack Base pointer ESP Stack pointer EAX AX AH AL CR3 Control 3 (page directory adress) : memory management Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 27 / 93

Processeur Architecture Intel et Assembleur x86 La Pile d exécution (stack) sur intel x86 Espace mémoire croissant vers des adresses inférieures %esp : stack pointer (SP), pointeur permanent sur le sommet de la pile push %eax : pose contenu de EAX sur la pile pop %eax : retire le sommet de la pile dans EAX push %eax #%eax=0x19 initial State after PUSH %ax after POP %ax movl $0xF17, %eax Adresse 0x000 0x000 0x000 pop %eax #%eax=0x19 0x?????? SP 0x000019 0x000019 SP 0xFFFFF0 0x0F4 0xFFFFF0 0x0F4 SP 0xFFFFF0 0x0F4 0x00B471 0x0F8 0x00B471 0x0F8 0x00B471 0x0F8 0xA5063C 0x0FC 0xA5063C 0x0FC 0xA5063C 0x0FC un usage du stack : sauvegarde et restauration de %eax variable automatique et locale du langage c. Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 28 / 93

Plan Exceptions et Interruptions 1 Processeur Architecture ARM : principes Architecture Intel et Assembleur x86 2 Exceptions et Interruptions Définition Contrôleur d interruptions et traitement 3 Du source à l exécutable Le format ELF Les bibliothèques 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 (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 29 / 93

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 (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 30 / 93

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 CPU CPU INT RAM I/O (1) controleur RAM PIC I/O (1) INT 1 controleur I/O (2) controleur I/O (2) INT 2 controleur Entrée Sortie programmée avec attente de disponibilité Entrée Sortie programmée avec interruption Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 31 / 93

Exceptions et Interruptions Définition Interruption Exemple : Clavier 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 Voir exemple Linux xenomai ultérieurement. Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 32 / 93

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 (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 33 / 93

Exceptions et Interruptions Contrôleur d interruptions Contrôleur d interruptions et traitement 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) CPU INT INTA RD WR A0 CS D0-D7 8259A Interrupt controller IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 Clock Keyboard Disk Printer +5 v Source : Architecture des ordinateurs, Tanenbaum Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 34 / 93

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 (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 35 / 93

Exceptions et Interruptions Contrôleur d interruptions et traitement Exception et interruption Traitement complet 1 sauvegarde du contexte,l état actuel du processeur ; (souvent, dans la pile d exécution de la tache en cours) 2 chargement du vecteur d interruption (adresse ISR) dans le registre PC 3 exécution de l ISR 4 recharger contexte antérieur (état du processeur avant INT) 5 reprise exécution du programme traitement rapide, changement de contexte minimal effectué par le matériel Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 36 / 93

Exceptions et Interruptions Traitement de l interruption Contrôleur d interruptions et traitement interruption la plus élevée présentée sur broche INT du CPU le traitement d une exception synchrone est similaire Single Core CPU Memory R1, R2,. PC 0x108 IR LDR R3,#2 IDTR 0xFF00 SP 0x404 Address bus Data bus INT PIC 4 4 Périph. 7 0x100 : LDR R2, 0x200 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 0x200 : 0x0005 0x204 : Pile du processus en cours 0x400: 0x0003 0x404: 0x040 ALU Table des vecteurs d int 0xFF00: 0x844 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 37 / 93

Exceptions et Interruptions Traitement de l interruption Contrôleur d interruptions et traitement 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 R1, R2,. PC 0x108 IR LDR R3,#2 IDTR 0xFF00 SP 0x40 8 SP+0x04: 0x408 Address bus PC: 0x108 Data bus INT PIC 4 Périph. 7 4 Memory 0x100 : LDR R2, 0x200 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 0x200 : 0x0005 0x204 : Pile du processus en cours 0x400: 0x0003 0x404: 0x040 0x408: 0x108 (PC) ALU Table des vecteurs d int 0xFF00: 0x844 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 38 / 93

Exceptions et Interruptions Traitement de l interruption Contrôleur d interruptions et traitement 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 R1, R2,. PC 0x108 IR LDR R3,#2 IDTR 0xFF00 SP 0x40 8 IDTR+(0x4)* 4 0xFF10 Address bus Data bus INT PIC 4 Périph. 7 4 Memory 0x100 : LDR R2, 0x200 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 0x200 : 0x0005 0x204 : Pile du processus en cours 0x400: 0x0003 0x404: 0x040 0x408: 0x108 (PC) ALU Table des vecteurs d int 0xFF00: 0x844 0xFF10: 0x64C N o 0 1 4 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 39 / 93

Exceptions et Interruptions Traitement de l interruption Contrôleur d interruptions et traitement l entrée contient le vecteur d int. (adresse du gestionnaire de l int.(isr)) PC <= vecteur d interruption Single Core CPU R1, R2,. PC 0x108 0x64C IR LDR R3,#2 IDTR 0xFF00 SP 0x40 8 Address bus INT 4 Data bus 0xFF10 0x64C PIC le vecteur d INT: adresse de l ISR 4 Périph. 7 Memory 0x100 : LDR R2, 0x200 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 0x200 : 0x0005 0x204 : Pile du processus en cours 0x400: 0x0003 0x404: 0x040 0x408: 0x108 (PC) ALU 0x64C: PUSH R1 0x670: IRET Table des vecteurs d int 0xFF00: 0x844 0xFF10: 0x64C (asm x86) N o 0 1 4 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 40 / 93

Exceptions et Interruptions Traitement de l interruption Contrôleur d interruptions et traitement exécution de l ISR (l instruction pointée par PC) Single Core CPU R1, R2,. PC 0x64C IR PUSH R1 IDTR 0xFF00 SP 0x40 8 0x64C Address bus PUSH R1 Data bus INT 4 PIC Périph. 7 Memory 0x100 : LDR R2, 0x200 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 0x200 : 0x0005 0x204 : Pile du processus en cours 0x400: 0x0003 0x404: 0x040 0x408: 0x108 (PC) (pile utilisable par ISR) ALU 0x64C: PUSH R1 0x670: IRET Table des vecteurs d int 0xFF00: 0x844 0xFF10: 0x64C (asm x86) ISR code N o 0 1 4 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 41 / 93

Exceptions et Interruptions Traitement de l interruption Contrôleur d interruptions et traitement 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 IDTR 0xFF00 SP 0x40 8 Address bus IRET Data bus INT PIC Périph. 7 Memory 0x100 : LDR R2, 0x200 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 0x200 : 0x0005 0x204 : Pile du processus en cours 0x400: 0x0003 0x404: 0x040 0x408: 0x108 (PC) ALU 0x64C: PUSH R1 (asm x86) 0x670: IRET ISR code Table des vecteurs d int 0xFF00: 0x844 0xFF10: 0x64C N o 0 1 4 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 42 / 93

Exceptions et Interruptions Traitement de l interruption Contrôleur d interruptions et traitement 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 R1, R2,. PC 0x108 IR IRET IDTR 0xFF00 SP 0x408 0x408 Address bus 0x108 (PC) Data bus INT PIC Périph. 7 Memory 0x100 : LDR R2, 0x200 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 0x200 : 0x0005 0x204 : Pile du processus en cours 0x400: 0x0003 0x404: 0x040 0x408: 0x108 (PC) ALU 0x64C: PUSH R1 (asm x86) 0x670: IRET ISR code Table des vecteurs d int 0xFF00: 0x844 0xFF10: 0x64C N o 0 1 4 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 43 / 93

Exceptions et Interruptions Traitement de l interruption Contrôleur d interruptions et traitement SP pointe vers le nouveau sommet de la pile le processus peut reprendre (mais il reste l int 7 à traiter) Single Core CPU R1, R2,. PC 0x108 IR IRET IDTR 0xFF00 SP 0x40 4 0x108? Address bus Data bus INT PIC Périph. 7 Memory 0x100 : LDR R2, 0x200 0x104 : LDR R3, #2 0x108 : ADD R3, R2, R3 0x10C : STR R3, 0x204 0x200 : 0x0005 0x204 : Pile du processus en cours 0x400: 0x0003 0x404: 0x040 0x408: 0x108 ALU 0x64C: PUSH R1 (asm x86) 0x670: IRET ISR code Table des vecteurs d int 0xFF00: 0x844 0xFF10: 0x64C N o 0 1 4 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 44 / 93

Plan Du source à l exécutable 1 Processeur Architecture ARM : principes Architecture Intel et Assembleur x86 2 Exceptions et Interruptions Définition Contrôleur d interruptions et traitement 3 Du source à l exécutable Le format ELF Les bibliothèques 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 (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 45 / 93

Du source à l exécutable Le format ELF Le processus : compilation de son programme/code La compilation C via GCC GCC : un préprocesseur (cpp) : suppression des commentaires, expansion des macros (.i) un compilateur (cc1) : traduction vers assembleur (.s) un assembleur (as) : traduction assembleur (.s) > objet.o (binaire machine) options possibles : - I[/chemin/vers/include] -L[/chemin/vers/bibliothèsque] -l[bibliothèque] (-g pour debug) un éditeur de lien : ld localise les symboles (fonctions, variables globales) dans les bibliothèques et objets reloge les symboles dans un même fichier mise sous un format exécutable en mémoire Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 46 / 93

Du source à l exécutable Le format ELF la création d un exécutable : la compilation sous Linux 1 gcc -E source.c -o source.i oucpp source.c -o source.i 2 gcc -S source.i -o source.s 3 gcc -c source.s -o source.o ouas source.s -o source.o 4 ld -lc -[runtime C librairies,] source.o -o source ougcc source.o -o source source assembleur objet (language machine) gcc E gcc S gcc c.c.i.s.o cpp cc1 as ld lc l[c runtime] lm ljpg libjpeg.a libm.a libc.a gcc lm ljpg executable (ELF) Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 47 / 93

Du source à l exécutable Le format ELF le format ELF ELF (Executable and Linking Format) conteneur des fichiers objets, exécutables et bibliothèques. utilisé par Linux, Wii, PS3, l entête ELF : la localisation dans le fichier de la table des sections l adresse de la fonction start (si un exécutable) la table des sections : donne la position dans le fichier ELF des diverses sections (.text (code),.data,.symbols, ) la table de programme : indique où charger en mémoire les sections ELF Header Programm Header Table.text.rodata (other sections).data Section Header Table Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 48 / 93

Du source à l exécutable le format ELF et relocation Le format ELF utilitaires du format elf objdump [option] [file] -f : affiche l entête ELF du fichier -h : affiche la table des sections -t : affiche la table des symboles -r : affiche la table de relogement -d : désassemble le code de la section.text -D : désassemble toute les sections nm [file] liste les symboles du fichier et leur état (Undefined, Text(fonction définie), Data définie) Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 49 / 93

Du source à l exécutable Le format ELF les différents fichiers objets Fichier objet relogeable :.o 1 table de symboles : noms des fonctions et variables globales Si le symbole est défini, l offset à partir du début de la section où se trouve sa définition (code pour une fonction, valeur pour une variable). 1 table de relogement : offsets où apparaissent chaque symbole non défini dans le fichier un fichier adapté au relogement : permet de remplacer rapidement les endroits où les symboles non définis aparaissent par leur définition quand celle-ci est connue (édition de lien avec un autre.o ou une bibliothèque). Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 50 / 93

Du source à l exécutable Fichier objet relogeable.o Le format ELF gcc -c hello.s -o hello.o etobjdump -t -r -D hello.o hello.c extern int a; void main() { printf("hello world %i!",a); } hello.o Disassembly of section.text: 00 00 00 00 <main>: 0: 55 push %epb 1:. 9: a1 00 00 00 00 mov?, %eax e:. 10=0x0a 19: e8 fc ff ff ff call 1a <main+0x1a> SYMBOL TABLE: Offset section name 00000000 g.text 00000020 main 00000000 *UND* 00000000 a 00000000 *UND* 00000000 printf Undefined RELOCATION RECORDS FOR [.text]: OFFSET TYPE 0000000a 0000001a R_386_32 R_386_PC32 VALUE a printf Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 51 / 93

Du source à l exécutable Fichier objet relogeable.o Le format ELF gcc -c def.c -o def.o etobjdump -t -r -D def.o def.c int a=0xaa; def.o Disassembly of section.data: 0:aa 00 00 00 SYMBOL TABLE: RELOCATION RECORDS: empty 00000000 g.data 00000000 a Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 52 / 93

Du source à l exécutable Le format ELF Edition de lien et affectation d adresse mémoire gcc hello.o def.o -o hello : fusion sections text, data et affectation d une adresse mémoire finale aux symboles pour exécution hello.o def.o hello Disassembly of section.text: 8048320 <start_>: 8048320: 31 ed xor %ebp,%ebp 8048322: 804841c <main>: 804841c: 55 push %ebp 804841d: 8048425: a1 20 a0 04 08 mov 0x804a020,%eax 804842a: 8048435: e8 b6 fe ff ff call 80482f0<printf@plt> 804843a: (@ via un offset) Disassembly of section.data: 804a020: aa 00 00 00 <a> SYMBOL TABLE : (optional, can be removed with cmd strip) NO RELOCATION RECORDS ELF HEADER: start address 0x08048320 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 53 / 93

Du source à l exécutable L exécutable : Exécution Le format ELF Chargement : loader (execv après fork (Linux)) (1) copie le code de l exécutable aux adresses définies à la compilation (2) exécution par copie de l adresse d entrée dans le registre PC Single Core CPU EAX EBX ECX PC 0x8048074 Main Memory (RAM) 00 45 F2 71 mov 0x804908c, %eax jne 0x45DE804 aa 00 00 00 0x0000000 0x8048074 (2) (1) (1) 0x804908c 0xFFF0000 "loader" Secondary Memory (Hard Disk Drive) @start_: 0x8048074 Programm Header section memory addr.text.data mov 0x804908c, %eax aa 00 00 00./prog ELF Header 0x8048074 0x804908c.text.data./toto.txt./011.mp3 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 54 / 93

Du source à l exécutable Les bibliothèques Les bibliothèques bibliothèque statique.a code de la librairie copié dans l exécutable exécutable sans dépendance lourde empreinte disque et mémoire bibliothèque dynamique.so édition de liens à l exécution pas de duplication de code empreinte mémoire légère dépendance : bibliothèque installée? Hello world! avec la lib C gcc static hello.c -o hello ls -l hello : 564 Ko gcchello.c -o hello ls -l hello : 7 Ko ldd./hello : (liste dépendances) libc.so.6 ld-linux.so.2 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 55 / 93

Du source à l exécutable Les bibliothèques Les bibliothèques dynamiques et statiques bibliothèques statiques.a bibliothèques dynamiques.so add.o printf.o fopen.o libc.a add.o printf.o fopen.o libc.so source.o source2.o source.o linker source2.o linker linker main: x x printf: x x x add: x x linker main: x x printf: x x Executables main: x partially linked executables main: x x (en mémoire) x add: x libc.so x printf.o printf: printf: fopen.o loader (execv) loader (execv) dynamic linker (ld linux.so) dynamic linker full executable in memory Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 56 / 93

Du source à l exécutable Les bibliothèques Création d une librairie statique bibliothèque statique.a une archive.a contenant un ensemble de.o création d une bibliothèque nommée_ma_bibliotec : ar -q lib_ma_bibliotec.a objet1.o objet2.o lib doit être ajouté devant le nom de la bibliothèque. compilation avec la bibliothèque préciser le nom de la bibliothèque sans le lib avec l option-l préciser son chemin relatif-l./ ou absolu-l/ example pour une bibliothèque dans le répertoire courant : gcc [sources.c,.o] -l_ma_bibliotheque -L. -o [exe] Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 57 / 93

Du source à l exécutable Les bibliothèques Création d une librairie dynamique Création en 2 étapes Créer des fichiers objets dont le code est indépendant de la position en mémoire (-fpic) : gcc -fpic.c -o.o création d une bibliothèque nommée_ma_bibliotec à partir des.o : gcc -shared -o libma_bibliotec.so [*.o] Installation de la bibliothèque partagée Les répertoires où le linker dynamique (ld) recherchent ces bibliothèques sont définis, à définir dans les fichiers de configuration /etc/ld.so.conf ou/etc/ld.so.conf.d/ En général :/usr/locla/lib,/lib la commandeldconfig doit ensuite être exécutée pour mettre à jour la liste des bibliothèques connues à partir des répertoires définis dans les fichiers de configuration. Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 58 / 93

Du source à l exécutable Les bibliothèques Création d une librairie dynamique Usage de la bibliothèque partagée préciser le nom de la bibliothèque sans le lib avec l option-l : gcc test.c -lma_bibliotec -o test à l exécution, la bibliothèque est chargée à partir de son répertoire d installation (exemple :/usr/lpcal/lib) Utilitaires ldd : liste les librairies dynamique nécessaires à un exécutable nm : liste les symboles définis dans le bibliothèque ldconfig : met à jour le cache des librairies connues parld à partir des répertoires définis dans/etc/ld.so.conf ldconfig -p affiche la liste des bibliothèques connues. Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 59 / 93

Du source à l exécutable Les bibliothèques Exercice1 1 Créer les fichiershello.c etdef.c précédemment introduit. 2 Faire dedef.c une bibliothèque statique et compilerhello.c en la liant avec votre bibliothéque statique. 3 Faire de même mais avec une bibliothèque dynamique. On utilisera la commandesudo -s pour passer utilisateur root et installer la bibliothèque dans un répertoire adéquat. (Attention à ne pas ecraser une bibliothèque existante.) Exercice2 1 Déterminer si la commandels (/bin/ls) nécessite des librairies dynamiques 2 La librairiepthread, listée et permettant de faire de la programmation de tâches concurrantes (à venir), permet elle de faire appel à la fonction pthread_create()? Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 60 / 93

Plan Gestion de la mémoire (pagination) 1 Processeur Architecture ARM : principes Architecture Intel et Assembleur x86 2 Exceptions et Interruptions Définition Contrôleur d interruptions et traitement 3 Du source à l exécutable Le format ELF Les bibliothèques 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 (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 61 / 93

Gestion de la mémoire (pagination) Problématique d un système multi-tâche Des processus/une mémoire : Et si la place est déjà occupée? or le code est dépendant de sa position en mémoire (adresses absolues des données) 0x00 0x08 0x10 0x18 0x20 0x28 0x30 0x38 Main Memory (RAM) 08 4F E1 C5 4F 23 A3 00 movl 0x30, %eax movl $0x32, %ebx addl (%ebx), %eax compl %edx, $0 jne 0x08 movl $1, %eax movl $2, %ebx subs %eax, %edx? Secondary Memory (Hard Disk Drive)./prog ELF Header @start_: 0x8048074 Programm Header section memory addr.text.data 0e 00 00 00 04 00 00 00 0x18 0x30 movl 0x30, %eax movl $0x32, %ebx addl (%ebx), %eax.text 0x3F./program2./program3 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 62 / 93.data

Gestion de la mémoire (pagination) Gestion de la mémoire Problématique de la réallocation dynamique comment positionner dynamiquement les processus en mémoire sans modifier TOUTES les adresses dans le code? (opération trop coûteuse) 2 solutions possibles utilisant une translation d adresse : la segmentation la pagination Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 63 / 93

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 Processus Mémoire Logique/Virtuelle 0x00 0x08 0x10 0x18 0x20 0x28 0x30 0x38 0x3C movl 0x30, %eax movl $0x32, %ebx addl (%ebx), %eax 0e 00 00 00 07 00 00 00 0x3F @logique 0x00 0x04 @physique Memoire Physique (RAM) 0x00 0x08 Processus A 0x08 0x10 movl 0x30, %eax 0x0C movl $0x32, %ebx 0x10 0x14 0x18 Processus B 0x18 0x10 0x1C 0x14 0x20 addl (%ebx), %eax 0x20 0x20 0x24 0x28 0x28 Processus B 0x2C 0x30 0x30 0x38 0x34 0x3C 0x38 0e 00 00 00 0x38 0x3C 07 00 00 00 0x3F 0x3C Chargmement du programme et céation table correspondance Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 64 / 93

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 @physique Memoire Physique (RAM) EAX EAX ECX PC 0x18 @start_: 0x18 0x18 0x00 0x04 0x08 0x0C 0x10 0x14 0x18 0x1C 0x20 0x24 0x28 0x2C 0x10 0x14 0x20 0x10 0x00 0x08 0x10 0x18 0x20 0x28 Processus A movl 0x30, %eax movl $0x32, %ebx Processus B addl (%ebx), %eax Processus A 0x30 0x34 0x38 0x3C 0x38 0x3C 0x30 0x38 0x3C Processus B 0e 00 00 00 07 00 00 00 0x3F Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 65 / 93

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 @physique Memoire Physique (RAM) EAX EAX movl 0x30,%eax PC 0x18 0x30 0x00 0x04 0x08 0x0C 0x10 0x14 0x18 0x1C 0x20 0x24 0x28 0x2C 0x10 0x14 0x20 0x38 Read 0x00 0x08 0x10 0x18 0x20 0x28 Processus A movl 0x30, %eax movl $0x32, %ebx Processus B addl (%ebx), %eax Processus A 0x30 0x34 0x38 0x3C 0x38 0x3C 0x30 0x38 0x3C Processus B 0e 00 00 00 07 00 00 00 0x3F Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 66 / 93

La pagination Gestion de la mémoire (pagination) Déplacement de code/donnée en mémoire physique 1 déplacement et mise-à-jour table EAX EAX PC @logique 0x00 0x04 0x08 0x0C 0x10 0x14 0x18 0x1C 0x20 0x24 0x28 0x2C 0x30 @physique 0x10 0x14 0x20 0x38 0x3C 0x08 0x0C Read 0x00 0x08 0x10 0x18 0x20 0x28 0x30 Memoire Physique (RAM) Processus A movl 0x30, %eax movl $0x32, %ebx Processus B addl (%ebx), %eax Processus A Processus B 0x34 0x38 0x38 0e 00 00 00 0x3C 0x3C 07 00 00 00 0x3F Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 67 / 93

Gestion de la mémoire (pagination) La pagination Avantage une donnée déplacée = une ligne de la table à modifier. beaucoup plus efficace qu une approche consistant à modifier dans le code toutes les @ faisant réfèrence à la donnée 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 2 n plutot qu individuellement Table de correspondance entre @logique et @physique du paquet Taille de la Table divisée par 2, 4 ou 2 n, gestion plus légère Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 68 / 93

Gestion de la mémoire (pagination) La pagination Table de pages blocs (ici de tailles 2 3 octets) sont appellés pages Processus Mémoire Logique/Virtuelle 0x00 0x08 0x10 0x18 0x20 0x28 0x30 0x38 0x3C movl 0x30, %eax movl $0x32, %ebx addl (%ebx), %eax 0e 00 00 00 07 00 00 00 Numéro de page 0 1 2 3 4 5 6 7 Table des pages Page virtuelle 0 1 2 3 4 5 6 7 Page physique 2 4 7 Memoire Physique (RAM) 0x00 0x08 0x10 0x18 0x20 0x28 0x30 0x38 0x3C Processus A movl 0x30, %eax movl $0x32, %ebx Processus B addl (%ebx), %eax Processus B 0e 00 00 00 07 00 00 00 Numéro de page 0 1 2 3 4 5 6 7 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 69 / 93

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 On indique dans la table que la page n est pas chargée avec un bit supplémentaire à 0 Processus Mémoire Logique/Virtuelle 0x00 0x08 0x10 0x18 0x20 0x28 0x30 0x38 0x3C movl 0x30, %eax movl $0x32, %ebx addl (%ebx), %eax 0e 00 00 00 07 00 00 00 Numéro de page 0 1 2 3 4 5 6 7 Table des pages Page virtuelle 0 1 2 3 4 5 6 7 Page physique 2 1 0 7 1 1:page présente 0:page absente Memoire Physique (RAM) 0x00 0x08 0x10 0x18 0x20 0x28 0x30 0x38 0x3C Processus A Processus A movl 0x30, %eax movl $0x32, %ebx Processus B Processus A Processus B Processus B 0e 00 00 00 07 00 00 00 Numéro de page 0 1 2 3 4 5 6 7 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 70 / 93

Gestion de la mémoire (pagination) La pagination : Mémoire virtuelle Mémoire virtuelle : besoin de charger la suite? on met la page non chargée temporairement sur une mémoire secondaire (disque dur) Table des pages Page virtuelle 0 1 2 3 4 5 6 7 Page physique 2 1 0 7 1 1:page présente 0:page absente Memoire Secondaire (Disque Dur) Memoire Physique (RAM) 0x00 0x08 0x10 0x18 0x20 0x28 0x30 Processus A Processus A movl 0x30, %eax movl $0x32, %ebx Processus B Processus A Processus B Processus B Numéro de page 0 1 2 3 4 5 6 addl (%ebx), %eax (3) 0x38 0x3C 0e 00 00 00 07 00 00 00 7 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 71 / 93

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 sur le disque : 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 0 1 2 3 4 5 6 7 Page physique 2 1 0 7 1 1:page présente 0:page absente Kswapd Memoire Physique (RAM) 0x00 0x08 0x10 0x18 0x20 0x28 0x30 Processus A Processus A movl 0x30, %eax movl $0x32, %ebx Processus B Processus A Processus B Processus B Numéro de page 0 1 2 3 4 5 6 Memoire Secondaire (Disque Dur) addl (%ebx), %eax (3) 0x38 0x3C 0e 00 00 00 07 00 00 00 7 swap area Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 72 / 93

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 Page virtuelle 0 1 2 3 4 5 6 7 Page physique 2 3 1 1 7 1 1:page présente 0:page absente Table des pages de B Page virtuelle 0 1 2 3 4 5 6 7 Page physique 5 1 6 1 3 0 1:page présente 0:page absente Memoire Physique (RAM) 0x00 0x08 0x10 0x18 0x20 0x28 0x30 Processus A Processus A movl 0x30, %eax movl $0x32, %ebx addl (%ebx), %eax Processus A Processus B Processus B Numéro de page 0 1 2 3 4 5 6 Memoire Secondaire (Disque Dur) swap area Processus B 0x38 0x3C 0e 00 00 00 07 00 00 00 7 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 73 / 93

Gestion de la mémoire (pagination) La pagination : Mémoire virtuelle Avantages Le Code et Données du programme sont 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 Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 74 / 93

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 (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 75 / 93

Plan Les entrées-sorties (I/O) 1 Processeur Architecture ARM : principes Architecture Intel et Assembleur x86 2 Exceptions et Interruptions Définition Contrôleur d interruptions et traitement 3 Du source à l exécutable Le format ELF Les bibliothèques 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 (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 76 / 93

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 (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 77 / 93

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 mémoire 0xFFFF mémoire 0xFFFF 0xF400 0xF140 Plage réservée I/O physique physique 0 I/O ports 0x6E 0 0 I/O registres par adresse de port I/O registres mappées en mémoire Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 78 / 93

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 Memory IO/M 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 2010-2011 79 / 93

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 (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 80 / 93

I/O par port Les entrées-sorties (I/O) I/O par port 0 0 0 0 0 0 0 1 2 #define PORT 0x378 main{ ioperm(port,2,1); //demande accès (1=accès on) //à 2 octets à partir // de l @ de port PORT + outb(0x1,port); //ecriture sur port //de la valeur 1 } (source : linux device drivers, 3eme edition) Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 81 / 93

I/O mapping Les entrées-sorties (I/O) I/O mappées en mémoire 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) CPU Address Bus 0xFF4A Data Bus TOLUD<0xFF4A<0xFFFF NorthBridge 0xFFFF 0x0000 Memory PCI device controller South bridge Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 82 / 93

Les entrées-sorties (I/O) I/O mappées en mémoire I/O mapping adressage sur le bus PCI identifiant unique (vendeur :produit) pour chaque périph. PCI attribution dynamique d adresses par le système PCI aux périphs. cat /proc/meminfo : 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 (Linux) pci_find_device(vendor,device) : fonction du noyau pour récupère les infos du périph. accès semblable à une mémoire : read(), write() (ou ioread(b) iowrite(b)) Or linux utilise des adresses virtuelles la fonction add virtuel ioremap(add phys) si nécessaire attribue une adresse virtuelle pour accéder au périph. Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 83 / 93

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) 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) Sur l architecture x86 : cohabitation des 2 modes d adressage (pci) +void* ioport_map(port), permet d attribuer une adresse virtuelle à un port (émulation d une IO mappée) Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 84 / 93

I/O par port : Exercice Les entrées-sorties (I/O) I/O mappées en mémoire Activation LED clavier AT Le clavier PS/2-ATK utilisent 2 ports : 0x60 et 0x64. 0x64 Data port clavier (read/write) 0x64 Command register (write) Status register (read) Le registre de status 1 (controlleur du clavier) est représenté ci-dessous. Avant chaque écriture sur le Data port (clavier), il faut vérifier que le bit 1 du registre de status est nul (buffer d écriture du clavier vide). Sinon on attend pour écrire. Avant chaque lecture sur le Data port, il faudrait vérifier que le buffer de sortie est plein : qu il y a quelque chose à lire. Loïc Cuvillon (ENSPS) Systèmes temps réel et systèmes embarqués Année scolaire 2010-2011 85 / 93