WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Les systèmes embarqués

( Télécharger le fichier original )
par Ramzi BOULKROUNE
Université de Annaba - Ingénieur d'état en électronique option télécommunication 2009
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

Chapitre II

Conception des logiciels

embarqués

Chapitre II conception des logiciels embarqués

II.1.Introduction :

La conjonction de l'évolution des technologies de fabrication des circuits intégrés et de la nature du marché des systèmes électroniques fait que l'on est amené à concevoir des circuits de plus en plus complexes (plusieurs millions) de transistors en un temps de plus en plus court (quelques mois). Ce phénomène a entraîné une métamorphose du processus de conception allant de l'idée au produit.

Durant les dernières décennies, on est passé de la conception de circuits composés de quelques milliers de portes à des systèmes structurés et intégrés comme un réseau sur une même puce. Les puces modernes peuvent contenir plusieurs processeurs, de la mémoire et un réseau de communication complexe. Le principe de la conception reste le même ; il s'agit de générer une réalisation physique sous forme d'une puce en partant d'une spécification système. Par contre, les outils mis en oeuvre et l'organisation du travail durant le processus de conception ont beaucoup évolué. Partant d'une conception complètement manuelle où l'on dessinait les masques du circuit à réaliser sur du papier spécial, on est passé à une conception quasi automatique en partant d'une description du comportement du circuit sous forme d'un programme décrit dans un langage de haut niveau.

Le ciblage de logiciel dans le cas des systèmes embarqués est traité aussi dans ce chapitre. Dans le domaine de la conception de logiciel, de très nombreux travaux ont été et sont effectués sur la compilation de descriptions de haut niveau vers les langages machines (interprétés par les processeurs). Les habitudes de programmation pour les ordinateurs portes à croire que la compilation et l'édition de liens sont les seuls traitements à apporter au logiciel pour pouvoir le faire fonctionner sur une architecture cible. Le but de ce chapitre est de montrer que dans le cas des systèmes embarqués, une autre étape est nécessaire avant la compilation : elle adapte le logiciel à l'architecture cible spécifique et sera nommée dans ce mémoire le ciblage logiciel.

II.2.Les systèmes pour puces :

Les prévisions stratégiques d'ITRS annoncent que 70 % des ASIC comporteront au moins un CPU embarqué à partir de l'année 2005. Ainsi la plupart des ASIC seront des systèmes mono-puces (SoC pour System on Chip en anglais). Cette tendance semble non seulement se confirmer mais se renforcer : les systèmes mono-puces contiendront des réseaux formés de plusieurs processeurs dans le cas d'applications telles que les terminaux mobiles, les Set top box, les processeurs de jeux et les processeurs de réseaux. De plus, ces puces contiendront des éléments non digitaux (par exemple analogique ou RF) et des mécanismes de communication très sophistiqués. Etant donné que tous ces systèmes correspondent à des marchés de masse, ils ont tous été (ou seront) intégrés sur une seul puce afin de réduire les coûts de production. Il est prévu que ces systèmes soient les principaux vecteurs d'orientation de toute l'industrie des semi-conducteurs. Il est donc crucial de maîtriser la conception de tels systèmes tout en respectant les contraintes de mise sur le marché et les objectifs de qualité.

Tous les acteurs dans le domaine des semi-conducteurs travaillent déjà sur des produits intégrant des processeurs multiples (CPU, DSP, ASIC, IP, etc.) et des réseaux de communication complexes (bus hiérarchiques, bus avec protocole TDMA, connexion point à point, structure en anneau et même réseaux de communication par paquets) dans des systèmes monopuces. Certains commencent même à parler de réseaux de composants monopuces (network on chip). Il s'agit

d'assembler des composants standards pour en faire un système comme on le fait pour les cartes. Ainsi, le problème n'est plus tant de concevoir des composants efficaces mais surtout d'obtenir une architecture qui respecte les contraintes de performances et de coûts. Pour les composants, le problème devient plutôt de s'assurer de leur validité avant de les utiliser. Cette évolution fait que le goulet d'étranglement du processus de conception devient maintenant la réalisation du réseau de communication des composants embarqués sur la puce et la validation globale de l'ensemble du système avant sa réalisation. Ainsi, nous sommes déjà passés de l'ASIC au SoC et nous sommes en train de passer au réseau sur puce.

La conception de ces nouveaux systèmes à l'aide de méthodes classiques conduit à des coûts et des délais de réalisation inacceptables. En fait, la conception de ces systèmes induit plusieurs points de cassures qui rendent difficile la mise en échelle des méthodes de conception existantes. Les principaux défis sont les suivants :

1. la conception des systèmes multiprocesseurs monopuces entraînera inévitablement la réutilisation de composants existants qui n'ont pas été conçu spécialement pour être assembler sur la même puce. Il sera donc nécessaire d'utiliser des méthodes d'assemblage de composants hétérogènes ;

2. le concepteur d'un système contenant des processeurs programmables doit obligatoirement fournir, en plus du matériel, une couche logicielle permettant la programmation de haut niveau du circuit. Il sera donc nécessaire d'aider les concepteurs de circuits à concevoir les couches logicielles ;

3. l'assemblage de composants hétérogènes sur une même puce concevoir des architectures dédiées à des applications particulières peut nécessiter des schémas de communication très sophistiqués mettant en oeuvre des parties matérielles, des parties logicielles et des parties non numériques telles que les interfaces de composants optiques ou micromécaniques. La conception de ces interfaces hétérogènes sera vraisemblablement le principal goulet d'étranglement du processus de conception des systèmes multiprocesseurs monopuces ;

4. la complexité des systèmes est telle qu'il devient quasi impossible de les spécifier/valider manuellement à des niveaux bas tels que le RTL où il faut donner/valider des détails au niveau du cycle d'horloge. Des méthodes de conception/validation basées sur des concepts de plus haut niveau sont donc nécessaires. Comme pour le logiciel, des outils de synthèse de haut niveau seront nécessaires pour le matériel. La vérification des composants synthétisés sera obligatoire afin de pouvoir en assurer la qualité.

La grande difficulté sera de maîtriser la complexité lors de la conception de ces réseaux monopuces. Il s'agira de réussir la conception rapide de système monopuces multiprocesseurs, et ce, sous de fortes contraintes de qualité et de temps de conception. La figure II.1 montre l'architecture d'un système monopuces. Cette architecture est structurée en couches en vue de maîtriser la complexité. La partie matérielle est composée de deux couches :

- la couche basse contient les principaux composants utilisés par le système. Il s'agit de composants standard tels que des processeurs (DSP, MCU, IP, mémoires) ;

- la couche de communication matérielle embarquée sur une puce. Il s'agit des dispositifs nécessaires à l'interaction complexe allant du simple pont (bridge en anglais) entre deux processeurs au réseau de communication de paquets. Bien que le réseau de communication lui-même soit

Chapitre II conception des logiciels embarqués

composé d'élément standard, il est souvent nécessaire d'ajouter des couches d'adaptation entre le réseau de communication et les composants de la première couche.

Logiciel spécifique à l'application

API

Services du système d'exploitation
(interruptions, gestion des ressources, entrées/sorties)

Pilotes

Réseau de communication matériel embarqué

CPU, IP, mémoires

(DSP, MCU) (ASIC, COTS)

Compromis
matériel/logiciel

Logiciel

Matériel

Figure II.1. Architecture logicielle/matérielle d'un système mono-puce Le logiciel embarqué est aussi découpé en couches :

- la couche de gestion de ressources permet d'adapter l'application à l'architecture.

Cette couche fournit les fonctions utilitaires nécessaires à l'application qu'il est indispensable de personnaliser pour l'architecture et ce pour des raisons d'efficacité.

Cette couche permet d'isoler l'application de l'architecture. Cette couche est souvent appelé « système d'exploitation » (OS). Les applications embarquées utilisent souvent des structures de données particulières avec des accès non standard (manipulation de champs de bits ou parcours rapides de tableaux) qui ne sont généralement pas fournis par les OS standard. D'autre part, les OS standard sont généralement trop volumineux pour être embarqués. Il sera souvent nécessaire de réaliser des OS spécifiques dédiés aux applications. Le lien avec le matériel se fait via les pilotes d'entrées/sorties et d'autres contrôleurs de bas niveau, qui permettent de contrôler les composants de l'architecture. Le code correspondant à ces pilotes est intimement lié au matériel. Ces pilotes permettent d'isoler le matériel du reste du logiciel ;

- le code de l'application.

Cette représentation en couches des systèmes monopuces permet de séparer la conception des composants logiciels (application) et matériels (composants existants ou dédiés) des couches de communication. Elle permet aussi de définir les différents métiers de conception et la distribution du travail entre les différentes équipes.

La plupart des méthodes de conception actuelles essayent de copier le flot de conception des cartes. Ce dernier sépare la conception en quatre métiers, l'architecture système, la conception des composants matériels, la conception des composants logiciels et l'intégration ou la conception système. Les trois derniers métiers sont montrés dans la figure II.2a. Dans les schémas traditionnels, le travail de l'architecte consistait à tailler des composants matériels sur mesure afin de prévoir les interconnexions de manière efficace et d'obtenir les meilleures performances. Ainsi tout le matériel est taillé sur mesure, les composants et le réseau de communication. Le logiciel étant réalisé à part, le concepteur d'architecture doit juste fournir une couche mince de logiciel permettant d'accéder aux ressources matérielles. Le fait que la grande partie des couches de communication est réalisée par des équipes séparées (logiciel, matériel) peut entraîner des surcoûts dus aux précautions et/ou aux sous-

Conception

Logiciel d'application

du API 1

logiciel

Système d'exploitation sur mesure

 
 

Piotes d'entrées/sorties

2

 

Réseau de communication matériel

 

intégrateur

Conception des composants

3

 
 

système 1. Concepteur du logiciel d'application

2. Concepteur des interfaces logicielles/ Matérielles pour système sur puce Concepteur 3. Concepteur de circuit

de circuit

utilisations. La vérification des différentes parties est aussi réalisée de manière séparée et chaque équipe utilise des programmes de test spécifiques.

Application

API

Système d'exploitation standard

Modèle abstrait de l'architecture

Logiciel de test

Piotes d'entrées/sorties

Réseau de communication matériel

Modèle des composants matériels

Programme de test

Conception des composants

a) Les métiers pour la conception b) Les métiers de la conception

des systèmes sur cartes des systèmes sur puces

Figure II.2 : Les métiers de la conception système

Ce schéma n'est plus applicable à partir d'un certain degré de complexité. Ainsi la conception d'architecture consistera surtout à assembler des composants existants en vue de respecter des contraintes de performances et de coûts au niveau du système global et non plus au niveau du seul composant. Ainsi, il devient crucial de combiner la conception des couches de communication logicielles et matérielles. Cette évolution permettra la séparation totale entre la conception des couches de communication et les composants matériels et logiciels. Une telle séparation est nécessaire pour introduire un peu de flexibilité et de modularité dans l'architecture en permettant de charger plus facilement les modules de base. Ainsi, l'abstraction des interfaces de communication devient le pivot de la conception des systèmes monopuces.

C'est cette abstraction qui va permettre la conception de circuits à partir d'un modèle supérieur au niveau RTL utilisé aujourd'hui. Le fait de pouvoir décrire l'architecture globale du système et d'abstraire la communication entre les composants doit permettre de mieux finaliser les interfaces entre les différentes couches à l'aide de procédure d'interface (API pour Application Procédure Interface) de haut niveau. Ainsi on pourra décrire le matériel au niveau comportemental et le logiciel à un haut niveau ; bien entendu, le but étant de pouvoir simuler globalement le système à partir de ce modèle abstrait et de permettre la génération automatique de codes logiciel et matériel. C'est ce schéma (présenté figure II.2b) qu'essaient d'atteindre les nouvelles recherches dans le domaine de la conception système.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Il faut répondre au mal par la rectitude, au bien par le bien."   Confucius