Chapitre 1 Introduction aux architectures à usage général et spécifiques PDF
Document Details
Uploaded by ThrivingBlue8709
Tags
Summary
This document provides an introduction to general-purpose and specific architectures, focusing on embedded systems. It covers definitions, components, and different types of architectures. The content is suitable for undergraduate-level computer science courses.
Full Transcript
LISI3 SE - Définitions Il existe plusieurs définitions des systèmes embarqués Un SE peut être défini comme un système électronique et informatique autonome ne possédant pas des entrées/sorties standards comme un clavier ou un écran d'ordinateur (PC). Le système matériel et l’application sont...
LISI3 SE - Définitions Il existe plusieurs définitions des systèmes embarqués Un SE peut être défini comme un système électronique et informatique autonome ne possédant pas des entrées/sorties standards comme un clavier ou un écran d'ordinateur (PC). Le système matériel et l’application sont intimement liés et noyés dans le matériel et ne sont pas aussi facilement discernables comme dans un environnement de travail classique de type PC. Un SE peut être défini comme étant un système de traitement de l'information qui répond aux stimulus externes dans un délais bien défini. – L'exactitude de la réponse dépend non seulement du résultat logique mais également du temps de réponse. – Répondre en retard est aussi mauvais qu’une mauvaise réponse! Un SE est un système mixte. Il combine le Hw et le Sw pour accomplir une fonction particulière. Il est une partie d’un système plus complexe qui n’est pas forcément un "ordinateur". Il travaille dans un environnement réactif et sous contrainte temporelle. Une partie du SE est logicielle (Sw). Elle est utilisée pour la flexibilité. L’autre partie est matérielle (Hw) utilisée pour améliorer les performances (& de temps à autre, la sécurité). Une définition générique du SE peut être : un (sous) système intelligent capable d’exécuter un ensemble prédéfini de tâches. – Il contient plusieurs capteurs lui permettant d’acquérir de l’information du monde qui l’entoure. – Il peut contenir des actionneurs ou des interfaces associées à ces capteurs. Il peut contenir aussi plusieurs liens de communication avec d’autres SE. Domaines d’application des systèmes embarqués ◼ Domaines « traditionnels » Avionique Robotique Automobile Militaire ◼ Domaines « nouveaux » Jeux et loisirs Téléphonie, Internet mobile Implants (santé sécurité) Immeubles intelligents Villes intelligentes Vêtements… Modèle générique de système embarqué et relation avec l'environnement Architecture en couches d'un système embarqué Différents composants d'un système embarqué Un système embarqué est construit autour de plusieurs composants matériels à savoir : Micro processeur Micro contrôleur Mémoire de mass Système sur puce Composants matériels d’un système embarque : Traitement de données : processeur Stockage de données Volatile : registres, cache, mémoire vive (SRAM, DRAM...) Non volatile : memoire morte (ROM, PROM, EPROM, EEPROM, flash...), support de stockage de masse Interaction avec le monde extérieur : périphériques De communication : controleur I2C, SPI, CAN, ethernet, WiFi, ZigBee, LoRaWAN... D’acquisition : capteur, convertisseur analogique-numérique, GPIO... De sortie : convertisseur numérique-analogique, LED, pilotage de moteur... Interconnexion processeur / autres composants (mémoire, périphériques) : bus Composants annexes : alimentation Vue matérielle (très) schématique : Vocabulaire Deux périphériques très courants GPIO (General-Purpose Input/Output) : patte (pin) d’un circuit intègre ou connecteur d’une carte électronique qui peut être utilise comme une entrée ou une sortie numérique (configurable dynamiquement). Plus largement désigne le périphérique qui va permettre de contrôler ces entrées-sorties UART (Universal Asynchronous Receiver Transmitter) : périphérique gérant un lien de communication série (les différents bits d’un mot sont envoyés les uns âpres les autres sur un seul fil) asynchrone (sans transmission d’horloge, celle-ci est reconstituée par le récepteur en détectant le début de la transmission et en connaissant, par configuration, le débit binaire) Interface processeur/monde exterieur Le processeur communique Avec des mémoires Avec des périphériques Communication avec la mémoire Type (lecture ou écriture) Adresse de la case mémoire concernée Donnée a écrire (sens processeur vers mémoire) ou donnée lue (sens mémoire vers processeur) Mémoires Mémoire vive (Random Access Memory, RAM) – Rapide, aussi bien en lecture qu’en écriture – Le plus souvent volatile – Utilisée pour stocker les données (et dans la plupart des cas le code) des applications en cours d’exécution – Differences technologies : SRAM (Static), DRAM (Dynamic), SDRAM (Synchronous Dynamic)... Memoire morte (Read-Only Memory, ROM) – Généralement plus lente, en particulier en écriture (lorsqu’elle est possible) – Non volatile – Utilisée pour stocker sur le long terme le code, les donnees initiales, la configuration... – Technologies : Mask ROM, PROM (Programmable), EPROM (Erasable Programmable), EEPROM (Electrically Erasable Programmable), Flash.. Lorsqu’un programme est en cours d’exécution, ou se trouve le code et ou se trouvent les données? Comment les mémoires sont reliées au processeur? – Architectures Harvard et von Neumann Architectures von Neumann: Un seul chemin et un seul espace mémoire pour le code (instructions) et les données La mémoire contient les données et les instructions L’unité centrale (CPU) charge les instructions depuis la mémoire. Un ensemble de registres aide le CPU: ◼ Compteur d’instructions (Program counter: PC), ◼ Registre d’instruction (Instruction register: IR) ◼ Pointeur de pile (stack pointer: SP) ◼ Registres à usage général (Accumulateur: A) Architectures Harvard Deux chemins et deux espaces mémoires distincts, un pour le code (instructions) et un pour les données Données et instructions dans des mémoires séparées Autorise deux accès simultanés à la mémoire. Utilisé pour la plupart des DSP Meilleure bande passante Performances plus prédictibles Architectures Harvard modifiée Architecture la plus répandue Quelques inconvénients : problème de cohérence de cache lors du traitement d’une instruction comme une donnée, goulot d’étranglement a la sortie du cache (moins critique, seulement en cas de défaut de cache) Deux types d’architectures SE Les systèmes embarqués jouent un rôle crucial dans de nombreux aspects de la vie moderne, des appareils électroménagers aux véhicules, en passant par les systèmes industriels et médicaux. Ces systèmes se divisent principalement en deux catégories : les systèmes embarqués à usage général (ou polyvalents) et les systèmes embarqués spécifiques (ou spécialisés). 1. Systèmes embarqués à usage général: Les systèmes embarqués à usage général sont conçus pour effectuer une variété de tâches différentes. Ils sont généralement construits autour de microprocesseurs ou de microcontrôleurs qui possèdent une certaine flexibilité en termes de programmation et d'application. Caractéristiques principales : - Flexibilité : Ces systèmes peuvent être reprogrammés pour accomplir différentes tâches, ce qui les rend polyvalents. - Puissance de calcul : Ils possèdent généralement une puissance de calcul suffisante pour gérer plusieurs types de logiciels, y compris les systèmes d'exploitation légers comme FreeRTOS ou des versions embarquées de Linux. - Exemples : Les smartphones, les ordinateurs de bord dans les voitures, ou les routeurs sont des exemples de systèmes embarqués à usage général. Types d’architectures à usage général : Les architectures à usage général de type RISC (Reduced Instruction Set Computer) et CISC (Complex Instruction Set Computer) sont deux approches fondamentales en matière de conception de microprocesseurs. Ces architectures influencent directement la manière dont les systèmes embarqués, parmi d'autres types de systèmes informatiques, traitent les instructions et exécutent les tâches. 1. Architecture RISC (Reduced Instruction Set Computer) Principe de base : L'architecture RISC repose sur une simplification maximale des instructions processeur. L'idée est de réduire le nombre et la complexité des instructions qu'un processeur doit exécuter, ce qui permet d'optimiser la vitesse d'exécution de chaque instruction. Caractéristiques principales : - Jeu d'instructions réduit : Les processeurs RISC utilisent un ensemble limité d'instructions simples et de longueur fixe. Cela facilite la rapidité d'exécution, car chaque instruction peut généralement être exécutée en un seul cycle d'horloge. - Pipeline efficace : Grâce à la simplicité des instructions, les architectures RISC peuvent tirer parti d'un pipeline d'instructions plus efficace, où plusieurs instructions sont exécutées en parallèle à différents stades de traitement. - Décodage des instructions simplifié : Le processus de décodage est moins complexe, ce qui réduit la latence et améliore la vitesse globale du processeur. - Uniformité des instructions : L'uniformité des instructions (toutes de même longueur) simplifie l'architecture matérielle, rendant plus facile l'optimisation des performances. Exemples de processeurs RISC : - ARM (Advanced RISC Machine): utilisé dans la plupart des smartphones et tablettes. - MIPS (Microprocessor without Interlocked Pipeline Stages): utilisé dans certains systèmes embarqués et consoles de jeux. -RISC-V (RISC five): une architecture RISC open-source de plus en plus populaire. Avantages : - Vitesse d'exécution élevée due à la simplicité et à l'efficacité du pipeline. - Consommation d'énergie réduite, ce qui est crucial pour les systèmes embarqués nécessitant une autonomie prolongée. Inconvénients : - Le code machine est souvent plus volumineux, car il faut plus d'instructions pour accomplir des tâches complexes. - Le développement logiciel peut être plus complexe en raison de la nécessité de gérer des opérations complexes à partir de nombreuses instructions simples. 2. Architecture CISC (Complex Instruction Set Computer) Principe de base : L'architecture CISC est conçue pour réduire le nombre de lignes de code nécessaires pour accomplir une tâche, en utilisant un ensemble d'instructions plus complexe et varié. Cela permet de simplifier la programmation en limitant le nombre d'instructions nécessaires pour des tâches complexes. Caractéristiques principales : - Jeu d'instructions complexe : Les processeurs CISC disposent d'un ensemble d'instructions étendu, où chaque instruction peut effectuer plusieurs opérations, comme le chargement, le calcul et le stockage de données, tout en une seule instruction. - Instructions de longueur variable : Contrairement à RISC, les instructions CISC peuvent être de longueur variable, ce qui permet des opérations très spécifiques ou complexes. - Décodage plus complexe : Le décodeur d'instructions est plus complexe, car il doit être capable d'interpréter une variété d'instructions de longueurs et de complexités différentes. - Réduction de la taille du code : En utilisant des instructions complexes, l'architecture CISC réduit le nombre total d'instructions nécessaires, ce qui peut réduire la taille du programme en mémoire. Exemples de processeurs CISC : - Intel x86 (utilisé dans la majorité des ordinateurs de bureau et serveurs) - Motorola 68000 (utilisé dans certains anciens ordinateurs et systèmes embarqués) Avantages : - Simplifie la programmation, car une seule instruction peut réaliser des tâches complexes. - Peut être plus performant pour certaines tâches spécifiques, où une instruction CISC remplace plusieurs instructions RISC. Inconvénients : - Les processeurs CISC ont tendance à consommer plus d'énergie et à être plus lents en termes de fréquence d'horloge, en raison de la complexité des instructions. - L'architecture matérielle est plus complexe et donc potentiellement plus coûteuse à produire. Comparaison RISC vs CISC : Conclusion Le choix entre une architecture RISC et CISC dépend des besoins spécifiques de l'application. Les architectures RISC sont souvent préférées pour les systèmes embarqués où l'efficacité énergétique et la vitesse sont cruciales, comme dans les smartphones ou les dispositifs IoT. Les architectures CISC, quant à elles, sont couramment utilisées dans les systèmes où la complexité des tâches à accomplir justifie la nécessité d'instructions plus riches et variées, comme dans les ordinateurs de bureau et les serveurs. 2. Systèmes embarqués spécifiques Les systèmes embarqués spécifiques sont conçus pour accomplir une tâche particulière ou un ensemble restreint de tâches. Ces systèmes sont optimisés pour leur fonction, ce qui les rend très efficaces dans leur domaine d'application spécifique. Caractéristiques principales : - Optimisation : Chaque aspect du matériel et du logiciel est conçu pour maximiser les performances pour une tâche spécifique. - Efficacité énergétique : Souvent, ces systèmes sont optimisés pour consommer le moins d'énergie possible tout en accomplissant leur tâche. - Exemples : Un régulateur de vitesse dans une voiture, un pacemaker, ou un capteur industriel sont des exemples de systèmes embarqués spécifiques. Architectures des systèmes embarqués et des IoT (Internet des objets : Les architectures à applications spécifiques, souvent désignées sous le terme « Architectures des systèmes embarqués et des IoT (Internet des objets) », sont conçues pour répondre aux besoins spécifiques de tâches ou d'applications précises. Ces architectures sont optimisées pour des critères tels que la performance, la consommation d'énergie, la taille, et la fiabilité, qui sont essentiels dans les systèmes embarqués et les dispositifs IoT. 1. Architecture des Systèmes Embarqués Les systèmes embarqués sont des systèmes informatiques spécialisés qui sont intégrés au sein d'appareils pour contrôler des fonctions spécifiques. Ces systèmes sont omniprésents dans divers domaines, tels que l'automobile, l'aérospatiale, la domotique, et l'électronique grand public. Caractéristiques principales : - Optimisation pour la tâche : Les systèmes embarqués sont souvent conçus pour accomplir une tâche spécifique, ce qui permet d'optimiser les ressources (processeur, mémoire, etc.) pour cette tâche. - Contraintes de temps réel : De nombreux systèmes embarqués doivent répondre à des contraintes de temps réel, où les délais de réponse sont critiques pour la sécurité ou le bon fonctionnement du système (ex. : systèmes de freinage dans les voitures, dispositifs médicaux). - Faible consommation d'énergie : La plupart des systèmes embarqués sont optimisés pour consommer le moins d'énergie possible, particulièrement dans les dispositifs portables ou alimentés par batterie. - Fiabilité et robustesse : Ces systèmes doivent être extrêmement fiables, car ils sont souvent utilisés dans des environnements critiques où les pannes ne sont pas tolérées. Exemples d'architectures de systèmes embarqués : - Microcontrôleurs spécialisés : Des microcontrôleurs comme les STM32 (STMicroelectronics) ou les PIC (Microchip) sont largement utilisés dans des applications embarquées. Ils sont souvent choisis pour leur faible consommation d'énergie et leur capacité à répondre aux besoins spécifiques de l'application. - System on Chip (SoC) : Les SoC intègrent un processeur, de la mémoire, des interfaces de communication, et parfois des périphériques spécifiques, tout en un seul composant. Par exemple, les SoC utilisés dans les smartphones et les tablettes intègrent des unités de traitement graphique (GPU), des modems, et d'autres composants nécessaires à ces appareils. 2. Architecture des Systèmes IoT (Internet des Objets) L'Internet des objets (IoT) désigne un réseau d'objets physiques qui sont connectés à Internet et capables de collecter, échanger et traiter des données. Les architectures IoT sont conçues pour gérer les besoins spécifiques de ces réseaux massifs de dispositifs connectés. Caractéristiques principales : - Connectivité : Les dispositifs IoT sont dotés de capacités de communication, souvent sans fil (Wi-Fi, Bluetooth, Zigbee, LoRa, etc.), leur permettant de se connecter à des réseaux locaux ou à Internet. - Traitement distribué : Contrairement aux systèmes embarqués traditionnels, où le traitement est centralisé, l'IoT repose souvent sur un traitement distribué. Chaque dispositif IoT peut traiter certaines données localement avant de transmettre les informations pertinentes à un serveur central ou à d'autres dispositifs. - Sécurité : La sécurité est une préoccupation majeure dans les architectures IoT, étant donné la nature distribuée et connectée des dispositifs. Des mécanismes comme le chiffrement, l'authentification forte, et la mise à jour sécurisée du firmware sont essentiels. - Gestion de l'énergie : Les dispositifs IoT sont souvent alimentés par batterie et doivent donc être extrêmement économes en énergie. Des techniques telles que le mode veille, la transmission sporadique des données, et l'optimisation du cycle de travail sont couramment utilisées. - Évolutivité : Les réseaux IoT doivent être capables de se développer facilement pour inclure des milliers, voire des millions de dispositifs. Cela nécessite des architectures capables de gérer un grand nombre de connexions simultanées et de distribuer efficacement les ressources réseau. Exemples d'architectures IoT : - Edge Computing : Dans l'IoT, le traitement des données peut être décentralisé au plus près des capteurs, c'est-à-dire en périphérie du réseau (« edge »). Cela permet de réduire la latence et la consommation de bande passante en traitant les données localement avant de les envoyer au cloud. - Cloud Computing : Les dispositifs IoT envoient souvent leurs données vers des serveurs cloud pour un traitement plus approfondi. Le cloud permet également de centraliser la gestion des dispositifs, le stockage des données, et l'analyse à grande échelle. - Architectures hybrides : Les architectures IoT modernes combinent souvent le traitement local (edge) avec le cloud, permettant d'optimiser à la fois la réactivité locale et les capacités analytiques globales. Comparaison entre Systèmes Embarqués et IoT : Conclusion Les architectures des systèmes embarqués et des IoT sont essentielles pour répondre aux exigences spécifiques de leurs domaines respectifs. Les systèmes embarqués sont optimisés pour des tâches spécifiques, souvent critiques en termes de temps et de consommation d'énergie. En revanche, les architectures IoT sont conçues pour gérer la connectivité massive, la gestion distribuée des données, et l’évolutivité, tout en mettant un accent particulier sur la sécurité et l’efficacité énergétique.