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