Systèmes Embarqués Numériques Mounir Benabdenbi Maître de Conférences Grenoble INP, Phelma [email protected] 1 Documents de référence n Sources du support de cours & Bibliographie : ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Computer Architecture, A Quantitative Approach 5th Edition, Hennessy & Patterson Introduction to Embedded Systems - A Cyber-Physical Systems Approach, Lee & Seshia, http://leeseshia.org Cours de Jean-Michel Richer: http://www.info.univ-angers.fr/~richer/ensl3i_crs4.php Principles of Operating Systems Alex C. Snoeren https://cseweb.ucsd.edu/classes/fa05/cse120/lectures/120-l5.pdf Introduction au parallélisme, Fabrice Harrouet http://www.enib.fr/~harrouet/Data/Courses/Intro_Parallelisme.pdf Les multi-processeurs, Patrick Arlaud et Jerome Dupire, cours du CNAM Cours de Michele Portolan: ensiwiki SLE Archi 2A Cours de Dominique Borrione Master NENT Cours de Daniel Etiemble Cours de Francois Pecheux Wikipedia 2 But du cours n n Introduire des concepts, méthodes et techniques de conception de systèmes complexes (SOC) TP-Projet: concevoir un système multi-processeurs ¡ ¡ ¡ ¡ Exécuter une application multi-tâches (MJPEG) sur un système multiprocesseurs modélisé en SystemC Intégration de composants HW Etude de l’interface HW/SW (Drivers, OS, …) Optimisation des performances: n Paramètres logiciels (nombre de tâches, drivers, …) n Paramètres matériels (caches, nombre de processeurs, DMA, …) 3 Plan du cours 1. 2. 3. 4. Introduction: aspects intégration, rôle des composants, standards Hiérarchie Mémoire & Mémoire Virtuelle: ¡ Types de mémoires, L1, L2, L3 ¡ Rappel Caches, espace d'adressage, segmentation, pagination, MMU avec TLB Système monoprocesseur mono et multitâches ¡ Gestion des interruptions exceptions et trappes: analyse de code ¡ Interruptions et changement de contexte: analyse de code Système multiprocesseurs multitâches ¡ Bases sur les Bus et les NoCs ¡ Shared Memory vs Message passing ¡ Problèmes de synchronisation ¡ Cohérence et consistance mémoire 4 Chapitre 1: Introduction - Généralités 5 Omniprésence des systèmes embarqués Définitions 1. Un système embarqué (SE) est un système informatisé spécialisé qui constitue une partie intégrante d’un système plus large ou une machine. Typiquement, c’est un système sur un seul processeur et dont les programmes sont stockés en ROM. A priori, tous les systèmes qui ont des interfaces digitales (i.e. montre, caméra, voiture…) peuvent être considérés comme des SE. Certains SE ont un système d’exploitation et d’autres non car toute leur logique peut être implantée en un seul programme. 2. Un système embarqué est une combinaison de logiciel et matériel, avec des capacités fixes ou programmables, qui est spécialement conçu pour un type d’application particulier. Les distributeurs automatiques de boissons, les automobiles, les équipements médicaux, les caméras, les avions, les jouets, les téléphones portables et les PDA sont des exemples de systèmes qui abritent des SE. Les SE programmables sont dotés d’interfaces de programmation et leur programmation est une activité spécialisée. 3. Un système embarqué est une composante primordiale d’un système (i.e. un avion, une voiture…) dont l’objectif est de commander, contrôler et superviser ce système. • ‘Embedded’ : Enfoui / Embarqué 7 Convergence dans les systèmes embarqués Télécommunications Electronique grand public Audio-visuel Informatique 8 Le premier système embarqué … n Système de guidage de la mission lunaire Apollo, développé par Charles Stark Draper du Massachusetts Institute of Technology. Chaque mission lunaire était équipée de deux systèmes AGC (Apollo Guidance Computer), un - Premier ordinateur à circuits intégrés : pour le système de guidage 5000 portes NOR … inertiel et un pour le Module - Multitâches, temps réel lunaire. - Spécifique : programmes implantés en ROM à la fabrication - 35 kg et moins de 100K de mémoire ! … et les systèmes d'aujourd'hui … A380 Evolutions technologie/société n Histoire du téléphone mobile … n Du 1G au 4G: augmentation des services (critiques), complexité des services (ex. TV) augmentation des risques, augmentation des besoins de sécurité embarquée n Presque tout en un seul circuit ! (http://www.mobiletor.com) http://www.intomobile.com/2008 Evolution typique des systèmes embarqués Plus de fonctionnalités, moins de volume, … donc microélectronique ! Contexte sociétal – informatique et sécurité Vote Electronique Internet & réseaux informatiques, infrastructures de confiance, communications sécurisées Passeport électronique, contrôle d'accès Paiements électroniques Compétition internationale, contrefaçons, propriété intellectuelle Informatique ubiquitaire et vie privée Etc. … Cryptographie : implantations … 1500 B.C. Mesopotamia A 3" x 2" Mesopotamian tablet contained an enciphered formula for making pottery glaze. WW2 - The Enigma machine was widely used by Nazi Germany 1959 - today https://www.securetrust.com/historyofcryptography/history/ Renault Laguna Cycle de vie des produits Revenu - baisse du prix du produit avec le temps - investissements très élevés (> 50 M$) A B Mois Fenêtre du marché Durée de vie du produit Time To Market De l'idée à la conception : des acteurs multiples Services, Produits adéquation Technologies cibles - performances - coût Normes / Marché Analyse technico-économique (fenêtre de marché, durée de vie) Définition des lignes de produits, des coûts Conception (composants, systèmes) Données fondeurs (SIA…), équipementiers (volume du marché…) Types d'acteurs industriels Instances de normalisation Fournisseurs de services Fournisseurs de logiciels de CAO Fondeurs "Fabless" Integrateurs Equipementiers Fournisseurs d'IP Avantages de l'intégration (1) n Mobilité ¡ ¡ ¡ n Performances ¡ ¡ n Poids Volume et surface (empreinte sur la carte) Autonomie (consommation d'énergie) Longueur des interconnexions Réduction des charges RLC (broches) Fiabilité ¡ ¡ Réduction des soudures Réactions aux vibrations, fluctuations thermiques, … Avantages de l'intégration (2) n Coûts ¡ ¡ Au niveau de la fonction (€/transistor pour la fonction globale) Au niveau du système et de l'organisation (approvisionnements, stockage des pièces, assemblage, tests …) Note : le boîtier peut être plus cher que le circuit qu'il contient ! => avantage de réduire le nombre de boîtiers ! => SoC, SiP, intégration 3D … Flot de conception "système intégré" Spécification "Système" Flot matériel description en langage de haut niveau : C / C++ / Java / SDL / … Spécification : description de "haut niveau" C / … / VHDL / Verilog Exécutable ( référence fonctionnelle ) Partitionnement matériel / logiciel (+ µsyst, …) Génération des interfaces Synthèse => Netlist Flot logiciel Programme C / C++ / … Compilation => Code objet Bibliothèques + Vérifications / Test ! (télé-) Edition de liens => Exécutable chargement P&R ⇒ Masques ou "Biststream" Système intégré (Masqué ou non) ROM/Flash/… programmation => matériel spécifique, cœurs et logiciel fabrication embarqué FPGA Circuit "masqué" Carte (PCB) Compétences pour la conception et développement de SE § § § § Domaine métier : médical, loisirs, transport… Ingénierie : électricité, électronique, chimie, mécanique, robotique, …, informatique Sciences : mathématiques, statistiques, probabilités, recherche opérationnelle Informatique • Algorithmique • Programmation • Architectures (CPU, mémoires, périphériques) • Gestion de l’énergie des processeurs et périphériques • Génie logiciel, co-design, méthodes formelles, automates… • Evaluation de performances, test, simulation, vérification • Systèmes d’exploitation ordonnancement… • Sécurité et robustesse • Réseaux, mobilité • Capteurs et actionneurs • Vision par ordinateur, caméra 22 D’un microcontrôleur Simple: TI MSP430 23 A un SoC complexe 24 Quelques composants et leur rôle n n n n n Processeur/cœur Mémoires (cache et autres) Bus Timer Interrupt Controler Unit (ICU) 25 Quelques composants et leur rôle n MailBox (IPI= Inter Processor Interrupt) Flushes of memory management unit caches, such as translation lookaside buffers, on other processors when memory mappings are changed by one processor; stopping when the system is being shut down by one processor. (source wikipedia) n Direct Memory Access controler (DMA) n Contrôleurs d’E/S Ip dédié: GPU, DSP, Codec Audio/Vidéo (MJPEG, MPEG4, H264, HD, 4K, …), Crypto Proc. (AES, …), … 26 Contrôleur JTAG n n Interfaces et Standards n n n Bus et Protocole de communication: VCI (OCP), AMBA (AHB-APB), PIBUS, AXI, PCI, PCIe, NoC, … Interface mémoire: LPDDRx, SD, SATAx, USBx, … Interface communication externe: I2C, SPI, GPIO, UART (RS232), HDMI, MIPI xx, … 27 Chapitre 2: Hiérarchie Mémoire 28 Mémoires: Types de mémoires 29 Mémoires: Types de Mémoires § SRAM: Rapide mais couteuse (4 à 6 trans.) • Banc de registres CPU et Caches § DRAM: Lente (temps d’acces 10x), mais peu coûteuse (1trans. + 1 condensateur). Faible conso. Grande densité d’intégration => RAM principale 30 Mémoires: Hiérarchie 31 Mémoires: Hierarchie 32 Mémoires: Hierarchie 33 Mémoires: Hierarchie 34 Principes d’une hiérarchie mémoire § § § Localité § Localité Temporelle: une adresse référencée sera à nouveau référencée bientôt § Localité Spatiale: la prochaine adresse référencée sera une adresse voisine Hiérarchie mémoire = plusieurs niveaux de mémoire, la plus petite est la plus rapide et contient les blocs qui entourent les références les plus récentes. § Chaque niveau est + petit, + rapide, + cher/octet que le niveau inférieur § Niveau supérieur: le plus proche du processeur § Inclusion des niveaux: les données présentes à un niveau sont aussi présentes au niveau inférieur (sauf peut-être durant un temps très court) Définitions § Bloc: unité d’échange entre les 2 niveaux les plus hauts § Adresse = adresse du bloc + adresse du mot dans le bloc § Temps d’accès min: temps pour accèder une info présente dans le niveau supérieur, y compris les test de présence de cette info. Mémoire Cache Antémémoire, près du processeur, accessible en 1 cycle d’horloge @I, @D @LI, @LD MIPS32 Cache(0) I, D MIPS32 Cache(1) LI, LD Interconnect RAM Cache n n n n Mémoire associée au processeur, sur le même circuit intégré Taux de succès, taux d’échec: fraction des références à la mémoire centrale présentes, absentes dans le cache Temps d’accès moyen à la mémoire = Temps d’accès en cas de succès + Taux d’échec X pénalité d’échec (ns ou nb cycles) Pénalité d’échec: temps pour remplacer un bloc depuis le niveau inférieur; dépend de: ¡ temps d’accès du niveau inférieur: fonction du temps de latence de la mémoire de niveau inférieur ¡ temps de transfert d’un bloc: fonction de la largeur du chemin de données, et de la taille du bloc Hiérarchie Mémoire : 4 Questions n Q1: Où placer un bloc dans le niveau supérieur? (placement) n Q2: Comment savoir si un bloc est présent dans le niveau supérieur? (identification) n Q3: Quel bloc remplacer en cas d’échec? (remplacement) n Q4: Que se passe-t-il en cas d’écriture? (stratégie d’écriture) Q1: Placement d’un bloc n Exemple ¡ ¡ n Mémoire centrale: 32 blocs Cache: 8 blocs 3 types d’organisation entièrement associative: le bloc 12 peut aller n’importe où ¡ correspondance directe: le bloc 12 va dans la case 4 (12 mod 8 = 4) N° case = N° bloc mod nbcase ¡ associative par ss-ensemble: le bloc 12 va n’importe où dans l’ensemble 0 (12 mod 4 = 0) N° case = N° bloc mod nbss-ens ¡ Q2: Identification d’un bloc n n Chaque bloc de donnée est précédé d’une étiquette dans le cache + 1 bit de validité Une adresse en mémoire est décomposée en champs: ¡ ¡ n l’index sert à choisir le sous-ensemble l’étiquette est comparée Augmenter l’associativité augmente l’étiquette, diminue l’index: § § entièrement associatif: pas d’index correspondance directe: grand index Adresse du bloc Etiquette Index Déplacement du mot dans le bloc Cache de données: Exemple n n n Placement des blocs: correspondance directe Index = 8 bits: 256 blocs de 32 octets 4 étapes pour accéder en lecture à un bloc présent dans le cache, durée 2 cycles d’horloge Q3: Stratégies de Remplacement Pas le choix si correspondance directe Associative (entièrement ou par ensemble): ¡ Au hasard (facile a réaliser par matériel) ¡ LRU (moins récemment utilisé, cher à réaliser) ¡ FIFO: ne donne pas de bons résultats n n Taux d’échec selon la politique de remplacement Associativité: Taille 16 KB 64 KB 256 KB par 2 LRU Hasard 5.18% 5.69% 1.88% 2.01% 1.15% 1.17% par 4 LRU Hasard 4.67% 5.29% 1.54% 1.66% 1.13% 1.13% par 8 LRU Hasard 4.39% 4.96% 1.39% 1.53% 1.12% 1.12% Q4: Ecriture dans le cache (1) n n n Ecriture directe (Write through): l’ information est écrite à la fois dans le bloc du cache et dans le bloc de la mémoire de niveau inférieur. ¡ nécessité de buffers d’écriture pour que le processeur n’attende pas que l’écriture soit achevée dans la mémoire de niveau inf. Ecriture différée (Write back): l’ information est écrite seulement dans le bloc du cache. Le bloc modifié est ré-écrit globalement en mémoire lorsqu’il est remplacé ¡ nécessité d’un bit de modif par bloc Avantages et inconvénients: ¡ Ecr. Directe: contrôle plus simple mais peu performant ¡ Ecr.différée: moins de traffic avec la mémoire (important pour une archi multi-proc.) Q4: Ecriture dans le cache (2) La recherche de données en mémoire principale lors d'un échec de lecture dans le cache est prioritaire par rapport à l'écriture. Cette dernière peut donc être suspendue en utilisant un tampon d'écriture (write buffer). Cependant, les tampons d'écriture compliquent les choses car ils peuvent contenir des valeurs modifiées d'un bloc qui fait l'objet d'un échec en lecture. PROCESSEUR Données entrantes Étiquette Déplacement RÉPERTOIRE Données sortantes MÉMOIRE CACHE = = = = Bit modifié lslwww.epfl.ch/~tempesti/UNIL/Semaine09.ppt ... TAMPON D'ÉCRITURE ... ... ... MÉMOIRE PRINCIPALE Taux d’échecs différents: Instructions et données n n On compare des caches distincts pour les instructions et pour les données et un cache unique de taille double En moyenne, 75% de référence aux instructions, 25% aux données. Taille 1 KB 2 KB 4 KB 8 KB 16 KB 32 KB 64 KB 128 KB Cache Instruction 3.06% 2.26% 1.78% 1.10% 0.64% 0.39% 0.15% 0.02% Cache Données 24.61% 20.57% 15.94% 10.19% 6.47% 4.82% 3.77% 2.88% Cache unique 13.34% 9.78% 7.24% 4.57% 2.87% 1.99% 1.35% 0.95% Réduire le taux d’échec n Classification des échecs ¡ ¡ ¡ Inévitable—Lors du premier accès à un bloc, le bloc est absent du cache, et doit être lu depuis la mémoire. Cet échec est aussi appelé échec d’initialisation ou échec de première référence. (Echec dans un cache de taille infinie) Capacité—Si le cache est trop petit pour contenir tous les blocs nécessaires à l’ exécution d’un programme, on a un échec dû à une insuffisance de capacité du cache lorsqu’un bloc doit être relu après avoir été écrasé par la lecture d’un autre bloc. (Echec dans un cache de taille X) Collision—Si la stratégie de placement des blocs est correspondance directe ou associative par ss-ensemble, des échecs de collision (en plus des 2 autres types) se produisent si un bloc doit être relu parce que trop de blocs sont placés dans le même ss-ensemble. On dit aussi échec d’interference. (Echec dans un cache de taille X, associatif par ss-ensemble de N ) Mémoire Virtuelle § Motivation: • Give each running program its own private address • Restrict process from modifying other processes • Want programs to be protected from each other • Bug in one program can’t corrupt memory in another Program • Programs can run in any location in physical memory • Simplify loading the program 47 Mémoire Virtuelle § Motivation: • Want programs running simultaneously to share underlying physical memory • Want to use disk as another level in the memory hierarchy • Treat main memory as a cache for disk 48 Mémoire Virtuelle § The program sees virtual addresses § Main memory sees physical addresses ⇒ Need translation from virtual to physical ⇒ MMU (Memory Management Unit) 49 Mémoire Virtuelle Mémoire Virtuelle vs Cache § Memoire virtuelle • Longer miss penalty • Handled by OS • Size dependent of physical address space § Cache • Handled by hardware • Size independent of physical address space 50 Mémoire Virtuelle Alias • 2 virtual addresses map to the same physical address • Consistency problems 51 Mémoire Virtuelle § Block replacement strategy • LRU § Write-back strategy § With dirty bit § Allows blocks to be written to disk when the block is replaced 52 Mémoire Virtuelle Paging § Virtual memory is divided into fixed-size blocks called pages • typically a few kilobytes • should be a natural unit of transfer to/from disk § Page replacement • LRU, MRU, Clock… etc § Page placement • Fully associative - efficient 53 Mémoire Virtuelle Paging § Page Identification • Virtual address is divided into <virtual page number, page offset> § The virtual page number is translated into a physical page number § Provides indirection § Indirection is always good § Translation cached in a buffer 54 Mémoire Virtuelle Page Table § Page table is a collection of PTEs that maps a virtual page number to a PTE § PTEs = page table entry § The page table tells where a particular virtual page address is stored on disk and in the main memory § Each process has its own page table § Size depends on # of pages, page size, and virtual address space 55 Mémoire Virtuelle Page Table § Virtual address is divided into • virtual page number • page offset 56 Mémoire Virtuelle Page Table § Page-table base-register tells where the page table starts § Page offset directly maps to physical address page offset § Reference bit is set when a page is accessed 57 Mémoire Virtuelle Page Table § Each virtual memory reference can cause two physical memory Accesses • One to fetch the page table • One to fetch the data 58 Mémoire Virtuelle Page Table § Address translation must be performed for every memory Access => Need optimization! 59 Mémoire Virtuelle TLB § Problems: • Every virtual memory reference => 2 physical memory accesses • Every memory access -> address translation § To overcome this problem a high-speed cache is set up for page table entries • called a Translation Lookaside Buffer (TLB) 60 Mémoire Virtuelle TLB § The Translation Lookaside Buffer • a small cache • contains translations for the most recently used pages § The processor consults the TLB first when accessing memory 61 Mémoire Virtuelle Address Translation § Virtual page number (Tag, Index) § Index tells which row to access 62 Mémoire Virtuelle Address Translation § TLB is a cache § Fully associative for efficiency 63 Mémoire Virtuelle TLB § Given a virtual address, processor examines the TLB § If page table entry is present (TLB hit) • the frame number is retrieved and the real address is formed 64 Mémoire Virtuelle TLB § If page table entry is not found in the TLB (TLB miss) • Hardware checks page table and loads new Page Table Entry into TLB • Hardware traps to OS, up to OS to decide what to do o OS knows which program caused the TLB fault o the software handler will get the address mapping 65 Mémoire Virtuelle TLB Hit/Miss § If page is in main memory (page hit) • If the mapping is in page table, we add the entry to the TLB, evicting an old entry from the TLB § If page is on disk (page fault) • load the page off the disk into a free block of memory • update the process's page table 66 Mémoire Virtuelle TLB 67 Mémoire Virtuelle Managing Virtual Memory 68 Mémoire Virtuelle Two Levels Page Table => Reducing Page Table size in RAM 69 Mémoire Virtuelle Two Levels Page Table: Example Mémoire Virtuelle Managing Virtual Memory: TLB & Cache access 71 Chapitre 3: Système mono-processeur mono et multitâches 72 Système Mono-processeur Mono-tâche Gestion des interruptions exceptions et trappes: code MIPS R3000 32 bits n Prérequis: (voir sur le web, architecture externe MIPS R3000 ) ¡ Jeu d’instruction du MIPS: lw, sw, addi, addiu, li, la, jal, … ¡ Correspondance des registres du MIPS: n Registres non protégés: ¡ Ri (0 à 31), PC, HI et LO R0=0, R1 (compilateur), R29= pointeur de pile, R31 = adresse retour appel fonction, R26, R27 et R28 réservés pour le système Registres protégés (appartiennent copro0, accès avec instructions spéciales) ¡ SR Registre d'état (Status Register) => $12 Contient en particulier le bit qui définit le mode : superviseur ou utilisateur et bits de masquage des interruptions. ¡ CR Registre de cause (Cause Register). => $13 En cas d'interruption ou d'exception, son contenu définit la cause pour laquelle on fait appel au programme de traitement des interruptions et des exceptions. ¡ EPC Registre d'exception (Exception Program Counter). => $14 ¡ n ¡ Contient l'adresse de retour (PC + 4) en cas d'interruption. Contient l'adresse de l'instruction fautive en cas d'exception (PC) BAR Registre d'adresse illégale (Bad Address Register) =>$8 En cas d'exception de type "adresse illégale", il contient la valeur de l'adresse mal 73 formée. Système Mono-processeur Mono-tâche Gestion des interruptions exceptions et trappes: => Analyse de code MIPS R3000 32 bits Voir document + codes fournis 74 Système Mono-processeur Multi-tâches Gestion des changements de contexte: => Analyse de code MIPS R3000 32 bits Voir document + codes fournis 75 Chapitre 4: Système multi-processeurs multi-tâches 76 Systèmes Multiprocesseurs - Processeurs Processeurs : Catégories de Flynn § SISD ("Single Instruction Single Data") • Uniprocesseurs § SIMD ("Single Instruction Multiple Data") • Processeurs vectoriels • Exemples : Illiac-IV, CM-2 • Modèle de programmation simple • Faible sur-coût ("overhead") • Flexibilité • Conception "custom" § MIMD ("Multiple Instruction Multiple Data") • Exemples : SPARCCenter, T3D • Flexible • Utilisation des micro-processeurs commerciaux Systèmes Multiprocesseurs - Communications Conceptions MIMD à Petite Echelle Mémoire : centralisée avec un temps d'accès uniforme (“uma”) et une interconnexion par bus Systèmes Multiprocesseurs - Communications Conceptions MIMD à Grande Echelle Mémoire : distribuée avec temps d'accès non uniforme (“numa”) et une interconnexion adaptable à l'échelle utilisée (mémoire distribuée) Systèmes Multiprocesseurs - Communications Propriétés Essentielles de la Communication § Débit • Nécessité d'avoir un très fort débit de communication • Pb d'augmentation progressive avec le nb de processeurs • Facteur de limitation pour le réseau, la mémoire, le processeur • Le surcoût des communications est un sérieux problème § Latence • Affecte la performance puisque le processeur va devoir attendre • Affecte la facilité de programmation: plus de réflexion est requise pour réaliser un recouvrement de la communication et du calcul § Masquer la latence • Comment un mécanisme peut-il contribuer à cacher la latence ? • Exemples : lecture anticipée des instructions, recouvrement de l'envoi de message par du calcul. Systèmes Multiprocesseurs - Communications Modèles de Communication § Mémoire Partagée • Les processeurs communiquent à l'aide d'un espace d'adresse partagé • Facile sur les machines à petite échelle • Avantages : • Modèle identique pour les uniprocesseurs et les multi-processeurs à faible échelle • Facile à programmer • Latence plus faible § Passage de Messages • Les processeurs ont des mémoires privées, ils communiquent par messages • Avantages : Moins de "hardware", plus facile à concevoir Les deux modèles sont possibles sur n'importe laquelle des deux "hardware" bases Systèmes Multiprocesseurs - Communications Modèles de Communication Passage de messages (Message Passing) § Communication et synchronisation entre process § Basée sur le standard MPI (Message Passing Interface) § Librairie de primitives dont send (N°de process, data, size), et receive () § Bloquant vs non bloquant (communication Synchrone ou Asynchrone) Systèmes Multiprocesseurs - Communications Interconnect: Bus on chip Liaisons de debug (JTAG) Bus mémoire local (externe ASIC) ASIC (SOC) Cœur de processeur Cache (option) Mémoire onchip hautes performances Interface Mémoire hautes performances E/S E/S Interfaces E/S Interface bus avion Interface bus missile divers E/S E/S Bridge Périphériques hautes performances E/S Interface PCI Bus PCI calculateur (extensions) Bus on-chip hautes performances § Il est possible d ’avoir: • Plusieurs bus hautes performances • Plusieurs bus périphériques • Les bus sont couplés par des « Bridges » Bus on-chip périphériques 83 Systèmes Multiprocesseurs - Communications Interconnect: Bus AMBA § Spécification ARM version 2.0 § AMBA § Advanced Microcontroller Bus Architecture § Bus standard de communications on-chip pour la création de designs avec processeur(s) enfouis (SOCs). § 3 bus distincts: • AHB: Advanced High-performance Bus • ASB: Advanced System Bus • APB: Advanced Peripheral Bus § Existence d’une version AMBA Light 84 Systèmes Multiprocesseurs - Communications Interconnect: Bus AMBA AHB § Maître AHB Initie une opération de lecture ou d’écriture (transfert) en envoyant (vers l’esclave) les signaux de contrôle, d’adresse (signal de sélection) et de données. § Esclave AHB Répond à l’opération de lecture ou d’écriture initiée dans espace d’adresses en renvoyant (au maître) un message réponse: Succès (la donnée a été bien écrite ou bien lue), échec ou attente. son § Arbitre AHB S’assure qu’un seul maître à la fois est autorisé à effectuer des transferts sur le bus AHB. § Décodeur AHB Décode l’adresse liée à chaque transfert et active le signal de sélection de l’esclave ainsi désigné 85 Systèmes Multiprocesseurs - Communications Interconnect: Bus AMBA AHB Signal de sélection ARBITRE HADDR AHB accordé ESCLAVE 1 MAITRE 1 Requête AHB accordé ESCLAVE 2 MAITRE 2 HWDATA ESCLAVE 3 Requête AHB accordé Sélection 1 Sélection 2 Sélection 3 HRDATA MAITRE 3 Requête DECODEUR 86 Systèmes Multiprocesseurs - Communications Interconnect: Bus AMBA AHB 87 Systèmes Multiprocesseurs - Communications Interconnect: Bus AMBA APB HADDR Sélection 1 HRDATA ESCLAVE 1 HWDATA BRIDGE HADDR Sélection 2 ESCLAVE 2 HRDATA HWDATA HADDR Sélection 3 HRDATA ESCLAVE 3 HWDATA HRDATA 88 Systèmes Multiprocesseurs - Communications Interconnect: Comparaison IBM Core Connect et ARM AMBA IBM CoreConnect ARM Processor Local bus AMBA 2.0 High Performance Bus Bus architecture 32 et 64 bits, extensible à 128 et 256 bits 32, 64 et 128 bits Data bus Bus lectures et écritures séparés Bus lectures et écritures séparés Principales caractéristiques Plusieurs maîtres du bus Pipelining Transferts burst Transfert de lignes Plusieurs maîtres du bus Pipelining Transferts burst Transfert de lignes On-chip Peripheral Bus AMBA 2.0 Advanced Peripheral Bus Maîtres Plusieurs maîtres du bus 1 seul maître : le pont APB La fonction « Bridge » Maître du PLB ou de l’OPB Maître du bus APB uniquement Data bus Bus lectures et écritures séparés Bus lectures et écritures séparés ou 3 états 89 Systèmes Multiprocesseurs - Communications Interface normalisée VCI (Virtual Component Interface) § Pour la modélisation: séparer clairement (au niveau du matériel) la fonction de calcul de la fonction de communication. => réutilisation des composants matériels § Supporter les architectures multi-processeurs => plusieurs dizaines de maîtres § Conserver le paradigme de communication « espace d ’adressage partagé » : Un initiateur désigne sa cible par les bits de poids fort de l ’adresse et une case mémoire particulière par les bits de poids faible. => réutilisation des composants logiciels § Fournir à chaque maître l’illusion qu’il dispose d’un canal de communication point à point avec chaque cible. => simplification du protocole d ’accès au « bus » § Possibilité de mécanismes de communication autres que le bus. => bande passante « illimitée » 90 Systèmes Multiprocesseurs - Communications Interface normalisée VCI (Virtual Component Interface) Envoi d’une commande VCI ADDRESS WDATA CMD INITIATEUR VCI BE EOP SRCID ~90 fils CIBLE VCI … CMDVAL CMDACK 91 Systèmes Multiprocesseurs - Communications Interface normalisée VCI (Virtual Component Interface) Les FSMs correspondantes ADDRESS WDATA CMD BE INITIATEUR VCI EOP CIBLE VCI SRCID CMDACK=0 CMDACK=1 … CMDVAL CMDVAL=0 CMDVAL=1 CMDACK 92 Systèmes Multiprocesseurs - Communications Interface normalisée VCI (Virtual Component Interface) Envoi d’une réponse VCI RDATA RERROR REOP INITIATEUR VCI RSRCID ~50 fils CIBLE VCI … RSPVAL=0 RSPVAL=1 RSPACK=0 RSPACK RSPACK=1 RSPVAL 93 Systèmes Multiprocesseurs - Communications Interface normalisée VCI dans Soclib Décodage d’adresse CMDACK CMDVAL … SRCID EOP BE CMD WDATA TABLE DES SEGMENTS ADDRESS INTERCONNECT VCI INITIATEUR VCI 94 CMDACK CMDVAL … SRCID EOP BE CMD WDATA ADDRESS CMDACK CMDVAL CIBLE VCI (1) … SRCID EOP BE CMD WDATA ADDRESS CIBLE VCI (0) Systèmes Multiprocesseurs - Communications Interconnect: Micro réseau VGMN (utilisé dans le projet) § Plusieurs transactions VCI simultanées § Implémente 2 réseaux distincts: réseau CMD et réseau RSP § Arbitrage au niveau de la cible (round robin) § Table de routage (ROM) issue de « mapping table » § 2 paramètres: • MIN_LATENCY • FIFO_DEPTH 95 Systèmes Multiprocesseurs - Communications Interconnect: NoC (Network On Chip) § Topologie: • connexion des composants aux routeurs • connexion des routeurs entre eux § Routage: • décision prise à la source/distribuée • minimal / non minimal • déterministe / adaptatif § Technique de commutation • définit l’allocation des ressources sur la route § Contrôle de flux • envoi ou non des paquets si place libre dans les buffers en aval Systèmes Multiprocesseurs - Communications Interconnect: NoC (Network On Chip) § Topologie: Grille 2D (2D Mesh) = PE N R N N N N N N N N N Systèmes Multiprocesseurs - Communications Interconnect: NoC (Network On Chip) § Topologie: Tore et Spidergone (STMicroelectronics) 0 N N N N N N 1 2 3 4 N N 15 5 14 6 13 7 N 12 11 10 9 8 Systèmes Multiprocesseurs - Communications Interconnect: NoC (Network On Chip) ROUTAGE: Acheminement des paquets dans le réseau § Routage à la source: décisions prises par l’émetteur, et encodées dans le message § Routage distribué: calcul du prochain « hop » par chaque routeur sur le chemin § Routage minimal: choisit un plus court chemin § Routage déterministe: toujours la même route entre une source et une destination § Routage adaptatif: chemin qui peut varier, tient compte de l’état du réseau § Systèmes Multiprocesseurs - Communications Interconnect: NoC (Network On Chip) ROUTAGE déterministe minimal 2D 3 N N N N 2 N N N N Un routeur a 5 ports N, S, E, W, Loc Routage XY: D’abord axe des X Puis axe des Y 1 0 N N N N N N N N 0 1 2 3 Si un nœud du chemin est occupé, le message attend. Systèmes Multiprocesseurs - Communications Interconnect: NoC (Network On Chip) Techniques de commutation § Définit l’allocation des ressources nécessaires au transfert d’un message sur le réseau: mémoires, tampons, liens. § Découpage d’un message Message EOP Données Header EOP Données Header EOP Données Paquet EOP data data Flit data data Header Header Systèmes Multiprocesseurs - Communications Interconnect: NoC (Network On Chip) Techniques de commutation: « Packet switching » vs « Circuit Switching » § Packet Switching • Les paquets sont acheminés indépendamment. Le message complet est reconstitué à l’arrivée. • Un routeur peut servir des paquets successifs de messages différents • Méthode efficace pour des petits messages et petits réseaux § Circuit Switching • Tout le chemin entre la source et la destination est réservé: Ø envoi par la source du header, qui réserve la route Ø l’acquittement de la destination revient au nœud source Ø envoi du message entier par la source Ø envoi d’un paquet de libération par la source • Méthode efficace pour de gros messages Systèmes Multiprocesseurs - Communications Interconnect: NoC (Network On Chip) Techniques de commutation: « Packet switching » Exemple: Commutation de paquets de type « Wormhole » § Flits peuvent être émis vers le routeur suivant même si message incomplet • Tous les flits ont la même taille, y compris Header et EOP • Taille min de buffer du router = taille de 1 flit • Le Header réserve un canal à la fois • Les flits suivent le même chemin (pipeline) • Le EOP libère le canal et le buffer • Les flits d’un même message peuvent occuper des nœuds différents § Méthode économe en ressources mémoire, mais peut créer des blocages entre messages. Systèmes Multiprocesseurs - Communications Interconnect: NoC (Network On Chip) § Blocages de chemins • a émet vers c; son message est arrivé le premier en b d • e émet vers d; son message est bloqué en b c e b § Risques d’inter-blocages définitifs => solutions possibles (2 réseaux séparés, canaux virtuels, modifier l’algo de routage, …) a Systèmes Multiprocesseurs - Communications Interconnect: NoC (Network On Chip) § Contrôle de Flux: Mécanisme par lequel un routeur sait s’il peut émettre vers chacun de ses voisins § Contrôle de flux ON/OFF • ON émis par le récepteur signale au routeur en amont qu’il peut envoyer des données • OFF signale l’épuisement de la place dans les buffers de réception • Avantage: un bit suffit à mémoriser l’état du routeur aval, pour chaque direction § Contrôle de flux par crédit • Le routeur associe un compteur de places libres à chaque canal virtuel de ses voisins en aval. Le compteur est décrémenté à chaque flit transmis. • Le routeur aval envoie un crédit lorsque les buffers d’un canal virtuel se sont libérés Systèmes Multiprocesseurs - Synchronisation § Problème pour les architectures à mémoire partagée (pas pour MP) • Exemple illustrant le problème de « Race Condition »: retrait d'un montant sur un solde consulter le solde si le montant est inferieur au solde le solde devient (solde - montant ) donner le montant en billets Thread A : montant=200 ① lire solde -> 300 ② 200<=300 ? -> oui ③ ecrire solde -> 100 ④ donner 200 Thread B : montant=250 ① lire solde -> 300 ② 250<=300 ? -> Oui ③ ecrire solde -> 50 ④ donner 250 • On a retiré 450 d’un solde qui contenait 300 !!! • => Ce traitement devrait être une section critique § Solution mixte: - Logicielle: variable lock partagée, spinlock, sémaphore - & Materielle : instruction atomique test and set Systèmes Multiprocesseurs - Synchronisation Synchronisation: Implémentation § Spinlock pas suffisant pour assurer l’exclusion mutuelle => opération atomique Read puis Write assurée par le matériel: instruction « test and set » withdraw (account, amount) { acquire(lock); balance = get_balance(account); balance = balance – amount; put_balance(account, balance); release(lock); return balance; } struct lock { int held = 0; } void acquire (lock) { while (test-and-set(&lock->held)); } void release (lock) { lock->held = 0; } Systèmes Multiprocesseurs – Cohérence Mémoire Le Problème de la Cohérence du Cache => B voit l’ancienne valeur de X !! Systèmes Multiprocesseurs – Cohérence Mémoire Que Signifie "Cohérence" ? § De façon informelle : • Toute lecture doit renvoyer la dernière information écrite • Très strict et très difficile à implémenter § Mieux : • Toute écriture doit finalement être vue par une opération de lecture • Toutes les écritures sont vues dans l'ordre (“sérialisation”) § Deux règles pour garantir ceci : • Si P1 écrit x et que P2 le lit, l'écriture de P1 sera vue par P2 si les opérations de lecture et d'écriture sont suffisamment distantes • Les opérations d'écriture dans un même emplacement sont sérialisées : Ø L'opération d'écriture la plus récente sera vue Ø Sinon les opérations d'écriture pourraient être vues dans un ordre illogique (une valeur plus ancienne lue après une valeur plus récente) Systèmes Multiprocesseurs – Cohérence Mémoire Solutions Potentielles § Espionnage du bus ("Snoopy Bus") : § Envoyer les adresses de toute requête de données à tous les uPs § Les processeurs espionnent le bus pour voir s'ils ont une copie et répondent en fonction de ce qu'ils ont trouvé § Nécessite la diffusion puisque l'information concernant les blocs présents dans la mémoire cache est au niveau des processeurs § Fonctionne bien avec un bus (medium naturel de diffusion) § Solution prédominante pour les multi-proc. à petite échelle (la majorité du marché) § Schémas à Base de Répertoires (Directory based) § Garde trace de ce qui est partagé dans un endroit centralisé § Mémoire distribuée => répertoire distribué (évite goulot d'étranglement) § Envoie des requêtes point-à-point vers les processeurs § Meilleure gradation que l'espionnage du bus (« scalable ») § Solution qui a précédé les mécanismes d'espionnage du bus Systèmes Multiprocesseurs – Cohérence Mémoire Principes du protocole d'espionnage Processor Snoop tag Cache tag and data Processor Snoop tag Cache tag and data ... ... Processor Snoop tag Cache tag and data ... Single bus Memory I/0 Systèmes Multiprocesseurs – Cohérence Mémoire Protocoles d'espionnage de Base § Protocole Ecriture-Invalidation : • Plusieurs lecteurs, un seul rédacteur • Ecriture d'une donnée partagée : un message d'invalidation est envoyé à tous les caches qui espionnent. Tous les blocs qui contiennent la donnée sont invalidés. • Echec en lecture: Ø Ecriture directe (" Write-through") : la mémoire est à jour Ø Ecriture différée (" Write-back") : l'espionnage du bus permet au cache qui possède la copie la plus récente de l'envoyer § Protocole Ecriture-Diffusion : • Ecriture d'une donnée partagée : diffusion sur le bus, les processeurs espionnent et mettent à jour leur copie • Echec en lecture : la mémoire est à jour § Sérialisation des écritures : le bus sérialise les requêtes • Le bus est le seul point d'arbitrage Systèmes Multiprocesseurs - Cohérence Protocole à invalidation d’écriture § C’est le plus courant pour l’espionnage et pour les répertoires. Il s’agit de mettre en place un accès exclusif qui assure qu’aucune autre copie de la donnée n’existe quand une écriture intervient. § Toutes les copies « cachées » d’une donnée sont invalidées. Si un processeur tente alors de lire la donnée, il y a un défaut de cache qui force la lecture (depuis la mémoire) de la donnée pour mettre une copie à jour dans le cache. Systèmes Multiprocesseurs - Cohérence Protocole de mise à jour d’écriture (ou diffusion d’écriture). § Dans ce protocole, il s’agit de mettre à jour simultanément toutes les copies d’une donnée, ou qu’elles soient. § Il est donc utile de savoir en permanence si un mot du cache est partagé ou non. Si ce n’est pas le cas, il n’est pas nécessaire de mettre à jour les autres caches.