Systèmes intégrés multiprocesseur



Documents pareils
Une méthode de conception de systèmes sur puce

Modélisation des interfaces matériel/logiciel

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

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1

Cours A7 : Temps Réel

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

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

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

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Cours de Systèmes d Exploitation

Thème 3 Conception et vérification d architectures de systèmes sur puce

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I

Initiation au HPC - Généralités

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

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Compilation (INF 564)

Introduction à la programmation concurrente

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Problèmes liés à la concurrence

Les processus légers : threads. Système L3, /31

Introduction aux Systèmes et aux Réseaux

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

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

Ordonnancement temps réel

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

MEAD : temps réel et tolérance aux pannes pour CORBA

Un ordonnanceur stupide

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

Conception des systèmes répartis

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

DAns un système multi-utilisateurs à temps partagé, plusieurs processus

Chapitre 1 : Introduction aux méthodologies de conception et de vérification pour SE

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

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

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

Synchro et Threads Java TM

Architecture des ordinateurs

Rappels d architecture

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Concept de machine virtuelle

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Conception de circuits numériques et architecture des ordinateurs

Introduction aux systèmes temps réel. Iulian Ober IRIT

Métriques de performance pour les algorithmes et programmes parallèles

Potentiels de la technologie FPGA dans la conception des systèmes. Avantages des FPGAs pour la conception de systèmes optimisés

SugarCubes. Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués. Paris, le 9 janvier, 2009

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

Architecture des calculateurs

Introduction : les processus. Introduction : les threads. Plan

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

Programmation d Applications Concurrentes et Distribuées (INF431)

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES

Introduction à la Programmation Parallèle: MPI

ORDONNANCEMENT CONJOINT DE TÂCHES ET DE MESSAGES DANS LES RÉSEAUX TEMPS RÉELS 4. QUELQUES EXEMPLES DU DYNAMISME ACTUEL DU TEMPS RÉEL

Systèmes d exploitation Gestion de processus

Windows Server Chapitre 1: Découvrir Windows Server 2008

vbladecenter S! tout-en-un en version SAN ou NAS

La carte à puce. Jean-Philippe Babau

Applications Embarquées Critiques

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

en version SAN ou NAS

Génération de code binaire pour application multimedia : une approche au vol

Cours 2: Exclusion Mutuelle entre processus (lourds, ou légers -- threads)

Ordonnancement temps réel

Linux embarqué Retour d expérience et temps réel. Denis Coupvent-Desgraviers

Hardware dependant Software design

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Sans trop entrer dans les détails, la démarche IO Model consiste à : Pour cela, Microsoft découpe la maîtrise de l infrastructure en quatre niveaux :

Atelier : Virtualisation avec Xen

Guide d'installation et de configuration de Pervasive.SQL 7 dans un environnement réseau Microsoft Windows NT

Conception de circuits numériques et architecture des ordinateurs

Threads. Threads. USTL routier 1

Introduction aux systèmes temps réel

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

Implémentation Matérielle des Services d un RTOS sur Circuit Reconfigurable

Présentation d HyperV

On appelle variable condition une var qui peut être testée et

VMWare Infrastructure 3

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Communications performantes par passage de message entre machines virtuelles co-hébergées

Chapitre 4 : Outils de communication centralisés entre processus

THÈSE DE DOCTORAT DE L UNIVERSITÉ PIERRE ET MARIE CURIE

Systèmes et traitement parallèles

IFT Systèmes d exploitation - TP n 1-20%

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Exercices INF5171 : série #3 (Automne 2012)

1. Systèmes d entrée/sortie 2. Systèmes de fichiers 3. Structure de mémoire de masse (disques)

Architecture distribuée

Cours Bases de données

INITIATION AU LANGAGE JAVA

Chapitre 1. Infrastructures distribuées : cluster, grilles et cloud. Grid and Cloud Computing

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Modélisation de la Reconfiguration Dynamique appliquée à un décodeur LDPC Non Binaire

Mécanismes de protection dans AUTOSAR OS

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

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

Transcription:

Systèmes intégrés multiprocesseur Applications, architectures et logiciels embarqués Frédéric Pétrot Département ASIM/LIP6 Université Pierre et Marie Curie Frédéric Pétrot 1 Plan de la présentation Problématique Modélisation d applications en vue d implantations matérielles/logicielles Quelques architectures matérielles Implantation d une spécification Logiciel embarqué Frédéric Pétrot 2

Plan de la présentation Problématique Modélisation d applications en vue d implantations matérielles/logicielles Quelques architectures matérielles Implantation d une spécification Logiciel embarqué Frédéric Pétrot 3 Problématique Implanter une application sur matériel/logiciel Coût minimal pour production de masse Temps de conception contraint Chemin de la spécification à l implantation Sémantique de spécification Transformations applicables Architecture(s) cible(s) : processeurs, coprocesseurs, noyaux, communications,... Espace des solutions vaste Frédéric Pétrot 4

Applications décrites comme : Problématique un programme identique s exécutant n fois (flot de données) ensemble de tâches indépendantes : Network processing T T T T Frédéric Pétrot 5 Applications décrites comme : Problématique graphe de tâches communicantes (flot de données) ensemble de tâches se partageant des ressources : Multimédia T2 T4 T1 T3 T5 Frédéric Pétrot 6

Applications décrites comme : Problématique une machine à états (contrôle/commande) gestion asynchrone d évènements : Automobile T1 T2 T3 T4 T5 Frédéric Pétrot 7 Problématique Problèmes à résoudre : 1. Implantation optimisée matériel/logiciel 2. Conservation de la sémantique de haut niveau Contraintes : 1. Temps de conception 2. Débit, latence, consommation, surface, souplesse 3. Architectures visées : matériel et logiciel existant partiellement Frédéric Pétrot 8

De l avenir du matériel spécialisé Source : Dwight W. Decker, Conexant Systems, Inc. Frédéric Pétrot 9 De l avenir du matériel spécialisé Source : Dwight W. Decker, Conexant Systems, Inc. Frédéric Pétrot 10

Source : John Cohn, IBM De l avenir du matériel spécialisé SoC Architecture for Low Power µp C 1 X complex core 38W @ 1.3 4X GHz, 85mm 2 MMU Memory Subsystem 4X Total Core Power: 38W -vs- Total Core Power: 5W C4 X simple C core C in SoC C 2X 1.2W @ 2X 0.5 GHz, 2X 15mm 2 2X MMU Memory Subsystem 4X Problem Big uni-processors getting too hot! Yield, design cost, TAT also degrading Solution Combine small, fast cores in SoC style Exploit multi-thread parallelism Dramatically lower power While preserving system-level throughput.. At cost in uni performance, sw complexity Bonus: Improved power, design cost, TAT Frédéric Pétrot 11 Plan de la présentation Problématique Modélisation d applications en vue d implantations matérielles/logicielles Quelques architectures matérielles Implantation d une spécification Logiciel embarqué Frédéric Pétrot 12

Spécification: intérêt du parallélisme Tapp Tc1Tc2 processeur 1 T2 2 3 4 Tapp processeur coprocesseur 1 2 3 4 T2 1 2 3 4 processeur coprocesseur T2c Tapp 1 3 2 T2 4 Frédéric Pétrot 13 Initialement : Spécifications Application séquentielle Langage de programmation classique (C, C++) Réseaux de «Kahn» : Extraction du parallelisme à gros grain Graphe de tâches qui communiquent à travers des FIFOs FIFO: FIFO de taille infinie sans pertes Lectures bloquantes comportement indépendant des dates d exécution des tâches En réalité : FIFO de taille finie, écritures bloquantes propriétés conservées risque de deadlock Frédéric Pétrot 14

Modèle de communication Actions liées à la communication par FIFO Transfert des données entre les 2 bouts du tuyau Mise à jour de la variable d état de la FIFO partagée par le producteur et le consommateur pas d accès simultanée à une ressource partagée Suspension de la tâche tentant de consommer d une FIFO vide (ou de produire dans une FIFO pleine) Réveil d une tâche lorsque des données sont disponibles (ou des cases sont vides) Implementation dépend clairement de la nature HW/SW des tâches Frédéric Pétrot 15 Plan de la présentation Problématique Modélisation d applications en vue d implantations matérielles/logicielles Quelques architectures matérielles Implantation d une spécification Logiciel embarqué Frédéric Pétrot 16

Rappel utile,... Les CPUs usuels pour l embarqué 32-bit Family Number Sold Chip Category Embedded 4-bit Embedded 8-bit Embedded 16-bit Embedded 32-bit DSP Desktop 32/64-bit Number Sold 2000 million 4700 million 700 million 400 million 600 million 150 million David Tennenhouse (Intel Director of Research). Keynote Speech at the 20th IEEE Real-Time Systems Symposium (RTSS 99), December 1999 ARM Motorola 68k MIPS Hitachi SuperH x86 PowerPC Intel i960 SPARC AMD 29k Motorola M-Core 151 million 94 million 57 million 33 million 29 million 10 million 8 million 3 million 2 million 1 million T. R. Halfhill. Embedded Market Breaks New Ground. Microprocessor Report, January 2000 Frédéric Pétrot 17 Architecture hautes performances Plateforme multiprocesseur à mémoire partagée : Processing Node Processing Node Processing Node Processing Node RAM RAM CTRL on chip interconnect RAM ROM COPROCESSOR PERIPHERAL Frédéric Pétrot 18

Exemples de nœuds de calculs CPU CPU CPU CPU VCI Wrapper ICache ICache SPM VCI Wrapper VCI Wrapper VCI Wrapper CPU Local Memory CPU DMA Engine ICache SPM VCI Wrapper VCI Wrapper Expertise LIP6 : MIPS R3000 (mc), Sparc V8, Caches, DMA, ITC Frédéric Pétrot 19 Exemples d interconnexions Bus Controller unit VCI/PI MW VCI/PI MSW On Chip Bus VCI/PI SW VCI/PI W VCI/PI W VCI/PI W Expertise LIP6 : Bus : PI-Bus VCI PI wrappers, BCU ; Frédéric Pétrot 20

Exemples d interconnexions VCI/NOC W VCI/NOC W VCI/NOC W VCI/NOC W VCI/NOC W VCI/NOC W VCI/NOC W VCI/NOC W Expertise LIP6 : Réseau : Spin VCI Spin wrappers ; Frédéric Pétrot 21 En résumé Intérêts/particularités du SoC : Système à mémoire partagée à large échelle Latence moyenne assez faible Nombre d I/O sur core peut être grand Nombre de fils peut être grand CPU sans mémoire virtuelle Séparation user/kernel non significative Frédéric Pétrot 22

Plan de la présentation Problématique Modélisation d applications en vue d implantations matérielles/logicielles Quelques architectures matérielles Implantation d une spécification Logiciel embarqué Frédéric Pétrot 23 Support d exécution des tâches Sur processeur ou coprocesseur spécialisé? Fondamentalement : Performance Consommation Surface Mais aussi : Temps et coût de développement Possibilité de reprogrammer a posteriori Partage efficace des ressources matérielles Frédéric Pétrot 24

Exemple d affectation SH HS T2 T4 SS HH T1 T3 T5 T6 Processor Coprocessor Coprocessor Bus Controller unit Master Slave Master/Slave On Chip Bus Slave Master/Slave Slave Memory Coprocessor Coprocessor Frédéric Pétrot 25 Implantation des communications Assurer le transfert des données sans pertes : entre tâches logicielles entre une tâche logicielle et un coprocesseur entre coprocesseurs Minimiser les coûts de synchronisation : traitement des interruptions bande passante du bus/latence du réseau commutation de contexte processeur Frédéric Pétrot 26

Standard bien venu,... Support matériel Au niveau protocole : VCI, Amba,... Au niveau «sémantique» : Pilote spécifique qui assure cela par coprocesseur En théorie, on aimerait : Un module d interface Maître/Esclave avec interface FIFO Un petit nombre de pilotes En pratique : C est la jungle! Frédéric Pétrot 27 Plan de la présentation Problématique Modélisation d applications en vue d implantations matérielles/logicielles Quelques architectures matérielles Implantation d une spécification Logiciel embarqué Frédéric Pétrot 28

Logiciel(s) embarqué(s) Noyaux : très liés au(x) processeur(s) à l interconnect Ex : VxWorks, VRTX, psos, OSEK/VDX, Chorus, Windows CE, ecos, RTEMS, LynuxOS, Mythos, rtmk,... Couches de communication : très liées au(x) processeur(s) à l interconnect au matériel spécialisé aux interruptions Bibliothèque de fonctions «standards» : dépendent d une machine virtuelle d exécution plus ou moins standardisée Applicatif Frédéric Pétrot 29 Exemple d implantation d un noyau Services standards des thread POSIX Multi-tâches Multiprocesseur (PRAM) Multi bancs mémoire Exploration d architecture abstraction du matériel délicate Application Bibliothèque standard Communications Noyau Matériel Pour : performance, taille, adapté au problème définition des services Contre : élégance, portabilité Frédéric Pétrot 30

Service de base d un noyau: initialisation création de l ordonnanceur ; création et lancement du thread main ; exécution des tâches. masquage des interruptions auto-identification des différents processeurs allocation mémoire statique (ou dynamique) cohérence des accès mémoire partagés séquentialisation des accès mémoire partagés execution par processeur 0 ; attente fin de création ordonnanceur pour processeurs i 0; execution tâches par processeurs i. Frédéric Pétrot 31 Initialisation: pseudo-code scheduler_created 0, proc_id 0 {Exécuté lors du chargement} lock get_lock() {Exécuté par tous les processeurs} spin_lock(lock), set_proc_id(proc_id ++), spin_unlock(lock) if get_proc_id =0then RAZ de la section.bss positionne une pile pour processeur 0 création du/des ordonnanceur(s) et du thread main, scheduler_created 1 autorise les interruptions saut (goto)àmain else positionne une pile pour processeur i 0 while scheduler_created =1end while {Variable volatile} spin_lock(scheduler) commute() {Processeur disponible pour exécuter un thread } end if Frédéric Pétrot 32

Service de base d un noyau: changement de contexte Définition du contexte d exécution : R3000 : $i, i (26, 27, 28), $hi, $lo, $sr, $cr ; Sparc : %g, n fenêtres, %psr, %wim, %y ; registres flottants et/ou des coprocesseurs (s il y en a). mise à jour de la mémoire (si cache write-back) mémoire scratch pad fait partie du contexte Changement de contexte (interruptions globalement masquées) : sauvegarde éventuelle du contexte ; chargement d un nouveau contexte. contexte peut être sauvé par un processeur et chargé par un autre masquage des interruptions identique sur tous les processeurs localisation du contexte Frédéric Pétrot 33 Changement de contexte: pseudo-code save_context(current) {Sauve le context dans la table current} current[0] r 0 current[1] r 1 current[i] r i current[n] r n retour à l appellant restore_context(current) r 0 current[0] {Restore le context à partir de la table current} r 1 current[1] r i current[i] r n current[n] retour à l appellant... lors du save_context! Frédéric Pétrot 34

Service de base d un noyau: interruptions quel(s) processeur(s) reçoi(ven)t les interruptions? masquage / demasquage global masquage / demasquage du timer sauvegarde/restoration de l état : état contexte! uniquement les registres temporaires tous les registres dans la pile du thread dans un tableau unique réentrance entrée sur un proc et sortie sur un autre ordonnancement preemptif masquage/demasquage effectué par le matériel dépend fortement du matériel (CPU et ITC) peut permettre aux CPUs de communiquer Frédéric Pétrot 35 Interruptions: pseudo-code tstack = tstack + n +1 tstack[0] r 0 tstack[1] r 1 tstack[i] r i tstack[n] r n Analyse de la cause de l interruption/exception Action qui peut suspendre la tâche r 0 tstack[0] r 1 tstack[1] r i tstack[i] r n tstack[n] tstack = tstack n 1 retour après l instruction interrompue Pointeur de pile : première case vide à tout moment Frédéric Pétrot 36

Sous ensemble POSIX retenu Existant : threads: create, exit, real-time task (non-posix) spin locks: init, lock, unlock (hw test & set) : init, lock, unlock conditions: init, wait, signal, broadcast semaphores: init, wait, post join, cancel, yield setjmp, longjmp signal timers: create, delete, settime, gettime, getoverrun Frédéric Pétrot 37 Types : Mutliprocesseur symétrique (SMP) Ordonnancement unique ordonnanceur centralisé ; ordonnanceur exécuté sur tous les processeurs ; migration de tâches. Mutliprocesseur centralisé à tâches affectées Idem SMP, mais : tâches attachées à un processeur pas de migration de tâches. Mutliprocesseur distribué à tâches affectées autant d ordonnanceurs que de processeurs ; ordonnanceur exécuté par son processeur ; tâches attachées à un processeur Frédéric Pétrot 38

Ordonnancement Préemption : 1. tâche courante pouvant être interrompue sans son accord ; 2. appel système pouvant être interrompu. Algorithmes d élection : FIFO : fair play, sans famine, temps moyen optimisé Par priorités : permet d avoir des garanties statiques ou dynamiques ; caculée en fonction de période, durée, écheance ; difficile en cas de partage de ressources ; encore plus difficile en multiprocesseur,... Frédéric Pétrot 39 Ordonnancement scheduler lock stack(s) wakeup alarm date signals run runnable join zombie lock stacks : assure l accès exclusif (inutile en monoprocesseur) ; : pile(s) spéficique(s), utilisée(s) si CPU en attente ; wakeup : indique la disponibilité d une tâche (variable volatile); alarm : signal utilisé si dépassement d échéance ; date : date courante (en temps absolu) ; signals : signaux reçus ; autres : listes de tâches. Frédéric Pétrot 40

Activée si zéro tâche exécutable : Difficultés : deadlocks fonctionnels ; Attente CPU attente d un fin d exécution matérielle ; autres processeurs en cours d exécution (multipro). plusieurs processeurs en attente simultanément ; dernière tâche suspendue peut être réveillée ; interruptions matérielles activées. incrémentation de wakeup en entrant dans boucle décrémentation de wakeup lors du réveil d une tâche Frédéric Pétrot 41 Attente CPU : pseudo-code if current then save_context(current) current.return_addr adresse de fin de fonction pile pile de l ordonnanceur repeat go wakeup, wakeup++ spin_unlock(lock), it_timer_mask, it_global_unmask while wakeup > go end while it_global_mask, it_timer_unmask, spin_lock(lock) thread scheduler_elect() until thread exists restore_context(thread ) end if fin de fonction Frédéric Pétrot 42

Unité d exécution séquentielle thread links context father children state signals handlers jmpbuf condition join semaphore Tâches links : pour faire des ensembles de threads ; context : tout est dit ; father : thread père ; children : nombre de fils ; state : état ; signals : signaux reçus ; handlers : gestionnaires de signaux ; jmpbuf : contexte utilisé par setjmp/longjmp ; condition : lien lors d attente sur condition ; : lien lors d attente sur ; semaphore : lien lors d attente sur sémaphore ; join : pointeur sur tâche attendant ma fin ; attributs : voir la suite! Frédéric Pétrot 43 Tâches Attributs Create pthread_cond_broadcast pthread_cond_signal pthread unlock sem_post elect WAIT pthread lock pthread_cond_wait sem_wait pthread_create RUNNABLE pthread_exit RUN ZOMBIE yield timer pthread_exit JOIN pthread_join pthread_exit Delete pthread_exit adresse et taille de pile ; détachable? héritage de la politique d élection? politique d élection (OTHER, FIFO, RR) ; paramètres de la politique d élection ; date de début ; période ; échéance ; contexte initial ; gestionnaire de dépassement ; argument du gestionnaire. Paramètres de la politique libre Frédéric Pétrot 44

Tâches : allure tâches classiques : tâches temps réelles : Pour POSIX temps réel priorités Ne permet pas de : 1. démarrer une tâche à une date donnée ; 2. relancer périodiquement une tâche ; 3. détecter un dépassement d échéance ; 4. razer une tâche dépassant l échéance. tâche() begin loop action end loop end sauve état initial loop restore état initial? attend début de période tâche() begin action end end loop Frédéric Pétrot 45 La tâche 1 acquière le Exemple du : principe lock wait state scheduler lock thread 1 next thread 2 next thread 3 next run runnable thread 4 next Frédéric Pétrot 46

La tâche 2 tente d obtenir le Exemple du : principe scheduler lock run runnable lock wait state thread 2 next thread 1 next thread 4 next thread 3 next Frédéric Pétrot 47 La tâche 3 tente d obtenir le Exemple du : principe scheduler lock run runnable lock wait state thread 2 next thread 1 next thread 4 next thread 3 next Frédéric Pétrot 48

La tâche 1 relâche le Exemple du : principe scheduler lock run runnable lock wait state thread 3 next thread 1 next thread 2 next thread 4 next Frédéric Pétrot 49 Exemple du : le lock int _pthread lock(pthread t *) { pthread_t self; _pthread_spin_lock(->sem); self = _pthread_self(); while (-> == MUTEX_LOCKED) { _pthread_spin_lock(scheduler->sem); self-> = ->wait; ->wait = self; _pthread_spin_unlock(->sem); enqueue(self, PS_WAIT); _pthread_commute(self); _pthread_spin_unlock(scheduler->sem); _pthread_spin_lock(->sem); } -> = MUTEX_LOCKED; _pthread_spin_unlock(->sem); return 0; } Frédéric Pétrot 50

Exemple du : le unlock int _pthread unlock(pthread t *) { pthread_t thread; _pthread_spin_lock(->sem); if ((thread = ->wait)!= NULL) { _pthread_spin_lock(scheduler->sem); ->wait = thread->; enqueue(remove(thread), PS_RUNNABLE); scheduler->wakeup--; _pthread_spin_unlock(scheduler->sem); } -> = MUTEX_UNLOCKED; _pthread_spin_unlock(->sem); } Frédéric Pétrot 51 Allocation/Placement mémoire Architecture adaptée : requêtes simultanées possibles sur l interconnexion ; mémoire logiquement unifiée physiquement distribuée. CPU 0 CPU 1 CPU 2 CPU m VCI Wrapper VCI Wrapper VCI Wrapper VCI Wrapper VCI compliant on chip interconnect VCI Wrapper VCI Wrapper VCI Wrapper VCI Wrapper RAM BANK 0 RAM BANK 1 RAM BANK 2 RAM BANK n Frédéric Pétrot 52

Allocation/Placement mémoire Architecture adaptée : requêtes simultanées possibles sur l interconnexion ; mémoire logiquement unifiée physiquement distribuée. CPU 0 CPU 1 CPU 2 CPU m VCI Wrapper VCI Wrapper VCI Wrapper VCI Wrapper VCI compliant on chip interconnect VCI Wrapper VCI Wrapper VCI Wrapper VCI Wrapper RAM BANK 0 RAM BANK 1 RAM BANK 2 RAM BANK n Frédéric Pétrot 53 Allocation/Placement mémoire Architecture adaptée : requêtes simultanées possibles sur l interconnexion ; mémoire logiquement unifiée physiquement distribuée. CPU 0 CPU 1 CPU 2 CPU m VCI Wrapper VCI Wrapper VCI Wrapper VCI Wrapper VCI compliant on chip interconnect VCI Wrapper VCI Wrapper VCI Wrapper VCI Wrapper RAM BANK 0 RAM BANK 1 RAM BANK 2 RAM BANK n Frédéric Pétrot 54

Allocation/Placement mémoire Architecture adaptée : requêtes simultanées possibles sur l interconnexion ; mémoire logiquement unifiée physiquement distribuée. CPU 0 CPU 1 CPU 2 CPU m VCI Wrapper VCI Wrapper VCI Wrapper VCI Wrapper VCI compliant on chip interconnect VCI Wrapper VCI Wrapper VCI Wrapper VCI Wrapper RAM BANK 0 RAM BANK 1 RAM BANK 2 RAM BANK n Frédéric Pétrot 55 Allocation/Placement mémoire Architecture adaptée : requêtes simultanées possibles sur l interconnexion ; mémoire logiquement unifiée physiquement distribuée. CPU 0 CPU 1 CPU 2 CPU m VCI Wrapper VCI Wrapper VCI Wrapper VCI Wrapper VCI compliant on chip interconnect VCI Wrapper VCI Wrapper VCI Wrapper VCI Wrapper RAM BANK 0 RAM BANK 1 RAM BANK 2 RAM BANK n Frédéric Pétrot 56

Allocation/Placement mémoire Influences : type d ordonnancement (SMP, tâches affectées,...) ; accès mémoire (UMA vs NUMA) ; degré de parallélisme des accès ; granularité des données ; sémantique d accès aux données : 1. FIFO seulement 2 accès ; 2. rwlocks plusieurs lecteurs, unique écrivain ; 3. shared memory???... Frédéric Pétrot 57 Allocation/Placement mémoire : Implémentation Visible du programmeur : introduction de pmalloc void * ma [] = { n - 1, start-addr0, end-addr0,...,..., start-addrn, end-addrn }; void *pmalloc(int pool, size_t nbytes); ma pool description de l architecture mémoire du système ; index logique d une zone de mémoire fonctions ne connaissent pas le nombre de bancs a priori. Frédéric Pétrot 58

Allocation/Placement mémoire : Implémentation Non thread-safe : pthread_spin_lock(sem); x = pmalloc(pool++, n); pthread_spin_unlock(sem); Utilisé dans les fonctions de bibliothèques : pthread_create alllocation du thread et de sa pile dans le même pool nouveau pool par nouveau thread ; ChannelInit allocation du canal et de ses attributs dans un pool. Difficile de spécifier le pool car toute fonction allouant de la mémoire doit posséder ce paramètre Frédéric Pétrot 59 Plateforme expérimentale R3000 R3000 R3000 R3000 R3000 R3000 PI Bus RAM.text RAM.data RAM.reset RAM.excp VCI Wrapper Vectors Interrupt Interrupt Control VCI Wrapper Interface Ramdac VCI Wrapper Interface Tg tg c0 demux c4 c5 c2 c1 vld c3 c6 iq c7 prod prod cons cons ramdac c10 libu c9 idct c8 zz prod cons Multi JPEG COMM Frédéric Pétrot 60

Types de noyaux implantés Symmetric Multiprocessor. Centralized Non SMP. Distributed Non SMP. n procs, 1 sched, migration de tâches n procs, 1 sched, pas de migration n procs, n scheds, pas de migration Organisation SMP NON_SMP_CS NON_SMP_DS Taille du code 7500 9500 10200 + 80 n Temps d exécution de quelques primitives du noyau Number of CPUs 1 2 4 6 Context Switch 172 187 263 351 Mutex Lock (acquis) 36 56 61 74 Mutex Unlock 30 30 31 34 Mutex Lock (suspendu) 117 123 258 366 Mutex Unlock (réveil un thread) - 191 198 218 Thread Creation 667 738 823 1085 Frédéric Pétrot 61 Résultats Décodeur Multi-JPEG : temps de décodage 2.5e+08 2e+08 SMP Non SMP centralized scheduler Non SMP distributed scheduler cycles 1.5e+08 1e+08 5e+07 0 1 2 3 4 5 processors Frédéric Pétrot 62

Résultats Décodeur Multi-JPEG: cycles oisifs cummulés 1e+09 1e+08 SMP Non SMP centralized scheduler Non SMP distributed scheduler cycles 1e+07 1e+06 100000 2 3 4 5 processors Frédéric Pétrot 63 Résultats Application COMM : temps d exécution 6e+07 5e+07 SMP Non SMP centralized scheduler Non SMP distributed scheduler 4e+07 cycles 3e+07 2e+07 1e+07 0 1 2 3 4 5 processors Frédéric Pétrot 64

Conclusion SoC GPC SoC multiprocesseur multiprocesseur Noyau POSIX : Simple, généraliste et relativement minimal Multiprocesseur Stratégies dépendantes de l application A résoudre : Abstraction du matériel Prise en compte de choix architecturaux/systèmes : Scratch pad NUMA Optimisation des communications système Frédéric Pétrot 65