Vous êtes sur la page 1sur 78

Examen Systèmes Embarqués 2021 ELN ESE M2 USTO

Exo1
1)Le pipeline a 3 niveaux
Un multiplicateur matériel
2 type d'instruction 32 bits et 16 bits (compressés) (thumb)
7modes de fonctionnement avec chaque mode une banque de registre
Architecture Load and store (instruction de format fixe)
Condition incluse dans l'instruction
Barrel registre pour faire un décalage en parallèle avec les opérations de L'ALU
Etc……
2)Soft core est un cœur de microprocesseur qui est disponible sous forme d'un code HDL
(description en langage matériel) et par conséquent il est flexible il peut être adapté aux besoins de
l'application contrairement au hard core qui est donné sous un bloc compact complet a être utilisé
tel quel
Exemple le MICROBLAZE
3)la mémoire cache peut être efficace et rentable si le programme exploite la propriété de la
localité temporelle et la localité spatiale des données et des instructions donc il faut optimiser les
boucles et utiliser des des structures de données adéquates
4)la problématique de la conception d'un système embarqué concerne la productivité : on exige un
produit très compétitif avec un TTM très réduit.
L'obstacle de la productivité de conception qui résume l'écart entre l'avancement technologique
en électronique et son exploitation effective et réelle par une conception qui aboutit à un produit
délivrable et commercialisable.
Solutions: (réduire le TTM)
Procéder par une méthodologie de conception
Modélisation a haut niveau (niveau fonctionnel)
Utiliser des modèles formels
Réutilisation de composants IP
Utilisation des outils de conception automatique
Codesign du matériel et logicielle
et laisser la partie comportement indépendant de l'architecture
5) Conception classique

1. Commencez par des spécifications de la fonctionnalité et un ensemble de contraintes


2. Générer un modèle plus formel de la fonctionnalité, basée sur un concept de modélisation.
3. Simulez le modèle afin de vérifiez la fonctionnalité. Si nécessaire faire des ajustements.
4. Choisissez une architecture (μprocesseur, bus, etc.) tels que les limites de coût sont respectées
Ainsi que les contraintes de temps et de puissance.
5. Construisez un prototype et implémentez le système.
6. Vérifiez le système: si les contraintes ne sont pas satisfaites:
Revenez à 4, choisissez une nouvelle architecture et démarrez une nouvelle implémentation.
Conception actuelle

Examen SYS EMB USTO ELN 1


1. Concevoir à différents niveaux d’abstraction
2. Ramener la complexité à un niveau gérable
3. Apporter les détails d’implantation le plus tard possible
4. Développer le matériel et logiciel en même temps sur des chemins parallèles
5. Séparation des champs d’étude à chaque niveau
6. Séparer l’application de la plateforme
7. Rester ‘platform independant’ le plus longtemps possible (Flot de conception en Y)
8. Réaliser des objectifs au niveau du système en exploitant les compromis entre matériel et
logiciel dans un système grâce à leur conception simultanée

le goulot d'étranglement concerne la répartition du matériel et logiciel car


Il existe plusieurs possibilités

Classique moderne
6) ZYBO et ZEDBOARD
7)le zynq est un soc qui contient deux paries PS (unité de traitement comportant 2 cœurs ARM9 et
une partie logique PL qui comporte un FPGA. Quant a ARM7TDMI est un uniprocesseur
L'utilité du zynq est sa possibilité de l'utiliser pour réaliser certaines tache en matériel et d'autres en
logiciel ce qui le rend tres pratique pour une conception conjointe.
8) CAN 2.0A Standard trame maxi = 1 + 11 + 1 + 6 + 64 + 16 + 2 + 7 = 108 bits
Rendement = Données utiles/Trame standard maxi=64/108= 59:25%

Examen SYS EMB USTO ELN 2


9) ASIC et FPGA sont classés matériel
Dsp et microcontrolleur sont classés logiciel

Exo2
A)
A(Th1 ,n1) B(Th2 ,n2)
Th la periode de l’horloge
n le CPI nombre de cycles (de periode horloge) par instruction
si on a un programme qui comporte N instructions
le temps d’execution sur l’implementation A est : Ta=NxTh1xn1
-----------------------------------------------------B est Tb=NxTh2xn2
A est plus rapide que B si : Ta< Tb d’où : NxTh1xn1 < NxTh2xn2 d’où :
Th1xn1 < Th2xn2
A .N si Th2=1microS et n2=2 et n1=1 Th1 < 2 microS on peut prendre 1.5 microsec
A est plus rapide Que B d’une proportion de 2 / 1.5
B)Efficacité energetique=MOPS/mw
L'efficacité énergétique est le nombre des OPs utiles divisés par l'énergie nécessaire pour les
réaliser. OP/nJ (nb d’operation par nano joule)
P=kxCl xfx(Vdd)2 = 1000 x 100x 106 x5x5x10-12= 2,5 w = 2500 mW
1000 operation par cycle d'horloge =1000/Tcl=1000xf=1000x100x106=1011Operation/s
Eff= 1011/2500=100/25 =4 x 107 ops/mw=40 x106 = 40MOPS/mw

EXO2
1)
A est une amelioration -----acceleration d’une fraction F par un facteur S
Temps avant amelioration=Tav
Temps apres amelioration =Tap
Tap= F/S x Tav + (1-F) xTav d’ou: Tap= (F/S +(1-F))Tav = (F+S-FS)/S x Tav
Le speed up= sp= Tav/Tap = S/(F+S-FS)
Discussion:
Si F=1 amelioration totale sp= S
Si F=0 aucune amelioration sp = 1

2) F=0,4 et S=5 application de la formule précédente

Tap=0,4 Tav/5 + 0,6 Tav speed up= 5/0,4+5-0,4x5=5/3,4=1,47

Examen SYS EMB USTO ELN 3


Systèmes Embarqués 2020 ELN ESE M2 USTO

Avant propos:
L'électronique actuelle a connu un avancement technologique gigantesque qui a donné de
l'électronique embarquée qui uni la puissance de la programmation à la puissance de l'électronique
et se manifeste pratiquement par les systèmes embarqués qui sont le cœur battant de tout
dispositif moderne. Omniprésents, ils révolutionnent les usages… Les systèmes embarqués sont de
plus en plus présents dans notre quotidien, les domaines dans lesquels on les trouve sont de plus
en plus nombreux : téléphone portable, distributeur de billet, voiture, etc.
L'objectif de ce cours est d’acquérir les notions de base d'un système embarqué et d’assimiler
les démarches nécessaires pour la mise en œuvre et la conception de ce système selon le
domaine d’application visé.
Ce cours qui se place à la fin d'une succession de cours dépendants (systèmes à
microprocesseur, microcontrôleurs, FPGA, temps réel, programmation C et Java etc .. ) vise
principalement à initier l'étudiant à la conception et la réalisation d'un système embarqué.

Chapitre 1 : Introduction aux systèmes embarqués (2 semaines)


- Définition, Historique des systèmes embarqués
- schéma général et constituants matériel et logiciel
- Caractéristiques et contraintes, comparaison avec un système informatique général
- Domaines d’application et leurs spécificités (temps réel, sécurité, tolérance aux
fautes)

Définition
Il n'y a pas de définition commune du terme "système embarqué" (SEM)
Wikipedia 1 par exemple le définit comme "un système électronique et informatique autonome,
dédié à des tâches précises. Ses ressources disponibles sont généralement limitées. Cette limitation
est généralement d'ordre spatial (taille limitée) et énergétique (consommation restreinte)".

On parle donc d'un appareillage autonome piloté par un logiciel complètement intégré au système
qu'il contrôle, faisant de lui partie intégrante, et puisant de ses ressources dans le but d'accomplir
une fonction spécifique utilisant un ou plusieurs processeurs. Le Matériel et logiciel sont intimement
liés

-Un système peut être défini comme un arrangement dans lequel toutes les unités se réunissent et
travaillent ensemble selon un plan ou un programme pour atteindre les objectifs définis.

— embarqué (embedded) enfoui … noyé … scellé … intégré, pas facilement discernable, encapsulé
dans le dispositif qu'il commande (si il fait partie d'un plus grand appareil).
N'est pas visible en tant que tel, mais est intégré dans un équipement doté d'une autre fonction: on
dit aussi que le système est enfoui ce qui traduit plus fidèlement le terme Embedded.

Historique des systèmes embarqués (SEM)


L'un des premiers SEM était l'ordinateur de guidage Apollo (mission lunaire), développé par Charles
Stark Draper de MIT Instrumentation Laboratory. Un des premiers systèmes embarqués produits en
série était l'ordinateur de guidage Autonetics D-17 pour le missile Minuteman, sorti en 1961.

M. OUSLIM Page 1
Systèmes Embarqués 2020 ELN ESE M2 USTO

Depuis ces premières applications dans les années 1960, le prix des systèmes embarqués a baissé et
il y a eu une augmentation spectaculaire de la puissance de traitement, donnant naissance au
premier microprocesseur, l'Intel 4004 dans les années 70. Au début des années 80, la mémoire, les
composants du système d'entrée et de sortie avaient été intégrés dans la même puce que le
processeur formant un microcontrôleur. Avec le développement des circuits intégrés (de l'intégration
a petite échelle (SSI) vers l'intégration à très grande échelle VLSI) ces circuits sont devenus plus
denses (compact + rapide) et moins coûteux : 100 M transistors/puce ce qui a conduit a des
implantations matérielles : ASIC, SoC, FPGA, … très sophistiquées
Depuis 20 ans l'électronique embarquée intègre les nanotechnologies, la fabrication de circuits
intégrés utilise des traits de gravure d'une mesure inférieure à 100 nm aboutissant à une
amélioration des capacités de stockage, 1 térabit par pouce carré (1024 Go par 2,54 cm2)
En outre, les progrès accomplis par l’industrie du silicium et l’arrivée en force de nouveaux outils de
conception élargissent actuellement le spectre d’applications des systèmes embarqués. Ceux-ci ne
sont plus constitués de jeux de composants implantés sur une carte imprimée (PCB), mais de
systèmes complets intégrés sur une seule puce (SoC).

Caractéristiques des systèmes embarqués


L’autonomie
Les systèmes embarqués doivent en général être autonomes. Cette autonomie est nécessaire
lorsque l'intervention humaine est impossible, mais aussi lorsque la réaction humaine est trop
lente ou insuffisamment fiable.
La spécificité
Les systèmes embarqués sont dédiés pour une ou plusieurs applications spécifiques pour
lesquelles ils ont été crées. Ils doivent être dotés d’un ensemble de composants matériels et
logiciels spécialisés afin de réaliser ses taches requises.
La complexité
La complexité d’un SEM augmente avec le nombre de ses composants hétérogènes qui rendent
la cohabitation difficile
L’intelligence
L'Intelligence est le moyen d’améliorer la qualité du système Exemple : Autodiagnostic, Auto-
configuration, Evaluation des risques…
La réactivité
Un SEM doit interagir avec son environnement à une vitesse qui est imposée par ce dernier.
Ceci induit donc des impératifs de temps de réponse. C'est pour cette raison que le Système
embarqué est souvent basé sur un système temps réel.
La Mobilité
Permet le déplacement du système.
L’exécution en temps réel
L’exécution des opérations doivent être faites avec des échéances (deadlines) précises au-delà
desquelles les résultats ne sont plus valides
— Exemple critique : le contrôleur de frein d’une voiture

Contraintes des systèmes embarqués


Taille (capacité) mémoire: l’estimation la plus précise possible de l’utilisation mémoire
Puissance de calcul: la sélection du processeur d’après la charge de travail a effectuer.
Ressource d'énergie/autonomie : la conception hardware (dispositifs utilisés) et software
(complexités des algorithmes implémentés) doit prendre en compte la consommation. La
consommation d’énergie. Le système embarqué mobile doit être à faible consommation car il est
alimenté par des batteries. Une consommation excessive augmente le prix du système car il faut
alors des batteries de plus forte capacité.

M. OUSLIM Page 2
Systèmes Embarqués 2020 ELN ESE M2 USTO

Temps de réponse: temps entre l'événement déclencheur et l'action résultante (le système doit
réagir vite )
Fiabilité (Reliability): la probabilité pour que le système ne tombe pas en panne
Sécurité (Safety) risque pour l'homme ou l’environnement
La sureté Le système doit être opérationnel même lorsqu’un composant est défaillant.
Tolérance aux fautes c’est la capacité d'un système à survivre en présence de pannes
Le volume / le poids La miniaturisation des SEMs est un facteur important qui affecte
directement sa mobilité. Réduction de l’encombrement grâce à la miniaturisation des
composants électroniques .
Architecture matérielle
Optimisation Généralement logicielle de petite taille car plus c’est grand, plus il y a de chance d’avoir
des bugs. Ce sont des logiciels produits à grande échelle, le moindre centime compte.
Le coût Beaucoup de systèmes embarqués sont fabriqués en grande série et doivent avoir des
prix extrêmement faibles pour faire face à la concurrence
prix de développement, prix de vente
autres contraintes... dépendantes de l'application visée
La flexibilité
La flexibilité se résume par la capacité de changer quelques propriétés ou fonctionnalités du
système. Ces changements peuvent être réalisés par :
− la reprogrammation de son calculateur
− la reconfiguration matérielle de ses circuits logiques programmables (FPGA, PLD)
− la réutilisation de ses composants virtuels(IP)
Il s'agit aussi de créer des systèmes avec des possibilités de débogage intégrées qui permettent une
maintenance à distance.
La portabilité c’est une mesure de la facilité d'utilisation du même logiciel intégré dans divers
environnements. Il nécessite des abstractions généralisées entre la logique du programme
d'application elle-même et les interfaces système de bas niveau

L’embarqué en quelques chiffres


-En 2004: 14 milliards de processeurs pour l’embarqué (microprocesseur, SoC, DSP, etc.)
260 millions de processeurs PC. Moins de 2% (5%) des processeurs vendu sont pour les PC, 98%
(95%) pour l’embarqué
En moyenne, 1/3 du coût global d’un avion est aujourd’hui lié aux systèmes embarqués, dont 40%
en développement de logiciels. Environ 20% du coût d’une automobile vient de la conception
et de la réalisation des systèmes embarqués ; un véhicule peut regrouper aujourd’hui jusqu’à 70
ECU (Electronic Control Unit) ; le système embarqué a également un effet de levier important : le
succès commercial d’une automobile dépend de plus en plus de la qualité des systèmes
embarqués et de l’offre de services à l’utilisateur. La part du logiciel embarqué dans le
développement de nouveaux produits et systèmes de distribution et de gestion d’énergie dépasse
les15%.

On peut distinguer quatre principaux types de systèmes embarqués en fonction du type d'application
visé :

 Les systèmes embarqués à usage général exécutent des applications similaires à celles
exécutées sur des ordinateurs « traditionnels », mais ils sont embarqués dans des packages
de petite taille. On a, par exemple, les assistants personnels (PDA) et les guichets
automatiques bancaires (ATM).

M. OUSLIM Page 3
Systèmes Embarqués 2020 ELN ESE M2 USTO

 Les systèmes embarqués de contrôle sont utilisés pour effectuer un contrôle en boucle
rétroactive fermée de systèmes temps réel. On les retrouve notamment dans les moteurs de
voiture, les centrales nucléaires et pour le contrôle aérien.

 On peut également utiliser des systèmes embarqués pour traiter des signaux, c'est-à-dire
réaliser des calculs sur des gros flux de données. Ces derniers se retrouvent typiquement
dans le traitement audio et vidéo et dans les radars et sonars.

 Enfin, des systèmes embarqués sont également utilisés dans le domaine des communications
et réseaux, pour effectuer de la transmission de données et réaliser des communications. Ils
sont notamment utilisés dans la téléphonie et pour l'internet.

Métriques de conception communes


• Coût unitaire : coût de manufacturer chaque unité en excluant les charges non récurrentes
(fabriquer) une autre copie du système
• Cout NRE« Non‐Recurring Engineering cost » : coût de conception initial non répétitif
• Cout de conception du système
Cout total = cout NRE + cout unitaire * nombre des unités

• Taille: dimension physique du système


• Performance : temps de réponse du système
• Énergie consommée : alimentation du système
• Flexibilité: capacité de modifier le système à coût raisonnable (NRE faible)
• Fiabilité et sécurité d’utilisation

Il existe aussi des métriques de marché

• Temps de prototypage: temps requis pour monter une version opérationnelle du système
• Temps de mise en marché TTM : temps requis pour développer une version commercialisable.
• Maintenabilité: capacité de modifier le système après la mise en marché
• Durabilité, sources d’approvisionnement, etc.

Problématique des systèmes embarqués

Afin de répondre aux exigences clés, les systèmes embarqués sont généralement limités à des
ressources limitées en termes de calcul, de mémoire, de taille d'affichage, etc. . Cela ajoute en outre
un «défi décisionnel» majeur pour les architectes et les chefs de produit sur la sélection des
processeurs, des systèmes d'exploitation, des normes d'utilisation, etc., car les demandes de
fonctionnalités augmentent avec le temps de mise sur le marché qui diminue.

1-Exemple de quatre grands défis

 La sûretéde fonctionnement. Le système embarqué peut, s’il subit des défaillances, mettre
des vies humaines en danger ou mettre en péril des investissements importants. Ils sont dits «
critiques »et leur fiabilitéest donc un défi majeur. Imagine-t-on un avion dont le radar tombe
en panne ? Ce type de système embarquédoit toujours donner des résultats pertinents dans les
délais attendus.

M. OUSLIM Page 4
Systèmes Embarqués 2020 ELN ESE M2 USTO

 La sécurité. Certains systèmes embarqués peuvent renfermer des données confidentielles,


médicales par exemple ou relatives à la vie privée de l’utilisateur. Ils doivent donc pouvoir
s’inscrire dans une politique de cyberdéfense.

 La miniaturisation et l’autonomie. Les systèmes embarqués doivent être légers, petits et


durer longtemps avec une consommation énergétique la plus faible possible. Ceci est
fondamental en astronautique par exemple, mais aussi dans les domaines où la place est
limitée et le poids un paramètre important – par exemple dans les automobiles de sport.

 Le coût. Les systèmes embarqués doivent être efficients avec une grande précision : offrir une
puissance de calcul et de stockage totalement calibrée selon sa fonction, afin d’avoir un prix
de revient le plus faible possible surtout s’il est produit en grande série

2-Développement d’un système embarqué

Il faut satisfaire plusieurs contraintes simultanées!

–mais souvent difficile à atteindre, car les contraintes sont généralement mutuellement exclusives
(Améliorer une métrique peut avoir un effet négatif sur une autre). Ex. petites dimensions physiques,
grande puissance de calcul, faible émission de chaleur et grande autonomie énergétique

- Problème d’optimisation multiple portant sur un ensemble de métriques de design (traits


mesurables à l’implémentation)

-L'environnement est souvent hostile, pour des raisons physiques (chocs, variations de
température, ou humaines (malveillance :système communiquant ,IoT, cloud). C'est pour cela que la
sécurité - au sens de résistance aux malveillances - et la fiabilité – au sens de continuité de service
sont souvent rattachées à la problématique des systèmes embarqués .

Pb: Construire des systèmes de fonctionnalitéet qualitédéterminée et garantie a cout acceptable avec
un délai de mise sur le marchéfaible (time to market), est un defi technologique majeur

Objectif actuel: diminuer au minimum le nombre de composants sur une carte pour mettre tout sur une
seule puce.

3-Les systèmes embarqués devenant de plus en plus complexes à programmer, il est souvent difficile
de concevoir la partie logicielle sur la base d’une boucle infinie et d’une gestion des interruptions. De
plus en plus de concepteurs adoptent alors un système d’exploitation, offrant différents services
permettant une meilleure gestion de la complexité du logiciel embarqué.
Un système d’exploitation offre ainsi différents services pour mieux appréhender cette complexité
– apport du multitâche : une application monolithique est divisée en une somme de tâches
coopératives (système multitâche) ;
– maîtrise des contraintes temporelles : système temps réel, qui doit satisfaire des contraintes
explicites (bornées) de temps de réponse ;
– développement de pilotes de périphérique (driver) simplifié pour pouvoir avoir accès aux
accélérateurs matériels ;
– système de fichiers.

4-les systèmes embarqués sont aujourd'hui fortement communicants

M. OUSLIM Page 5
Systèmes Embarqués 2020 ELN ESE M2 USTO

Traditionnellement, les fabricants de puces développées processeurs plus rapide, pour répondre aux
exigences de performances croissantes, mais ils se sont aperçus que en augmentant la fréquence
cela conduit à une plus grande consommation de puissance et donc les thermiques plus élevées. Les
fabricants de semi-conducteurs ont reconnu que la voie à suivre est de construire des processeurs
qui fonctionnent à basse fréquence et basse tension, mais comprennent des multicœurs sur une
seule puce. La performance globale augmente en raison des processeurs pouvant effectuer plus
d'une tâche à un moment donné. Aujourd'hui, la plupart des consoles de jeu sont multicœurs, tout
comme les smartphones, qui deviennent en effet «plus intelligents».

Schéma général et constituants matériel et logiciel

Le schéma général d'un système embarqué typique est donné dans la figure:

Fig. Système embarqué « typique »

CPU (processeur embarqué et ses E/S).Possibilité d’avoir un/des FPGAs et/ou ASICs et/ou DSP pour
jouer le rôle de coprocesseurs (accélération matérielle).

Le système est en permanence en contact avec l’environnement, dans lequel il récupère des
informations via des capteurs (température, vitesse de rotation...) et avec lequel il interagit par
l’intermédiaire d’actionneurs (moteur, écrans, voyants...), il possède des entrées/sorties spécifiques
et très réactives. Son but premier consiste à traiter de l'information reçue depuis son environnement
pour en faire profiter le produit hôte qui l'héberge. Par exemple, les voitures modernes peuvent être
équipées d'un système de climatisation de l'air complètement contrôlé par un système embarqué. Ce
dernier collecte de l'information sur la température et sur l'humidité de l'air au sein de la voiture et,
sur base de cette dernière, active ou non le climatiseur, etc.

M. OUSLIM Page 6
Systèmes Embarqués 2020 ELN ESE M2 USTO

Fig. Système embarqué plus élaboré

Tout système embarqué pourra être découpé en un certains nombres de tâches spécifiques à
exécuter selon un ordre particulier. Certains évènements doivent également être pris en compte dès
qu’ils arrivent (arrêt d’urgence par exemple) et doivent exécuter des tâches plus prioritaires que
d’autres. Gestion de tâches :
– priorité
– ordonnancement
Gestion d’évènements (indiquant l’évolution d’un système) :
– synchrones
– asynchrones (non prédictibles) - interruptions
Selon la complexité du système, on peut voir apparaitre un certains nombres de tâches et
d’évènements extérieurs susceptibles d’interrompre le programme initial. Si ce nombre de taches
devient trop important, il est difficile de prévoir leur ordonnancement et les interactions possibles
entre elles et les évènements. Il peut également arriver que certaines tâches doivent s’exécuter en
parallèle.

Exemples

Fig.Téléphone portable

M. OUSLIM Page 7
Systèmes Embarqués 2020 ELN ESE M2 USTO

Fig. Appareil photo numérique

Différences avec les « machines normales »:

Informatique classique: Embarqué:


 Processeur standard  Processeur dédié(contrôleur)
 Multiples unités fonctionnelles (flottant)  Architecture adaptée
 Vitesse élevée (> GHz)  Vitesse faible (~200 MHz)
 Consommation électrique élevée  8-32bits : mémoire limitée
 Chaleur  Basse consommation
 Taille  Petite taille, grand volume => faible coût
 MMU (mémoire virtuelle)  Processeur DSP (traitements)
 OS  Très puissants
 Cache  Quelques Mo de mémoire
 Grand nombre de périphériques  RTOS

Champs d’application des systèmes embarqués:


Les systèmes embarqués peuvent être trouvés dans une vaste gamme d'articles électriques allant de
produits simples et peu coûteux, tels que les montres numériques coûteux, les produits complexes
tels que les automobiles. On peut distinguer4 grandes classes
1. Calcul généraliste
- Similaire aux applications bureau mais embarqué (assistant personnel, téléphone portable,
tablettes, etc.)
- Consoles de jeux vidéo, set-top box
2. Contrôle de systèmes
-Moteur, voiture, avion, processus chimique, nucléaire, navigation, etc.
3. Traitement du signal
- Compression vidéo, radar, flux de données, etc.
4. Réseaux et communications
- Transmission de données, commutation, routage, téléphone, Internet, etc.

M. OUSLIM Page 8
Systèmes Embarqués 2020 ELN ESE M2 USTO

Exemples de systèmes embarqués


-Grand public :
-Appareils photographiques et caméras, lecteurs DVD, chauffage et climatisation, éclairage,
électroménager, domotique, sécurité (incendie, intrusion, surveillance, piscine), ascenseurs, HiFi,
audio et vidéo, consoles de jeux, décodeurs, etc.
-Transports :
- Automobile, aéronautique, spatial, marine, assistance à la conduite ou au pilotage, maintenance,
signalisation, contrôle du trafic aérien, maritime (aujourd’hui aide, demain automatique, objectif
trafic autoroutier), distributeur de billets, radar, etc.
-Défense:
-Contrôle de trajectoire, lanceur, etc.
-Secteur manufacturier et industrie :
- Chaînes de production, automates, production et distribution d’électricité, réacteurs chimiques,
réacteurs nucléaires, raffineries, dispositifs de sécurité, aide à la maintenance, etc.
-Information et communication :
- Imprimante, périphérique, téléphone, répondeur, fax, routeurs, téléphonie mobile, satellites, GPS,
etc.
- Santé :
- Imagerie médicale, diagnostique, soins, implants, handicapés, etc.
-Autres :
-Carte à puce, distributeurs, etc.

Quelques chiffres sur les applications des systemes embarqués:


-En moyenne, 1/3 du coût global d’un avion est aujourd’hui lié aux systèmes embarqués, dont 40%
en développement de logiciels.
-Environ 20% du coût d’une automobile vient de la conception et de la réalisation des
systèmes embarqués ; un véhicule peut regrouper aujourd’hui jusqu’à 70 ECU (Electronic Control
Unit) ; le système embarqué a également un effet de levier important : le succès commercial d’une
automobile dépend de plus en plus de la qualité des systèmes embarqués et de l’offre de
services à l’utilisateur.
-La part du logiciel embarqué dans le développement de nouveaux produits et systèmes
de distribution et de gestion d’énergie dépasse les15%.

M. OUSLIM Page 9
Systèmes Embarqués 2020 ELN ESE M2 USTO

Fig exemple d'application telephone

Fig. ECU d'un Véhicule

Unité de commande électronique (ECU) automobile qui comprend la commande de transmission, le


régulateur de vitesse, l'injection de carburant, les freins antiblocage et la suspension active dans les
mêmes modules ou des modules séparés

M. OUSLIM Page 10
Systèmes Embarqués 2020 ELN ESE M2 USTO

Fig. les deux composantes logicielle et matérielle d'un appareil photo digitale

M. OUSLIM Page 11
Systèmes Embarqués 2020 ELN ESE M2 USTO

Fig. Système de vision pour véhicule automobile

Ce système Traite l’information venant de caméras, lasers, sonars et autres capteurs pour réaliser
des tâches comme l’avertissement de changement de ligne, de somnolence, ou l’aide au
stationnement. Les résultats peuvent être affichés sur écran ou annoncés par haut-parleur/sirène.

EXERCICE
Q1. Donnez un exemple de système embarqué typique. Dessinez le diagramme et discutez de la
fonction des différents blocs. Quel type de processeur embarqué utilise-il?
Ans: Un récepteur de système de positionnement global portable

Pour les détails http//www.gpsworld.com/


Un récepteur GPS reçoit des signaux d'une constellation d'au moins quatre sur un total de 24
satellites. Sur la base de la synchronisation et d'autres signaux d'information envoyés par ces
satellites, le processeur de signal numérique calcule la position en utilisant la triangulation.
Le schéma fonctionnel principal est divisé en (1) Système d'antenne active (2) Frontal RF / IF (3) Le
Processeur de signal numérique (DSP) Le système d'antenne active abrite l'antenne, un filtre passe-
bande et un amplificateur à faible bruit (LNA) Le frontal RF / IF abrite un autre filtre passe-bande,
l'amplificateur RF et le démodulateur et Convertisseur A / N. Le DSP accepte les données numériques
et décode le signal pour récupérer les informations envoyées par le Satellites GPS.

M. OUSLIM Page 12
Systèmes Embarqués 2020 ELN ESE M2 USTO

Chapitre 2 Processeurs embarqués

Comment classer un processeur embarqué? Le marché des processeurs embarqués traditionnels est
généralement divisé en microprocesseurs, microcontrôleurs et processeurs de signaux numériques. Les
microcontrôleurs sont généralement des processeurs 8/16 bits avec un certain nombre de périphériques
d'entrée / sortie (E / S), et ils sont généralement autonomes en termes de ROM et de RAM. Les
microprocesseurs, d'autre part, comprennent traditionnellement un processeur 32 bits avec un certain
nombre de périphériques intégrés. Alors que le transistor continue sa réduction de taille chaque année,
il est devenu de plus en plus rentable de développer des dispositifs System-On-Chip (SOC) à grande
échelle. La majorité des SOC contiennent aujourd'hui un microprocesseur 32 bits intégré à une large
gamme de produit

Introduction: Un processeur exécute un programme, composé d’instructions plus ou moins


complexes, certaines instructions peuvent nécessiter des données, localisées en mémoire,
chargées explicitement. Les instructions sont elles-mêmes en mémoire.
Pour travailler, le processus dispose de registres (zones de stockage
temporaire dans le CPU, extrêmement rapides mais en nombre limité,
certains ont un rôle particulier)
Dispositif programmable utilisé dans une variété d'applications sa
structure interne présente 2 chemins correspondants respectivement aux
données et contrôle les deux constituants d'une instruction formant le
programme destiné à être exécuté par ce dispositif.

Fig. structure interne générale d'un processeur

Unités de calcul Elles sont choisies en fonction de trois critères principaux : le coût par unité, la
consommation d’énergie et la puissance de calcul.

Leurs performances vis-à-vis de ces critères sont limitées par la fréquence maximale d´horloge, le
nombre de cycles par instruction (CPI), le nombre d´instructions disponibles et la taille de chaque
instruction : 4, 16, 32 ou 64 bits. En conséquence, ces caractéristiques fixent des limites aux
performances obtenues par le logiciel qui s´exécute sur ces unités de calcul. On distingue, en fonction
du jeu d´instructions utilisé, des familles d´unités de calcul : 80x86 PIC ,ARM ;AVR ;MIPS; Motorola
6800 ;PowerPC entre autres.

General Purpose Processor (GPP)

Un processeur GPP a usage général comprend un contrôleur, un


chemin de données général et une mémoire programme. Les
concepteurs peuvent charger divers programmes en mémoire. Car un
processeur à usage général est flexible un grand nombre de ces
systèmes peut être vendu pour une variété d'applications. En utilisant
un processeur a usage général, le temps de mise sur le marché et le

M.OUSLIM Page 1
Systèmes Embarqués 2020 ELN ESE M2 USTO

coût NRE sont faibles. propose un jeu d'instructions assez large et varié permettant de réaliser
beaucoup de choses. C'est le genre de processeur que l'on retrouve notamment dans
les ordinateurs « traditionnels ».

Single Purpose Processor ( SPP architecture dédiée)

On implémente uniquement les ressources nécessaires à


l’implémentation de l’algorithme :Un circuit numérique
conçu pour exécuter exactement un programme. Dans la
mesure où un processeur à usage unique est conçu pour une
seule tâche, il offre des performances élevées, une taille
réduite et Basse consommation énergétique.

Application Specific Instruction Set Processor (ASIP)

Il s'agit d'un compromis entre un processeur à usage général et un


processeur à usage unique. C'est un processeur programmable
optimisé pour une classe d'applications particulière. Un ASIP
permet une flexibilité tout en maintenant de bonnes performances,
taille et consommation électrique (exemple DSP, microcontrolleur,
GPU) possède un jeu d'instructions qui est spécifiquement conçu
pour un certain ensemble d'opérations.

Choix du type de processeur

Dans une première étape il faut faire un compromis entre les performances du processur et la flexibilté
de telle manière a se située dans la zone hachurée de la figure suivante

Dans cette figure on constate approximativement que la flexibilité augmente pour un processeur GPP
mais ses performances diminuent ces performances sont exprimées en termes de Millions d'opération
per second par surface, par consommation et par poids alors que pour une architecture SPP on a
totalement l'inverse ce qui implique l'utilisation des ASIP (dsp et microcontrôleurs dans la plus part
des applications des systèmes embarqués ) car ce type de processeur représente bien la partie du
compromis entre le flexibilité et les performances

on peut comparer ces différents types d'unités de calcul sur la base de deux critères. Au plus l'unité de
calcul sera générique, au plus grande sera la flexibilité qu'elle offre pour l'utiliser et
la programmer mais par contre, au moins les performances et
la consommation énergétique seront bonnes. Si ces deux derniers critères sont importants, il convient
de se déplacer vers des unités de calcul plus spécifiques. Néanmoins, ces dernières ont un cout plus

M.OUSLIM Page 2
Systèmes Embarqués 2020 ELN ESE M2 USTO

important, dû à la conception et au développement des circuits et dû au fait qu'ils ne peuvent pas


forcément être produits en masse comme les processeurs à usage général (microprocesseur et
microcontrôleur).

Les architectures des processeurs


Von Neumann vs. Harvard

L'architecture “Von Neumann1 ” est Classique proposée par John Von Neumann (1903-1957) : qui a
mis au point la structure du 1ièr ordinateur à programme enregistré dans une mémoire contenant les
adresses et les données

L’architecture Harvard a deux bus de données et deux bus d’adresse permet deux lectures simultanées
présentant les données et les instructions dans deux mémoires séparées.
La plupart des DSP (digital signal processor) utilisent l’architecture Harvard
Note : DSP dédié pour traitement
de signal (opération sur les
matrices)
Permet une plus grande bande
passante pour les données
(nombre de données lues ou
écrites par cycles importantes)

Fig. a) von Neumann

b) Harvard

RISC vs. CISC

Complex instruction set computer (CISC): Architecture à jeu d instructions complexe Plusieurs
modes d’adressages mémoires possible; Grand nombre d’instructions (sémantique complexe) Codage
des instructions variables : le nombre d’octets nécessaire pour le codage des instructions est variable
Les instructions ALU peuvent avoir un opérande en mémoire La taille du code est en général plus
réduite que dans le cas des RISC (code density) D’où un compilateur simple au prix d'une architecture
complexe

Exemple : x86, AMD,

Reduced instruction set computer (RISC):Architecture à jeu d’instruction réduit, structure simple
Seul deux instructions accèdent à la mémoire load/store; Format régulier Grand nombre de registres
Certains registres sont visibles au programmeurs (assembleur) , d’autres sont gérées par le matériel
Structure hardware simplifié = espace silicium libre rempile par la mémoire Cache; moins d ’accès à
la mémoire externe. On peut aussi avoir des ensembles de registres chevauchant (overlapped register
sets: ORS) dont le but d'accélérer le traitement des sous programmes Diminuer le coût de l’appel de
procédure (Passage de paramètres, Sauvegarde des registres, Adresse de retour ) critère très exige pour
les applications gouvernées par les événements; système embarqué très réactif.
On l'appelle aussi Architecture Load Store car les arguments doivent être dans les registres avant
l'exécution. Les instructions ALU ont des registres source et destination presentant une régularité
d'exécution d’où une facilité de décodage d'instructions par consequent une architecture simple au prix
d'un compilateur complexe.

Exemple : Arm, MIPS

M.OUSLIM Page 3
Systèmes Embarqués 2020 ELN ESE M2 USTO

Traiter une instruction implique les opérations suivantes (microinstructions)

Lire l’instruction en mémoire : fetch


Comprendre ce que fait l’instruction (addition ?multiplication ? …) : decode
Aller chercher les opérandes si nécessaire (en mémoire ou en registre) : read
Exécuter l’instruction : execute
Ecrire les résultats dans un registre ou en mémoire : write back

On se demande parfois pourquoi faire appel à une unité programmable dans l'architecture typique d'un
système embarqué et pourquoi ne pas utiliser une solution totalement matériel.
La raison principale est que l’utilisation du logiciel permet de spécialiser plus rapidement et plus
facilement un système embarqué. Et la Mise au point du système est facile et rapide. Et c'est une
solution de faible coût.
Il faut noter alors que Dans la plupart des systèmes embarqués, le logiciel domine le coût du Système
et que la part du logiciel dans les Systèmes embarqués ne cesse d’augmenter.

Unités de calcul. Elles sont choisies en fonction de trois critères principaux : le coût par unité(au
maximum quelques dollars par puce pour l'électronique de grande diffusion est une fonction à la fois
de la surface (combien d'ajustement sur puce) et de la complexité d'utilisation (en termes de coût
d'ingénierie), la consommation d’énergie le « power budget » il faudra plus de puissance de calcul par
watt)et la puissance de calcul (exprimée en MOPS pour Millions d'opérations par seconde). Leurs
performances vis-à-vis de ces critères sont limitées par la fréquence maximale d´horloge, le nombre de
cycles par instruction (CPI), le nombre d´instructions disponibles et la taille de chaque instruction : 4,
16, 32 ou 64 bits. En conséquence, ces caractéristiques fixent des limites aux performances obtenues
par le logiciel qui s´exécute sur ces unités de calcul. On distingue, en fonction du jeu d´instructions
utilisé, des familles d´unités de calcul : 80x86 PIC ,ARM ;AVR ;MIPS; Motorola 6800 ;PowerPC
entre autres

Technique de Pipeline
un pipeline est un ensemble d’éléments en série chargés d'une partie de l'exécution d'une instruction
le nombre d’éléments P est appelé profondeur du pipeline
• Découper le traitement d’une instruction en plusieurs étages
– mise à jour PC, chargement instruction, décodage et lecture registres, exécution,
écriture registre
• A un instant donné, chaque étage travaille sur une instruction différente
– en début de cycle, chaque étage envoie « son » instruction à l’étage suivant
Chaque instruction passe par différentes étapes ces étapes n'utilisent pas les mêmes circuits donc
pas besoin d’attendre qu’une instruction finisse pour en traiter une autre comme pour une chaîne
de montage (automobiles ...)

pipeline basique à 5 étages dans une machine RISC

IF = Instruction Fetch,
ID = Instruction Decode,
EX = Execute,
MEM = Memory access,
WB = Register write back

M.OUSLIM Page 4
Systèmes Embarqués 2020 ELN ESE M2 USTO

On exécute donc N instructions en N + P - 1 cycles (au lieu de N×P si pas de pipeline)


t=10 on a fini d'exécuter 5 instructions.
cette technique permet d'accélérer le traitement des instructions. En 9 cycles d'horloge, 5 instructions
sont traitées alors que sans Pipeline, il faudrait 5*5= 25 cycles d'horloge.
Gain théorique car nombreux problèmes surgissent en pratique

En pratique actuellement : on trouve autour de 15 étages Exemples de profondeur de pipeline (nombre


d'étages) Processeurs Intel i3, i5, i7 : 14 Core 2 Duo et Mobile : 14 et 12 P4 Prescott : 31 P4
(avant architecture Prescott) : 20 Intel P3 : 10 Processeurs AMD K10 : 16
Mais un pipeline profond pose plus de problèmes qu'un pipeline court
Une étape du pipeline s’exécute en général en 1 cycle CPU
Le pipeline ne réduit pas le temps nécessaire pour une instruction
Mais il augmente le nombre d’instructions par cycle (à un moment donné, autant d'instructions
en cours d'exécution que la profondeur du pipeline), donc amélioration des performances du
processeur mais au prix d'un certains nombres d'inconvénients qu'on appelle les aléas ou Hasards.
On distingue trois types:

1. Aléas structurels : On a besoin parfois d’écrire et de charger une donnée en même temps sur le
même banc de registre.
2. Aléas de données : Cette erreur intervient lorsque le pipeline modifie l’ordre des accès en
lecture écriture.
3. Aléas de contrôle : Le problème est provoqué par des instructions de branchement. Ces
instructions vont modifier le compteur ordinal (PC).

Aléas structurels

Deux étapes différentes du pipeline peuvent nécessiter les même circuits du processeur
Par exemple
Une instruction fait des calculs sur un entier Elle sera découpée en micro-instructions, dont une fera
appel à l’ALU Une autre instruction entre dans le pipeline : quand elle accèdera à la mémoire elle aura
aussi besoin de l’ALU C’est ce qu’on appelle un structural hazard On a un Structural Hazard quand
des instructions dans le pipeline nécessitent au même moment les même ressourcesDans cette
situation, il faut bloquer le pipeline Stall(instruction bloquée dans sa progression) C’est l’instruction
la plus avancée qui a priorité Toutes les instructions arrivées après elle dans le pipeline sont bloquées
Celles arrivées avant peuvent continuer

Aléas de données

Le pipeline change le timing d’exécution des instructions Deux instructions séquentielles peuvent
avoir leur exécution qui se recouvre partiellement
Exemple :
ADD R1, R2, R3 // R1 ← R2+R3
SUB R4, R1, R5 // R4 ← R1­R5

Dans une exécution avec pipeline, l’instruction 2 lira la valeur de R1 avant qu’elle ne soit écrite.

M.OUSLIM Page 5
Systèmes Embarqués 2020 ELN ESE M2 USTO

Il faut donc bloquer le pipeline dans ce cas (stall) (Une autre solution consiste à utiliser l'architecture
Harvard. C'est le cas des processeurs ARM

Différents types des aléas de données

Deux instructions contigües, i et j, peuvent présenter trois types d’aléa de données:


* RAW (read after write): j essaie de lire une source avant que i ne l’ait modifiée
* WAR (write after read): j essaie de modifier une destination avant que i ne l’ait utilisée comme
source
* WAW (write after write):j essaie d’écrire dans une destination avant que i ne l’ait fait: l’ordre
normal d’écriture est modifié

• Pour respecter les dépendances RAW, WAR et WAW, on peut être amené à introduire des
« bulles » dans le pipeline (bulle: une partie du pipeline est « gelée »)

Aléas de contrôle Le pire de tous les aléas du pipeline

Le pipeline doit chercher une nouvelle instruction avant que la présente soit exécutée.
¨ Si l’instruction présente est un branchement conditionnel, avant que l’adresse de saut soit calculée
d’autres instructions ont été cherchées.
la pénalité de branchement augmente avec la profondeur du pipeline.
Exemple : la boucle while while (a < b) a := a + 1;
L’instruction jge entre dans le pipeline On ne sait pas encore le résultat de la comparaison, donc
on ne sait pas s'il faut sauter (suivre une branche) ou s'il faut continuer dans la branche en séquence
On peut bloquer le pipeline jusqu’à savoir : ce ci n'est pas efficace
L’instruction jge doit fournir 2 informations: Savoir si oui ou non on doit sauter : quelle est l’adresse
du saut ? Pour limiter l’attente dans le pipeline, il faut ces 2 informations le plus vite possible
Au lieu d’attendre, pourquoi ne pas commencer à exécuter l’instruction suivante ? On fait l’hypothèse
que le saut n’aura pas lieu Si le saut n’a pas lieu, on n'a rien perdu ! Le pipeline n’a pas été bloqué,
rien (registres, mémoire) n'a encore été modifié par l'instruction : performance optimale Si le
branchement a lieu Tout ce qui est entré dans le pipeline après l’instruction n’aurait pas dû y entrer Il
faut vider le pipeline : flush Plus le pipeline est long plus c’est coûteux
¨ En moyenne, on trouve un branchement chaque 4-6 instructions..

M.OUSLIM Page 6
Systèmes Embarqués 2020 ELN ESE M2 USTO

Prédiction de branchement
On peut mieux faire que toujours décider de ne pas suivre une branche
Partie du CPU dédiée à cette tâche (Branch Processing Unit - BPU) Permet d’obtenir un taux de
succès élevé Souvent basé sur l’historique d’exécution Si une branche n’a pas été prise récemment,
très probablement elle ne le sera pas dans un futur proche Taux de succès très élevé
Efficacité des prédictions
En moyenne, autour de 90% des prédictions sont correctes

Réordonnancement d’instructions
Pourquoi ne pas traiter les problèmes en amont, avant d’entrer dans le pipeline ?
Exemple : ADD R1, R2, R3 // R1 ← R2 + R3
SUB R4, R1, R5 // R4 ← R1 – R5
ADD R6, R7, R8 // R6 ← R7 + R8
ADD R2, R3, R5 // R2 ← R7 + R8
Dans cet ordre, il y a dépendance des données (R1), donc blocage du pipeline Mais si on fait les 3
ADD en premier, alors plus de problème ADD R1, R2, R3 // R1 ← R2 + R3
ADD R6, R7, R8 // R6 ← R7 + R8
ADD R2, R3, R5 // R2 ← R3 + R5
SUB R4, R1, R5 // R4 ← R1 – R5

Le réordonnancement est décidé par le processeur par le mécanisme appelé Scheduler qui nécessite
de calculer les dépendances entre les instructions et travaille sur un sous ensemble d’instructions
appelé fenêtre. Plus la fenêtre est grande, plus il est possible de faire des réordonnanceurs complexes

Remarques:
• Le pipeline ne réduit pas le temps d’exécution d ’une instruction
– en fait, ça l’allonge même un peu à cause des verrous qu’on rajoute entre les étages
• Permet un débit d’une instruction par cycle

On peut rajouter des pipelines pour pouvoir aller


encore plus vite, c'est ce qui a été mis en place dans
des processeurs dits superscalaires :
on met en parallèle plusieurs pipelines pour
multiplier les performances de façon linéaire.

Processeur super-scalaire Plusieurs instructions peuvent terminer par cycle d’horloge


Il s’agit d’un seul cœur et d’un seul thread.
Les instructions sont lues de manière séquentielle -
Le CPU vérifie les dépendances entre instructions sur ce processeur superscalaire de degré 2 (2
pipelines, cas de la figure) , on multiplie les performances par
deux : on passe donc de 5 à 10 requêtes traitées en 9 cycles

Simultaneous Multi Threading SMT


Pour améliorer les performances des cpu, une autre technique a
été mise en place : le SMT. Dont le but est d'augmenter le
parallélisme des threads,
Il a été remarqué que les processeurs pourraient être sous-
exploité dans le sens où ils pourraient traiter encore plus
d'instructions, mais ils ne sont pas alimentés assez rapidement.
Pour remédier à ce problème, le SMT se base sur le principe que
non plus un mais plusieurs threads alimentent le processeur en
instructions. Ces threads partagent la mémoire (caches et
registres) et le ou les pipelines. Ainsi il n'y a plus de temps perdu
où le processeur ne travaille pas

M.OUSLIM Page 7
Systèmes Embarqués 2020 ELN ESE M2 USTO

Cas de la figure precedente: A un moment donné dans le tempsnPrésence de bulles état inactif

Processeurs multi-cœur multicores


Caractérisé par la mise de plusieurs processeurs sur la
même puce.
Chaque cœur est indépendant.
Chaque cœur peut être réalisé de manière super-scalaire
avec SMT
Les mémoires caches peuvent être partagés ou pas
Les performances globales augmentent car les multicœurs
peuvent effectuer plus d'une tâche à un moment donné.
Aujourd'hui, la plupart des consoles de jeu sont multicœurs,
tout comme les smartphones, qui deviennent en effet «plus
intelligents».

Exemple de la figure intelI7 (6 Cœurs)

(Very Long Instruction Word) VLIW


Une architecture de processeur qui lit un groupe d'instructions et les exécute en même temps. Par
exemple, le groupe (mot) peut contenir quatre instructions, et le compilateur s'assure que ces quatre
instructions ne dépendent pas les unes des autres afin qu'elles puissent être exécutées simultanément.
Sinon, il place des no-ops (instructions vierges) dans le mot si nécessaire.

Les processeurs superscalaires diffèrent des processeurs multicœurs par les unités fonctionnelles
redondantes qui ne sont pas des processeurs entiers. Un seul processeur est composé d'unités
fonctionnelles plus fines telles que l'ALU, le multiplicateur entier, le décalage entier, l'unité à virgule
flottante, etc. Il peut y avoir plusieurs versions de chaque unité fonctionnelle pour permettre
l'exécution de nombreuses instructions en parallèle. Cela diffère d'un processeur multicœur qui traite
simultanément les instructions de plusieurs threads, un thread par coeur. Il diffère également d'un
processeur en pipeline, où les multiples instructions peuvent être simultanément à différentes étapes
d'exécution, à la manière de la chaîne de montage

Ces trois techniques ont toutes un coût: une complexité matérielle accrue.
Avant d'exécuter des opérations en parallèle, le processeur doit vérifier que les instructions n'ont pas
d'interdépendances. Il existe de nombreux types d'interdépendances
Traditionnellement, les fabricants de puces ont développé des processeurs monocœur plus rapides
pour répondre aux exigences de performances toujours croissantes, mais ils se sont vite rendu compte
que l'augmentation de la fréquence, même si elle offrait certains avantages, présentait également des
inconvénients tels que:
• Cela a conduit à une consommation d'énergie plus élevée et donc à des thermiques plus élevés;
• Le coût global a augmenté car les périphériques environnants devaient également fonctionner à une
vitesse équivalente, ce qui n'était vraiment pas pratique dans tous les cas, en y entraînant les coûts.

Ce paradigme est un sérieux inconvénient pour les exigences de calcul embarqué, de sorte que les
fabricants de semi-conducteurs ont reconnu que la voie à suivre consiste à construire des processeurs
qui fonctionnent à des fréquences et des tensions plus basses mais qui incluent des cœurs parallèles sur
une seule puce.
Dans le monde de plus en plus interconnecté, la sécurité intégrée numérique n'est plus une option mais
une nécessité car elle est très critique pour que davantage de transactions se produisent sur des
périphériques intégrés en tant que frontaux. En raison des ressources limitées sur les systèmes, les
systèmes embarqués ont des défis à mettre en œuvre sur des systèmes de sécurité à part entière. Par
conséquent, le concept de «sécurité intégrée» offre un nouveau différenciateur pour le marketing de
produits embarqués. La sécurité et la surveillance numériques font actuellement l'objet de nouvelles
applications dans le domaine de l'embarqué qui bénéficie du phénomène multicœur

M.OUSLIM Page 8
Systèmes Embarqués 2020 ELN ESE M2 USTO

Mesures de performances
Fréquence CPU f : fréquence de l’horloge interne du processeur dépend de l’échelle de gravure des
transistors le Cycle CPU: T = 1 / f
IPC est le Nombre moyen d’instructions exécutées par cycle IPC  nb totalnbd'instructio ns exécutées
total de cy cles
En anglais : Average cycles per instruction (CPI)
Exemple: 5 étages non pipeliné, CPI = 5 et pour 5 étages en pipeline, CPI = 1

Facteurs de performance du processeur


1-Nombre d'instructions- (Déterminé par le jeu d'instructions et le compilateur)
2-IPC et temps de cycle (déterminé par le type de CPU)

Performances livrées(MIPS) = fréquence * instructions par cycle (IPC) MIPS  IPC f


Un IPC plus élevé entraîne généralement des chemins de données plus larges

L'effort d'Amélioration de performance se porte pour un processeur embarqué sur l'optimisation du


compilateur, le jeu d'instruction et la microarchitecture

• Débit d’exécution: faire plus de travail utile pendant un temps donné


• Temps d’exécution : faire un travail donné dans un temps plus court

Mesures réelles de performances


Pour comparer les performances des processeurs on utilise un benchmark (Logiciel réalisant un
certain calcul/traitement) exemple: Tours de Hanoi, Fibonnacci etc .
On exécute ce même traitement sur tous les processeurs pour pouvoir comparer le temps d'exécution

Loi d’Amdahl
La loi d'Amdahl est une formule utilisée pour trouver l'amélioration maximale possible en améliorant
une partie particulière d'un système. Dans le calcul parallèle, la loi d'Amdahl est principalement
utilisée pour prédire l'accélération maximale théorique du traitement de programme utilisant plusieurs
processeurs. Ce terme est également connu comme l'argument d'Amdahl.
Loi1: L'amélioration des performances résultant de l'accélération d'une partie d'un système
informatique est limitée par la proportion de temps pendant laquelle l'amélioration est utilisée.

Le temps d’exécution après une amélioration d’un aspect d’une machine est donné par :
Temps d'exécution après amélioration =
Temps d'exécution affecté par l'amélioration/Facteur d'amélioration + Temps d'exécution non
affecté

Exemple : Supposons que le temps d’exécution d’un certain programme soit 100 sec et que les
multiplications représentent 80 sec de ce temps. Quel sera le temps d’exécution après avoir
Apporté une amélioration de 5 fois dans la vitesse de multiplication ?
Donc une amélioration globale de 2,77 seulement.
Temps d'exécution après amélioration = 80/5+ 20=36

Accélération (speedup)

Accélération= taux d’Amélioration de vitesse= temps d’exécution avant/temps d’exécution après

Exemple: supposons qu’un programme passe 50% du temps d’exécution dans du calcul en virgule
flottante, et supposons qu’on multiplie par 2 les performances du calcul en virgule flottante. Quelle est
l’accélération globale ?

M.OUSLIM Page 9
Systèmes Embarqués 2020 ELN ESE M2 USTO

solution:
1 1 3 t 4
t  t  t  t aglobale    1.33
2 4 4 t 3
d'une manière générale on déduit les relations suivantes:

1
a globale 
t

t a globale 
fractionaméliorée
t  fractionaméliorée t  (1  fraction (1  fractionaméliorée ) 
améliorée )t alocale
alocale

Consommation électrique

Le besoin de solutions à faible consommation est particulièrement fort dans les trois domaines
d'application suivants : les systèmes ambiants intelligents (incluant la communication mobile et les
réseaux de capteurs), l'automobile et l'électronique de grande diffusion.

D'après Intel, actuellement chaque augmentation de 1 % en performance entraîne une augmentation de


3 % en consommation pour différentes raisons. La taille des transistors diminue et leur nombre
augmente à surface donnée, la fréquence d'horloge augmente, le courant de fuite augmente, induisant
de la chaleur et des pertes. Si le nombre de transistors par unité de surface continue d'augmenter de la
même façon sans améliorer la gestion de la consommation, les microprocesseurs vont consommer de
l'ordre de quelques dizaines de milliers de watts par cm2 , ce qui rapproche dangereusement le
composant de la température de fusion du silicium. La consommation devient donc une contrainte
critique. D'ailleurs certains constructeurs ont vu leur puce très performante fondre lorsque toutes les
possibilités de calcul étaient activées. Par conséquent, La de dissipation chaleur entraine la diminution
de la fiabilité et une augmentation du coût de la mise en oeuvre 1€/W si >40W

Estimation de la consommation
Dans les processeurs, on utilise le transistor MOS comme un interrupteur qui réagit en fonction de sa
grille : suivant la valeur de la tension qui est appliquée sur la grille, le transistor conduira ou ne
conduira pas le courant entre la source et le drain. Les processeurs modernes sont construits à base de
CMOS (complémentaire métal-oxyde semi-conducteur)

Dans les transistors CMOS, on trouve les transistors NMOS qui s'ouvrent lorsqu'on place une tension
égale à zéro sur la grille et se ferment si la tension placée sur cette même grille représente un 1 ; et les
PMOS qui se ferment lorsque la tension sur la grille est nulle, et s'ouvrent si celle-ci représente un 1.

Le transistor est composé de deux morceaux de conducteurs (la grille et la liaison drain-source)
séparés par un isolant, c'est une sorte de condensateur.
Une partie des pertes énergétiques vient du fait que ces transistors consomment de l'énergie en
changeant d'état : on appelle cette perte la consommation
dynamique

La puissance dissipée à travers la résistance du canal MOSFET est


simplement IDS x VDS. Voici l'intégrale d'énergie pour la transition
1 à 0 du nœud de sortie, où nous mesurons IDS à l'aide de l'équation
du courant sortant du condensateur du nœud de sortie: I = CdV / dt.
En supposant que le signal d'entrée est un signal d'horloge de période
tclk et que chaque transition prend un demi-cycle d'horloge, nous
pouvons déterminer que l'énergie dissipée à travers le réseau pull

M.OUSLIM Page 10
Systèmes Embarqués 2020 ELN ESE M2 USTO

down est de 0,5 f C V2 DD , où la fréquence f nous indique le nombre de ces transitions par seconde, C
est la capacité nodale et V DD (la tension d'alimentation) est la tension de démarrage du condensateur
nodal. Il existe une intégrale similaire pour le courant dissipé par le réseau pullup lors de la charge du
condensateur et cela donne le même résultat. Ainsi, un cycle complet de charge puis de décharge
dissipe 0,5fCV2 joules. Notez que toute cette énergie provient de l'alimentation - la première moitié est
dissipée lorsque le nœud de sortie est chargé et l'autre moitié stockée sous forme d'énergie dans le
condensateur. Ensuite, l’énergie du condensateur est dissipée lors de sa décharge.

Fig. CMOS est compose d’un NMOS et d’un PMOS, et d’une charge C L Qui représente l’ensemble
des capacitances parasites qui sont branchées a la sortie.

Energie prise de l'alimentation pendant dt= VDD CL * dVout/ dt * dt  0  i(t) * VDD * dt = CL VDD
 dVout = CL VDD 2 pendant un cycle d'horloge la puissance correspondante consommée E/Tclk =f CL
VDD 2

Fig. •pendant une transition


montante de la sortie de la porte,
l’alimentation fournit le courant
qui,au travers du réseau de
transistor PMOS, charge la
capacité connectée au nœud de
sortie ;
•pendant une transition
descendante de la sortie, la
capacité de sortie est déchargée à
traversle réseau NMOS.
Comme l’illustre la figure
l’énergie fournie par
l’alimentation est dissipée par
effet Joule dans les réseau de
transistors PMOS (respectivement NMOS) pendant les transitions montantes (respectivement
descendantes) de la sortie de la porte.

Figure : montre le Icc courant de


court circuit et le chronogramme
des signaux a l'entrée et la sortie
du composant CMOS (inverseur)

Sources de consommation d'énergie

M.OUSLIM Page 11
Systèmes Embarqués 2020 ELN ESE M2 USTO

La consommation d'énergie principale dans les circuits CMOS comprend deux formes de puissance, la
consommation d'énergie dynamique Pdynamique et la consommation d'énergie statique Pstatic. La
consommation d'énergie statique, également connue sous le nom de puissance inactive ou de fuite, est
la principale source de consommation d'énergie dans les circuit, persistante qu'un circuit soit actif ou
inactif. La consommation d'énergie de fuite est causée par un courant parasite qui traverse les
transistors, en raison de leur construction, même lorsque le transistor est éteint. En plus de l'énergie
dynamique en raison de l'activité du circuit,
P=Pstatic+Pdynamic, avec Pdynamic=aCV2 f

Pour obtenir la consommation d'énergie totale du processeur, il suffit de multiplier celle d'un transistor
par le nombre total de transistors du processeur (on peut faire ça parce que ces transistors sont tous
identiques). Le terme a dans Pdynamic est le facteur d'activité de commutation qui se rapporte au
nombre de transitions qui se produisent entre les états numériques (c'est-à-dire 0 à 1 ou vice versa)
dans le processeur,
On peut aussi avoir une consommation Pcc de court-circuit, qui est causée par les courants de court-
circuit qui surviennent lorsque des paires de transistors PMOS / NMOS conduisent simultanément

La conception de faible puissance implique la capacité de réduire les trois composants

Consommation statique
Les seuls facteurs qui affectent la consommation de fuite sont la tension d'alimentation Vdd , la
température T et le processus technologique k. Ceci est tiré de l'expression approximative suivante

La Puissance statique devient la part la plus importante avec la diminution technologique (voir
Tableau)

L'évolution des technologies silicium permettant une diminution constante des dimensions physiques
des transistors

M.OUSLIM Page 12
Systèmes Embarqués 2020 ELN ESE M2 USTO

Puissance statique VS
puissance active

Techniques de réduction de la dissipation de puissance (Niveau physique/transistor) Solutions


apportées a la consommation de l'énergie statique:
Fuite du courant de grille (gatecurrentleakage) réduite en augmentant l’épaisseur d’oxyde
Fuite du courant de jonction (junction currentleakage) minimisé par une implantation moins
endommageante(implantation engineering)
Fuite de courant sous le seuil (subthreshold) réduite par l’augmentation de la tension de seuil Vth
Grille 3D Tri gate[INTEL] Transistor 3D sur un substrat fortement appauvri
Courant de drain amélioré (45% vitesse de commutation)
Courant de fuite réduit dans l’état bloqué (“off” state) (50x)

Temps de propagation
Les signaux électriques mettent un certain temps à traverser les éléments du processeur ou à circuler
sur un conducteur
Certaines opérations effectuées par le processeur ne sont plus réalisables en un temps trop court et
limitent la possibilité de monter en fréquence
Le délai (retard) dans un circuit CMOS est approximativement donné
par la relation suivante
Donc la Fréquence maximale liée a ce delai et elle est donc fonction de
la tension d’alimentation Vdd et de Vt tension seuil nécessaire pour
commuter le transistor
Exp Vt=0,8v si Vdd=3,3v
D'après cette relation Le délai varie en 1/Vdd, et croit quand Vdd est proche de Vth

L'efficacité énergétique (Energy efficiency)


Parfois on utilise 'efficacité énergétique comme critère définie comme étant le nombre des opérations
utiles divisé par l'énergie nécessaire pour les réaliser. OP/nJ (nombre d’operations par nano joule)
Puisque l'énergie c'est la puissance * le temps donc OP / sec divisé par nJ / sec donne MOPS / mW.
Cela implique que la métrique d'énergie est exactement la même que la métrique de puissance. Par
conséquent, l'efficacité énergétique et l'efficacité énergétique sont en fait les mêmes. Voir exemple
dans la figure

M.OUSLIM Page 13
Systèmes Embarqués 2020 ELN ESE M2 USTO

Techniques de réduction de la puissance consommée par un circuit : DPM et DVS

Dynamic power management (DPM)


La gestion dynamique de la puissance est une stratégie de contrôle visant à adapter la puissance / les
performances d'un système à sa charge de travail. DPM fait référence à l'arrêt sélectif des composants
du système qui sont inactifs ou sous-utilisés.

Cependant, l’utilisation de telles techniques entraîne


également une perte de performance en raison des
consommations supplémentaires liées aux arrêts et à la
réactivation.
Transition – Passage d'un mode de fonctionnement à
un autre • Exemple: mise en veille du processeur
RUN: operationel
IDLE: une routine soft peut arrêter le CPU lorsqu'il
n'est pas utilisé, tout en surveillant les interruptions
SLEEP: Arrêt de l'activité sur puce
DPM cherche à prévoir si une période d'inactivité sera
suffisamment longue pour compenser les
consommations supplémentaires liées aux
changements d'état de puissance (cas de l'exemple donné dans la figure).
L’objectif principal de toute stratégie DPM est de faire en sorte que le composant soit en veille
(dormant) au moins pendant Tbe. Sinon, il risque de consommer plus d'énergie qu'un cas toujours
actif.

Tbe (break-event time)


La durée minimale d'une période d'inactivité pour économiser de l'énergie est appelée Tbe

DVS : L'ajustement dynamique de la tension des processeurs (en anglais dynamic voltage scaling)
est une technique de gestion de la tension électrique utilisée dans les architectures des ordinateurs.
Cette technique consiste à augmenter ou réduire le voltage des courants électriques qui parcourent le
processeur. DVS réduit la consommation d'énergie des processeurs en utilisant divers points de
fonctionnement fournis au processeur. Ces points de fonctionnement sont constitués de paires de
tension et de fréquence. La sélection des points de fonctionnement peut être effectuée en fonction de la
charge du système à un moment donné.

La première caractéristique signifie en réalité que des performances élevées ne sont nécessaires que
pour une petite fraction du temps, tandis que pour le reste du temps, un processeur peu performant et
basse consommation suffit. Nous pouvons atteindre les faibles performances en réduisant simplement
la fréquence de fonctionnement du processeur lorsque la vitesse maximale n’est pas nécessaire. DVS
va au-delà et ajuste la tension de fonctionnement du processeur en fonction de la fréquence.

Cela est possible car la logique CMOS statique, utilisée dans la grande majorité des microprocesseurs
aujourd'hui, a une fréquence de fonctionnement maximale dépendante de la tension. Ainsi, lorsqu'il est
utilisé à une fréquence réduite, le processeur peut fonctionner à une tension d'alimentation inférieure.

En Conclusion on peut dire que : La clé pour réduire la puissance est le parallélisme

M.OUSLIM Page 14
Systèmes Embarqués 2020 ELN ESE M2 USTO

Le tableau suivant présente une Etude comparative en prenant en considération les performances et la
consommation de certains processeurs de base utilisés en systèmes embarqués

Quelques chiffres et lois qui ont conduit à un développement technologique dont les systèmes
embarqués ont du bénéficié:

Loi empirique de Joy


•La puissance CPU des processeurs embarqués en MIPS double tous les 2 ans
Loi de Moore(Gordon Moore, dirigeant Intel) (1965):
La densité d’intégration (nombre de transistors par unité de surface sur une puce) double tous les 18
mois (60% par an )
-Prédiction empirique devenue très réaliste et même un objectif à tenir
Cas des Circuits
•Au niveau de la taille des puces, l’augmentation est moins prévisible, entre 10 et 25% par an
•L’effet combiné est une augmentation du nombre de transistors par circuit de 60 à 80% par an
Cas de Mémoires
•La densité croît d’un peu moins de 60% par an (se multiplie 4 en 3 ans)

Exo

Si on considère que l'activité du circuit est constante


Si la Fréquence augmente de 43% et la capacité totale CL et la tension d'alimentation sont réduites de
30% Alors l'énergie sera réduite de 65% car:
E = C*Vdd 2 = C'*0.7 * (Vdd'*0.7)2 = 0.35*C'*Vdd' 2 = 35% E'

La puissance sera réduite de 50% car


P = f*C*Vdd2 = 1.43*f * 0.35*C'*Vdd' 2 = 50% P'

M.OUSLIM Page 15
Systèmes Embarqués 2020 ELN ESE M2 USTO

Chapitre3: La mémoire
L’accès à la mémoire est aussi un facteur clef dans la définition de la puissance de calcul réel d’un
processeur. En effet, même si on dispose d’un processeur rapide pour exécuter des opérations, les
résultats se feront attendre si les données d’entrée ne sont pas fournies à une bonne cadence. Or, les
accès à la mémoire RAM (Random Access Memory) sont aujourd’hui bien plus lents que la cadence
des processeurs. C’est pourquoi l’augmentation du débit mémoire augmente directement la puissance
réelle de traitement du processeur.

Les différentes mémoires peuvent être classées


comme indiqué sur la figure.
La mémoire vive ou RAM (Random Access Memory)
pour mémoire à accès aléatoire, est une mémoire
volatile, cela signifie que si l'on coupe l'alimentation,
les données qu'elle contient sont perdues. Ses
caractéristiques sont les suivantes :
Elle sert à stocker les programmes exécutés par le
processeur elle est accessible en lecture et en écriture
Elle est organisée sous forme matricielle
Il existe deux grandes familles de mémoires vives :
Les RAM Statiques : SRAM
Les RAM Dynamiques : DRAM

Les mémoires Statiques SRAM:

La cellule de mémoire RAM statique utilise une bascule pour stocker le bit
Nécessite 6 transistors et Contient les données tant que l'alimentation est fournie
L’information est
mémorisée dans un latch
D'après la figure la
mémorisation de Di si Wr
• Yi • Xi est actif
La lecture de la cellule si
Xi est actif

mémoire dynamique (DRAM)


La cellule mémoire RAM dynamique utilise un transistor MOS et un condensateur
pour stocker le bit. Le condensateur détermine la valeur du bit : le bit vaut 1 si le
condensateur est chargé, il vaut 0 dans le cas contraire. Le transistor gère l'accès au
condensateur. L'Accès est plus lent que la SRAM.
On distingue plusieurs types de DRAM on cite que:
 Mémoire asynchrone : pour ce type de mémoire, l'intervalle de temps entre
deux accès mémoire consécutif n'est pas régulier. Le processeur ne sait
donc pas quand l'information qu'il attend est disponible et doit attendre
(wait-state) que la mémoire lui transmette les données.
 Mémoire synchrone : la cadence de sortie des informations est régulière, on évite ainsi les
états d'attente (wait state) du processeur.

Comparaison
Pour la DRAM, la mémorisation d’une charge sur une capacité, un transistor par bit donne une grande
densité d’intégration le temps d’accès est relativement long: de l'ordre de 50-100 ns, utilisée comme
mémoire principale.

M.OUSLIM Page 1
Systèmes Embarqués 2020 ELN ESE M2 USTO

Pour la mémoire statique (SRAM) la mémorisation par bouclage deux portes: cher mais le temps
d’accès court: de l'ordre de 5-10 ns; taille relativement petite
DRAM est Plus compact que la SRAM
SRAM facilement intégrée sur la même puce que le processeur, DRAM plus difficile
L'inconvénient des DRAM est que le condensateur possède une tendance naturelle à se décharger.
Pour que l'information reste cohérente, on va devoir réaliser un rafraîchissement de la mémoire toutes
les quelques millisecondes. Ce rafraîchissement consiste à lire et à réécrire la donnée.

La mémoire est une matrice composée de lignes L et de colonnes C,


à chaque intersection (ligne, colonne) on trouve des bascules
(SRAM), ou des condensateurs-transistors (DRAM).

La structure matricielle de la mémoire optimise la place occupée


dans le circuit intégré.
Une cellule est repérée par sa ligne et sa colonne D’où deux
décodeurs au lieu d'un seul si la mémoire était sous forme linéaire
Exemple de sélection de cellule: Adresse = "101 011" => cell. 43
(Voir figure)
Noter que:
• Plus la mémoire est rapide, plus elle consomme : Gestion mémoire
basse énergie: solutions
• éteindre ce qui ne sert pas--Mémoire en bancs
• Plus une mémoire est grande, plus son temps d’accès est long

Critères d’une mémoire


Les principaux critères d’une mémoire performante sont liés au type d’application où elle sera
intégrée. On note parmi ces critères :
-le temps d’accès : est le temps entre l’envoi à la mémoire d’une adresse et la réception en lecture de
la donnée correspondante ; temps nécessaire pour sauvegarder un état ou une donnée
– le temps de cycle: est le temps s’écoulant entre deux opérations sur la mémoire (toute combinaison
de lectures et écritures) ;
– le débit : est le nombre d’octets que la mémoire peut fournir par unité de temps. mesure ensuite le
flux de données transmises pendant le régime stable c'est-à-dire une fois la latence écoulée, Il est
fonction du temps de cycle de la mémoire, de la largeur des mots, exprimé en octets, fournis par la
mémoire et du type d’accès (accès à un mot individuel ou accès à une série de mots successifs).
Quand il est question de vitesse d'accès à la mémoire, il faut distinguer la latence et le débit. La
latence est le temps qui s'écoule entre la demande des données et l'arrivée de la première donnée.
-capacité
-Le coût de fabrication
-L’énergie consommée (qui dépend en particulier des tensions et des courants appliqués liée à leur
latence)
-La durée de rétention des données
-L’endurance, soit la capacité de maintenir dans le temps un état
-La miniaturisation,
Jusqu’à présent, chacune des technologies citées précédemment est confrontée à des défis
technologiques variés. La taille importante des SRAMs, et les courants de fuite des capacités des
DRAMs qui réduisent la rétention et qui exigent un rafraîchissement régulier de ces mémoires, restent
un vrai challenge. En outre, la limitation majeure de ces mémoires est la volatilité, ce qui augmente
potentiellement la consommation statique du système.
Parmi les mémoires non volatiles, la technologie flash, inventée dans les années 1980. En fait, pour
des cellules de petites dimensions, des limitations électriques se présentent telles que la réduction du
nombre d’électrons stockés pour sauvegarder l’information ainsi que la fiabilité. Cette dernière
diminue lorsque la taille de la cellule diminue. Enfin, la programmation de ces mémoires exige une
tension de l’ordre 3.5 à 10 V, ce qui augmente forcément la consommation totale ainsi que la surface,
car des blocs spécifiques sont rajoutées afin de générer ces tensions.

M.OUSLIM Page 2
Systèmes Embarqués 2020 ELN ESE M2 USTO

Vis- à -vis de ces limitations, changer le mode de stockage de l’information est devenu une
préoccupation prépondérante. Le but est d’intégrer ces mémoires alternatives ou « émergentes » dans
les systèmes embarqués pour des nœuds technologiques avancés.
Les mémoires émergentes non volatiles
Ces mémoires sont en développement depuis longtemps avec l’objectif de prendre le relais des
mémoires actuelles citées ci-dessus.
Le développement de ces mémoires met en jeu différents principes physiques (magnétorésistance,
ferroélectricité, ...) qui permettent de stocker l’information selon un état distinct de la résistance de la
cellule. Ces nouvelles technologies ne s’appuient plus sur le stockage des charges. Les données sont
plutôt représentées sous la forme d’un état de résistance selon le phénomène physique adopté.

Problème du memory wall


La latence mémoire n’est pas seulement constituée par le temps d’accès a la mémoire mais elle prend
en considération: la translation d’adresse, la traversée des broches du processeur et le bus externe et le
multiplexage si plusieurs bancs mémoires existent.
• Exemple dans le cas ou la Latence mémoire principale (ordre de grandeur) est de 100-200 ns
avec un processeur à 1 GHz, ce qui donne un retard de 100 à 200 cycles CPU.
En effet, les processeurs deviennent plus rapides plus rapidement que la mémoire (notez l'échelle
logarithmique dans la figure )
• Amélioration de la vitesse du processeur: 35% à 55%
• Amélioration de la latence de la mémoire: 7%
La mémoire devient le frein à l’augmentation des performances des processeurs: problème connu sous
le nom de memory wall: Mur mémoire).
Temps de cycle processeur < temps d'accès mémoire
Requête mémoire du processeur =processeur inactif
plusieurs cycles

Pour trouver une solution à ce problème et surpasser cet obstacle, la notion d' Hiérarchie de mémoire a
été introduite.

Hiérarchie de mémoire
Au sein de l’unité de calcul d’un système électronique, le choix technologique des mémoires est un
élément clef. Les caractéristiques et les performances des mémoires ont un impact capital sur le
fonctionnement intrinsèque du système. Aujourd’hui, la mémoire idéale, autrement dit la mémoire qui
combine à la fois une endurance infinie, une densité élevée, une consommation réduite, un coût très
faible avec une vitesse assez importante n’existe pas. C’est pourquoi les technologies actuelles
reposent sur un compromis entre ces différentes performances au regard de l’application visée. La

M.OUSLIM Page 3
Systèmes Embarqués 2020 ELN ESE M2 USTO

solution est donc de ne pas se limiter à une technologie de mémoire


mais d’adopter plutôt une hiérarchie de mémoire de façon bien
définie. Les programmes standard ont souvent des comportements
prédictibles soit temporellement, soit spatialement, de sorte que les
accès mémoires réalisés par le processeur pour les exécuter ne se
font pas au hasard.

Les registres sont les éléments de mémoire les plus rapides. Ils
sont situés au niveau du processeur et servent au stockage des opérandes et résultats
intermédiaires.
Le cache est une mémoire rapide de faible capacité destinée à accélérer l'accès à la mémoire
centrale en stockant les données les plus utilisées.
la mémoire centrale contient les programmes (code + données) et est plus lente que les deux
mémoires précédentes.
La mémoire d'appui est l'équivalent de la mémoire cache pour la mémoire de masse.
la mémoire de masse est un support de stockage généralement de grande capacité et sert au
stockage et à l'archivage des informations.

Hiérarchie des composants de la mémoire


• Composants supérieurs: Rapide ,Petit, Cher
• Composants inférieurs : Lent, grand, pas cher
• Connecté par des bus qui ont également des problèmes de latence et de bande passante
• Données les plus fréquemment consultées en M1
• Déplacer des données de haut en bas de la hiérarchie
• Optimiser le temps d'accès moyen
Le but: Donner à l’utilisateur l’illusion d’avoir la capacité de la mémoire la moins chère (Disque) et la
vitesse de la mémoire la plus rapide (cache interne)

Principe de la mémoire cache


Mémoire très rapide, mais de petite taille, placée entre le processeur et la mémoire principale . Le
processeur essaie d’accéder un mot d’abord dans la cache, avant de passer à la mémoire principale. En
cas d’échec (miss), le mot est gardé dans la cache pour un accès futur. En cas de succès (hit), la
mémoire principale n’est pas accédée. La fréquence des succès (hit rate) dépend de la taille de la cache
et de l’algorithme exécuté par le contrôleur de cache.
Généralement conçu avec SRAM, Généralement sur la même puce que le processeur espace limité,
tellement plus petit que la mémoire principale hors puce, accès plus rapide (1 cycle vs plusieurs cycles
pour la mémoire principale).
On distingue Plusieurs choix de conception selon le mappage de cache, stratégies de remplacement et
techniques d'écriture.

Localité des références mémoire


C'est une Propriété empirique des programmes dans le cas d'une application réelle, à quelques
exceptions près est c'est la raison pour laquelle que l'hiérarchie de mémoire à trouver son succès. :

Localité spatiale: probabilité d’accès à une adresse voisine: Plus susceptible de référencer des données
à proximité de données récemment référencées.
Proactif: mettez en cache de gros morceaux de données pour inclure les données à proximité.
• instructions : les programmes sont des séquences d'instructions, rompues uniquement par des if, for,
etc. : si la 1ère instruction d'une séquence est lue, les suivantes le seront à coup sûr rapidement
• données : les données sont souvent organisées en tableaux, souvent parcourus séquentiellement : si
un élément de tableau est accédé, les suivants le seront très probablement rapidement

M.OUSLIM Page 4
Systèmes Embarqués 2020 ELN ESE M2 USTO

le code d’un programme s’exécute toujours à l’intérieur de petites zones répétées de mémoire (des
blocs correspondant à des boucles ou/et des sous-programmes)
Si l'adresse A est référencée a T, alors forte probabilité de référencer A + a à T + t, avec a petit et t
petit.

Localité temporelle
Localité temporelle: probabilité d’accès aux mêmes adresses successivement: Les données récemment
référencées seront probablement à nouveau référencées prochainement
• Réactif: cache les données récemment utilisées dans une petite mémoire rapide
• instructions : les instructions du corps d'une boucle for, accédées lors de la 1ère itération, vont
probablement être ré-accédées rapidement car une boucle effectue généralement plus d'une itération.
• données : toutes les variables de boucle (i, somme, etc.) sont dans le même cas, pour les mêmes
raisons ; plus généralement toutes les variables locales de fonctions.
Les blocs s’exécutent en séquences très proches (il y a plus de chances d’accéder à une position de
mémoire utilisée il y a 10 cycles qu’à une autre utilisée il y a 10000 cycles)

Si l'adresse A est référencée


a T , alors forte probabilité
de référencer A à T + t , avec
t petit (réutilisation).

Exemple:
Si les accès à la mémoire demandent 3 wait states et la fréquence de succès est de 90%, le nombre
moyen de waits states est de 10% x 3 = 0.3 wait state / cycle de mémoire
la chute de la fréquence de succès à 80% fait doubler cette valeur
Si une instruction demande 2 cycles sans wait state et 5 cycles avec, et si la fréquence de succès est de
80%, l’exécution de 10 instructions demande:
(10 x 0.8 x 2) + (10 x (1 - 0.8) x 5) = 26 cycles dont 16 sont faits avec la cache.
C’est-à-dire: le processeur passe 40% du temps (10/26) à chercher 20% du code: pendant ce temps le
bus du système est occupé par les transferts entre le processeur et la mémoire
Données
for ( i = 0; i < N ; i ++) { y[i] : propriétés de localités temporelle et spatiale
for ( j = 0; j < N ; j ++) { a[i][j] : Propriété de localité spatiale
y [ i ] = y[i] + a[i][j] + x[j];}} x[j] : propriétés de localités temporelle et spatiale

instructions Boucle : réutilisation des instructions) Localité temporelle


Instructions consécutives en mémoire) Localité spatiale

Accès: lecture ou écriture dans le cache


• Hit: données souhaitées trouvées dans le cache (succès)
• Miss: données souhaitées introuvables dans le cache (défaut: doivent provenir d'un autre composant)
• Remplir: action de mise en cache des données
•(taux-miss)%: c'est le nombre de default divisé par le nombre d'accès
• taccès : temps de vérifier le cache. En cas de hit, on termine.
• tmiss : temps de lire les données dans le cache
Mesure de performance: temps d'accès moyen= tavg = t access + (%miss* tmiss )
Ou Latenceavg =latence hit + (%miss*latence miss )

Exemple
•Pipeline simple avec un CPI de base de 1, on suppose deux caches données et instruction.
• Mélange d'instructions: 30% load / store (données)
• instructions: %miss= 2%, tmiss = 10 cycles
• données: %miss= 10%, tmiss = 10 cycles

M.OUSLIM Page 5
Systèmes Embarqués 2020 ELN ESE M2 USTO

Déterminez le nouvel CPI.


• CPII = %missI*tmiss = 0.02*10 cycles = 0.2 cycle
• CPID= %load/store*%missD*tmissD = 0.3 * 0.1*10 cycles = 0.3 cycle
• CPInew= CPI + CPII+ CPID = 1+0.2+0.3 = 1.5

• La métrique ultime du cache est tavg. La capacité du cache et les circuits déterminent
approximativement taccès, alors que les structures de mémoire de niveau inférieur déterminent tmiss
Le moyen le plus simple de réduire le taux du miss c'est d'augmenter la capacité
Cependant taccès augmente, car la Latence est proportionnelle à sqrt (capacité). Donc Compte tenu de
la capacité, manipuler le taux de miss en changeant d'organisation du cache.
(On définit ici la notion de Working set: c'est l'ensemble de travail: l'ensemble des instructions et
données d'un programme utilisé activement)

Organisation et fonctionnement

Structure générale d'un cache


Contrairement à la mémoire
principale, accessible par
adresse,
le cache est généralement
accessible par le contenu;
par conséquent, c'est
souvent appelée mémoire
adressable par contenu
CAM content adressable
memory).
La correspondance entre les
blocs de cache et MM les
blocs sont créés par un algorithme de mappage de cache

Le mapping
La mémoire cache ne pouvant contenir toute la mémoire principale,il faut définir une méthode
indiquant à quelle adresse de la mémoire cache doit être écrite une ligne de la mémoire principale.
Cette méthode s'appelle le mappage ou correspondance (mapping).

Compromis entre la complexité du cache et sa capacité à retenir un maximum de lignes. Il existe trois
types de mapping :
1-Cache à correspondance directe (direct-mapped)
Une ligne n’a qu’un seul emplacement possible dans le cache, conflits entre différentes lignes
2-Cache complètement associatif (fully-associative)
Une ligne peut être à n’importe quel emplacement dans le cache l’espace du cache est mieux
utilisé
3-Associatif par ensembles de N lignes (N-way set-associative)
Intermédiaire entre direct-mapped et fully-associative

M.OUSLIM Page 6
Systèmes Embarqués 2020 ELN ESE M2 USTO

Problème: Ou placer une ligne de la mémoire principale dans le cache ?


Exemple : lignes de n octets, adresses de 5 + log2(n) bits, cache de 8 lignes: de 0 a 7
Numéro de bloc en mémoire: de 0 a 31

Bloc 12 se met dans la ligne4 ou n'importe quelle ligne de 0 a 7 ou a la ligne 0 ou 1 selon le


mapping

Cache à correspondance directe (Direct Mapping )


Cache le plus simple, On va affecter à chaque ligne de la mémoire cache une zone de mémoire RAM
fixe et de taille fixe. Il y a une correspondance directe entre mémoire RAM et mémoire cache
La mémoire cache est divisée en blocs ou des lignes. Actuellement, les lignes peuvent aller de 16
jusqu'à 64 octets ou plus. Les données sont copiées vers et depuis le cache, une ligne à la fois
Si le cache contient N blocs, le bloc X deuit de l'adresse physique de lamemoire principale (MM)
correspond à Bloc de cache Y = X modulo N.
Exemple: si nous avons 10 blocs de cache, le bloc 7 du cache peut contenir les blocs 7, 17, 27, 37,. . .
de MM.
Lorsqu’une adresse est présentée au cache, le contrôleur de cache décompose cette adresse en trois
parties:offset, index,et tag (ou etiquette)
Offset: les bits inferieurs (log2 (taille de ligne) ) d'une adresse spécifient un octet particulier dans une
ligne. Avec une taille de ligne de 4 octets, le offset est le log2 (4) = 2 bits
L'index: les bits suivants donne le nombre de blocs dans le cache,
Le TAG correspond aux restes des bits de poids forts (utilisé comme clé dans une table de hachage
Qui Mappe cette une clé à une valeur)
Exemple : cache a 8 blocks:0,1,2…,7
Une mémoire a 32 ligne de 0 a 31
Les lignes seront placées dans les blocks de cache selon la
relation Block=ligne modulo 8
Donc: le block 0 du cache contiendra; les lignes:0,8,16 ,24
Cas de la figure block 1 contient 1,9,17,25
Block 5 contient les lignes 5,13,21,29

L'index permet l'accès à un emplacement du cache. Cet


emplacement contient 1TAG + 1DATA
Le TAG obtenu est comparé avec le TAG de l'adresse
Les 2 TAG sont
les mêmes => Succès (hit)
différents => Echec (miss)
exemple
Adresse 32 bits avec un bloc de 4 octets, 232 octets d'espace d'adressage
• le cachee st de 4Koctets, organisés en blocs de 1K x4octets
• Chaque bloc peut contenir un mot de 4 octets
• Implémentation du cache physique
• Entrée d'adresse : index=10 bits =log2 (taille cache en bloc)
•2 bits les moins significatifs [1: 0] Localisent l'octet dans le mot
• Les 10 bits suivants [11: 2] sont les bits d'index
• Marquer chaque mot de cache avec les bits d’adresse restants
[31:12] donnent la taille du TAG
• Créer un tableau de tags séparé et parallèle une SRAM de 1K par 21 bits ( tag 20 bits + 1 bit valide)
Algorithme de recherche
• Lire l'étiquette (tag) indiquée par des bits d'index
• Si le tag correspond à un jeu de bits valide:

M.OUSLIM Page 7
Systèmes Embarqués 2020 ELN ESE M2 USTO

alors: Hit
sinon: Miss, attendez
On utilise l’index de l’adresse pour accéder la ligne du cache On compare les 2 tags correspondant
respectivement a l’adresse et celle lue dans le cache si oui on
continue avec le bit de validité pour Marquer un hit ou un miss
Exemple
address physique:000C14B8
• Index = addr [11:2] =
(addr >> 2) &x7FF = x12E
• Tag = addr [31:12] =
(addr >> 12) =x000C1

Puisqu'un bloc de données de la


RAM ne peut être dans une ligne
spécifique du cache, il doit
remplacez toujours le bloc qui était
déjà là. Il n'y a pas besoin d'un algorithme de remplacement.

Tendance : Le Mapping Direct est adapté aux mémoires caches


plus grandes

Mémoire cache complètement associative (associative cache mapping)


Chaque ligne de la mémoire de niveau supérieur RAM peut être écrite à n'importe quelle adresse de la
mémoire cache. Cette méthode requiert beaucoup de logique car elle donne accès à de nombreuses
possibilités. Ceci explique pourquoi l'associativité complète n'est utilisée que dans les mémoires
cache de petite taille.
Adresse mémoire divisée en deux champs le tag (les bits les plus significatifs) et l’offset (il n y a pas
d’indice). Le tag de l’adresse physique issue, sera comparé simultanément avec tous les tags stockés
en cache (accès par contenu et non pas par adresse) . Noter, le nombre de comparateurs utilisés.

(Set-associative mapping) Cache associative par ensembles (Cache mixte )


La mémoire principale est divisée en ensembles et la cache est complètement associative pour chaque
ensemble (a l'intérieur de l'ensemble)
¨ L’adresse physique est divisée en 3 champs: Index, Offset et Tag: ici l'index précise l'ensemble
(set) l'offset est le même qu'auparavant :
* les bits de poids faible contiennent l’adresse de l’ensemble: set (adresse de la cache): toutes les
adresses physiques qui partagent ces bits seront stockées à la même position dans la cache (mappage
direct: l'endroit est spécifique : pas n'importe quelle adresse physique)
* les bits de poids fort forment l'étiquette (tag), à comparer avec la valeur stockée dans le répertoire
pour l’ensemble sélectionné.

M.OUSLIM Page 8
Systèmes Embarqués 2020 ELN ESE M2 USTO

Au moment du démarrage, le contenu de la cache est quelconque. Chaque ligne de la cache contient
un bit de validité (valid bit): il est mis à 1 si le contenu de la ligne est valable.
Cette cache utilise les techniques des deux caches précédents
Le cache est divisé en blocs gérés comme des caches directs
En cas d’échec, la ligne de mémoire correspondante doit être chargée dans une des lignes référencées
Similaire au mapping direct mais chaque adresse du cache contient les données et les tags de deux
adresses mémoires ou plus, les tags de l’ensemble sont comparés simultanément comme dans le
mapping associative
Cache associatif à N voies :définie N appelé ensemble: 2-way, 4-way, 8-way sont commun

• n = taille du cache / taille de la ligne = nombre de lignes


• b = log2 (taille de ligne) = bit pour offset
• w = nombre de lignes / ensemble
• s = n / w = nombre d'ensembles
Exemple:
Soit une adresse a 32 bits
• 32 KB de cache avec des lignes a 64 octets
• nombbre de lignes= 32 Koctets / 64 = 512
• 4 way set associative , Nb d’ensemble = 512 / 4 = 128
• les bits de l'ensemble=Set bits = log2(128) = 7

Une cache associative par


ensembles à N voies: un mot de
la mémoire principale peut être
stocké en N positions différentes
de la cache. En général:
* doubler l’associativité implique
une diminution de 20% de la
fréquence d’échec
* doubler la taille de la cache
implique une diminution de 69%
de la fréquence d’échec

Algorithme de recherche
Etant donné une adresse physique
• Utilisez les bits d’index pour trouver l'ensemble (set)
• Lire les données / tags dans toutes les positions en parallèle
• Toute correspondance et bit valide aboutit a un succès (Hit)
Comparaison
Mémoire cache complètement associative
Avantages : Flexibilité, Plusieurs lignes dans le cache
avec le même numéro.
Inconvénients : Coût hardware du comparateur,
Algorithme de remplacement, Taille réduite
Mapping Direct
Avantages :Pas d'algorithme de remplacement, Hardware
simple et peu coûteux, Rapide
Inconvénients: taux de succès faible, Performances
décroissent si même Index
Cache associatif à N voies : Compromis entre les deux mappages précédents

M.OUSLIM Page 9
Systèmes Embarqués 2020 ELN ESE M2 USTO

Choix de l’élément à remplacer lors d’un conflit (miss):


Les caches à ensembles associatifs présentent un nouveau choix de conception
En cas de manque de cache, quel bloc de l'ensemble remplacer (expulser)? On parle de Techniques de
remplacement:
• FIFO (first-in first-out) ordre d’ancienneté : facile à implémenter en matériel (un index par cache
mais correspond le moins bien à la localité temporelle

• LRU (least recently used) S'adapte à la localité temporelle, LRU = le moins susceptible d'être
utilisé à l'avenir
D’un point de vue algorithmique, on peut maintenir l’ordre LRU par une liste chaînée chaque ligne
accédée est placée en tête de liste la ligne en queue de liste est la moins récemment utilisée plusieurs
listes chaînées les lignes qui ont le même index cache sont dans la même liste si cache FA, une seule
liste globale
Ajouter un champ LRU à chaque ensemble • Les données LRU sont codées • success (hit)? mettre à
jour MRU • Bits LRU mis à jour à chaque accès: chaque ligne de la cache (même ensemble mais voies
différentes) possède des bits pour indiquer l’ordre d’utilisation des voies.
Exemple: Pour une cache à 4 voies il y a 24 possibilités (4!): il faudrait 5 bits de codage au minimum.
Pour une cache à 16 voies il faudrait 45 bits...
Assez facile à implémenter en matériel (un compteur d'âge par mot), correspond assez bien à la
localité temporelle
En pratique, on utilise souvent LRU, qui est un bon compromis.
• Aléatoire: favorise une allocation uniforme ,remplacer une ligne au hasard parmi les N
• LFU (Least Frequently Used) : on remplace le mot le moins fréquemment utilisé dans le cache
répond idéalement à la propriété de localité temporelle mais coûteuse à implémenter en matériel (add.
+ diviseur par mot)

Un bloc entier de données est copié après un échec (miss) car le


principe de localité nous dit qu'une fois élément est accédé, il est
probable qu'une donnée à proximité de cet élément sera bientôt
nécessaire.
Lorsqu’une ligne doit être remplacée ou lors d’une écriture en
mémoire le cache doit assurer la cohérence avec la mémoire
principale.
Exemple LRU: Supposons que les lignes A,B,C,D,E aient le même
index cache et que initialement le cache contient DBCA
La table résume les différents accès et les blocs à remplacer dans le cas du LRU

Ecriture dans le cache


Les politiques de remplacement du cache doivent prendre en compte les blocs dirty: (Blocs sales =
blocs qui ont été mis à jour alors qu'ils étaient dans le cache).
Les blocs sales doivent être réécrits dans la mémoire centrale (MM). Une politique d'écriture
détermine comment et quand cela est fait. Il existe deux types de stratégies d'écriture:
write through: Le cache et le MM sont mis à jour simultanément à chaque écriture: plus facile à
mettre en œuvre, le processeur doit attendre une écriture plus lente dans la mémoire principale,
potentiel d'écriture inutile.
-Inconvénient: MM doit être mis à jour à chaque écriture de cache, ce qui ralentit le temps d'accès aux
mises à jour. Ce ralentissement est généralement négligeable, car la majorité des accès sont des
lectures et non des écritures.
- Avantage: le MM reste toujours cohérent avec le cache
write back :réécriture dans MM est mis à jour uniquement lorsque le bloc est sélectionné pour le
remplacement (en consultant un bit spécifique appelé bit sale (dirty) supplémentaire pour chaque jeu
de blocs) lors de l'écriture d'un bloc de cache, ceci réduit le nombre d'écritures lentes de la mémoire
principale, mais le trafic MM est minimisé

M.OUSLIM Page 10
Systèmes Embarqués 2020 ELN ESE M2 USTO

- Inconvénient: une valeur de données dans MM n'est pas toujours la même avec cette valeur dans le
cache, cela peut causer des problèmes dans les systèmes avec des utilisateurs simultanés, en particulier
lorsque chaque utilisateur a son propre cache.

Cache « write-back »
Cache « write-through »

Stratégies de chargement du cache


Pratiquement, il existe trois stratégies de chargement de donnée ou bloc de données de la mémoire
vers le cache
1. A la demande : On charge lorsqu'il y a eu un échec (miss),le bloc non présent dans le cache
La plus simple , Pas de matériel supplémentaire
2.Pré chargement
On charge avant la référence au bloc.
Exemple : charge le bloc (i+1) quand le bloc (i) est référencé pour la 1ère fois.
50% d'échec en moins sur un cache assez grand. Sur un cache petit, on peut écraser un autre bloc qui
pourrait être encore référencé.
3.Chargement sélectif
Seuls certains blocs seront chargés en cache, Certains blocs restent toujours en mémoire, Accès direct
à la mémoire reste possible.
Exemple : des données communes en Multiprocesseurs sont plus facilement gérées en mémoire
commune.

Paramètres du cache les plus importants en termes de performances:


Taille totale du cache: nombre total d'octets de données que le cache peut contenir, les tag ( étiquette),
bits valides et autres éléments de ménage non inclus dans le total
Degré d'associativité:
Taille du bloc de données: les caches plus grandes fournissent des taux de miss plus faible mais au
prix d'un temps d'accès plus élevé
Exemple
cache a 2 Koctet: taux miss = 15%, prix du hit = 2 cycles, cout miss = 20 cycles
coût moyen d'accès à la mémoire = (0.85 * 2) + (0.15 * 20) = 4.7 cycles
cache 4 Koctet: taux miss = 6.5%, prix du hit = 3 cycles, le coût du miss ne changera pas en moyenne.
coût d'accès à la mémoire = (0.935 * 3) + (0.065 * 20) = 4.105 cycles (amélioration)

M.OUSLIM Page 11
Systèmes Embarqués 2020 ELN ESE M2 USTO

cache 8 Kbyte: taux miss = 5.565%, prix du hit = 4 cycles, le coût du miss ne changera pas en
moyenne.
coût d'accès à la mémoire = (0.94435 * 4) + (0.05565 * 20) = 4.8904 cycles (pire)
Coût des accès en consommation
La consommation énergétique dépend du niveau de la mémoire auquel on accède dans l'hiérarchie:
Exemple: une hiérarchie à 4 niveaux: la puissance moyenne dissipée sur puce est:
niveau1: 150mW, niveau2: 300mW, niveau3: 700mW, quatrième niveau, mémoire externe DRAM de
grande capacité12,71W par transaction.

Les caches internes utilisant de la RAM statique consomment en moyenne approximativement une
énergie comprise entre 25% et 45% de la puissance totale de la puce. Récemment, l'intérêt s'est
concentré sur la mémoire dite bloc-notes (scratch pad) pour réduire la puissance et améliorer les
performances.
La plus grande partie du budget en transistors des processeurs est utilisée dans les caches
Exemple: le PA-8500 d’HP (1999)130 millions de transistors, 1.5 Mo de cache on-chip

Taille de la ligne
Une ligne (ou bloc) de cache est la plus
petite portion du cache avec une étiquette
unique.
Les raisons pour avoir des lignes à plus
d’un mot sont: avoir une RAM de
répertoire plus petite que la RAM de cache
et avoir des transferts multi-mots (burst)
plus rapides.
Pour réduire le temps de mise à jour lors
d’un échec, le bus entre la mémoire et la
cache est généralement plus large que celui
entre la cache et le processeur

De nombreux systèmes modernes utilisent


des caches séparés pour les données et les instructions. C'est ce qu'on appelle une cache de Harvard.
La plupart des programmes ont une localité d'instruction plus élevée que la localité de données

Les performances du cache peuvent également être améliorées en ajoutant un petit cache associatif
pour contenir les blocs qui ont été expulsés récemment. C'est ce qu'on appelle un cache victime.

0ptimiser un programme pour la mémoire cache


La façon dont est conçu un programme joue énormément sur le nombre de cache miss, et donc sur les
performances.
Un programmeur peut parfaitement tenir compte du cache lorsqu'il programme, et ce aussi bien au
niveau :
 de son algorithme : il existe des algorithmes cache oblivious , qui tiennent compte de l'existence
de la mémoire cache au niveau purement algorithmique dans les calculs de complexité ;
 du choix des structures de donné es : un tableau est une structure de données respectant le
principe de localité spatiale, tandis qu'une liste chaînée ou un arbre n'en sont pas (bien que l'on
puisse les implémenter de façon à limiter ce problème) ;
 du code source : par exemple, le sens de parcours d'un tableau multidimensionnel peut faire une
grosse différence ;
 ou de l'assembleur : il existe des instructions qui vont directement lire ou écrire dans la mémoire
sans passer par le cache, ainsi que des instructions qui permettent de précharger une donnée dans
le cache (instructions de prefetching).

M.OUSLIM Page 12
Systèmes Embarqués 2020 ELN ESE M2 USTO

Règles générales pour une meilleure utilisation du cache du processeur


Alors, comment écrire le code qui utilise le mieux le cache du processeur? Malheureusement, il n'y a
pas de formule magique. Mais il y a quelques règles de base:
• Évitez d'utiliser des algorithmes et des structures de données qui présentent des modèles d'accès
mémoire irréguliers; utilisez plutôt des structures de données linéaires.
• Utilisez des types de données plus petits et organisez les données de sorte qu'il n'y ait pas de trous
d'alignement.
• Tenez compte des modèles d'accès et tirez parti des structures de données linéaires.
• Améliorez la localité spatiale, qui utilise chaque ligne de cache au maximum une fois qu'elle a été
mappée à un cache.
Exemple:
Le compilateur peut mettre en page le code pour la localité temporelle et
spatiale
• Si (a) {code1;} else {code2;} code3;
• Mais le cas code2 ne se produit jamais (par exemple condition d'erreur)

Optimisations des Mémoires Cache : Optimisations a la compilation


Objectif : augmenter la localité spatiale et temporelle des codes suivant les cas, peut être fait à la main,
par le compilateur, ou les deux. Exemples de techniques :
Regroupement de tableaux
Permutation de boucles
Fusion de boucles
Blocking

Regroupement de tableaux
/* Code original : deux tableaux disjoints en memoire */ /* Code modifié : un tableau de structures */
int pos_x [ SIZE ]; // pos_x [ i ] ( pos [ i ]. x ) et pos_y [ i ] ( pos [ i ]. y
int pos_y [ SIZE ]; ) sont contigus en mémoire
typedef struct _pos_s {
Réduction des conflits entre pos x et pos y (surtout si SIZE int x ;
est un multiple de la taille du cache) int y ;
Augmentation de la localité spatiale } pos_s ;
pos_s pos [ SIZE ];
Permutation de boucles
Changer l'ordre des
boucles afin d'accéder aux int tab [5000][100]; int tab [5000][100];
données dans l'ordre dans /* Code original */ /* Code modifie */
lequel elles sont stockées for ( k = 0; k < 100; k ++) { for ( k = 0; k < 100; k ++) {
en mémoire for ( j = 0; j < 100; j ++) { for ( i = 0; i < 5000; i ++) {
for ( i = 0; i < 5000; i ++) { for ( j = 0; j < 100; j ++) {
Accès séquentiel vs. accès tab [ i ][ j ] = 2 * tab [ i ][ j ];}}} tab [ i ][ j ] = 2 * tab [ i ][ j ];}}}
avec un pas de 100
Augmentation de la localité spatiale

Fusion de boucles
Combiner des boucles indépendantes (avec même compteur et des variables identiques)
Potentiellement 2 miss
par accès à a et c contre /* Code original */ /* Code modifie */
1 miss par accès for ( int i = 0; i < N ; i ++) { for ( i = 0; i < N ; i ++) {
Augmentation de la for ( int j = 0; j < N ; j ++) { for ( j = 0; j < N ; j ++) {
localité temporelle a [ i ][ j ] = 1 / b [ i ][ j ] * c [ i ][ j ];}} a [ i ][ j ] = 1 / b [ i ][ j ] * c [ i ][ j ];
for ( int i = 0; i < N ; i ++) { d [ i ][ j ] = a [ i ][ j ] + c [ i ][ j ];}}
for ( int j = 0; j < N ; j ++) {
M.OUSLIM d [ i ][ j ] = a [ i ][ j ] + c [ i ][ j ];}} Page 13
Systèmes Embarqués 2020 ELN ESE M2 USTO

Multiplication de matrices
Calcul de C = A * B for ( int i = 0; i < N ; i ++) {
for ( int j = 0; j < N ; j ++) {
C [ i ][ j ] = 0;
for ( int k = 0; k < N ; k ++) {
C [ i ][ j ] = C [ i ][ j ] + A [ i ][ k ] * B [ k ][ j ];} } }
Réutilisation sur j Réutilisation sur i

Si le cache ne peut pas contenir une ligne de A entièrement, il y aura un miss sur A[i][k] à chaque fois
que l'on passe de C(i, j) a C(i, j + 1)
Si le cache ne peut pas contenir B entièrement, il y aura un miss sur B[k][j] à chaque accès (encore
pire )

Blocage de boucle: localité temporelle


• Code médiocre
for (k=0; k<NUM_ITERATIONS; k++)
for (i=0; i<NUM_ELEMS; i++)
X[i] = f(X[i]);

• Meilleur code • Couper le tableau en morceaux CACHE_SIZE


• Exécutez toutes les phases sur un morceau, passez au morceau suivant
for (i=0; i<NUM_ELEMS; i+=CACHE_SIZE)
for (k=0; k<NUM_ITERATIONS; k++)
for (j=0; j<CACHE_SIZE; j++)
X[i+j] = f(X[i+j]);

Conclusion
Les mémoires caches ont évolué pour passer de la carte
mère vers le die du processeur.
On distingue en fonction de leur taille et de leur localité :
 la mémoire cache de premier niveau (L1) dont la
taille est de deux fois 8 Ko (Pentium) ou deux fois
16 Ko (Pentium Pro). On distingue
 le cache de données L1D
 du cache d'instructions L1I
 la mémoire cache de second niveau (L2) dont la
taille varie de 256 à 512 Ko.
 la mémoire cache de troisième niveau
(L3) parfois qualifié de LLC (Last Level Cache)
dont la taille varie de 6 à 24 Mo.

Technologie actuelle pour l'électronique embarquée


Les processeurs embarqués ont vraiment besoin de mémoire de programme non volatile, car dans la
plupart des cas, il n'y a pas de place pour un disque dur ou un lecteur optique. Dans la plupart des cas,
une mémoire en lecture seule (ROM) préprogrammée suffit. Une caractéristique des processeurs
embarqués est qu'ils n'exécutent (habituellement) qu'une seule application, contrairement aux
machines à usage général telles que les PC. Le problème est que le développement du micrologiciel
nécessite souvent de nombreux cycles de programmation-débogage-modification-reprogrammation, et
cela peut revenir très cher si la puce de mémoire est jetée à chaque fois qu'un bogue est trouvé

M.OUSLIM Page 14
Systèmes Embarqués 2020 ELN ESE M2 USTO

Les mémoires Flash (SSD : Solid State Device) utilisent un transistor MOS possédant une grille
flottante. Ces mémoires sont extrêmement denses, mais très lentes avec un temps t’accès > 50 ns et
une endurance limitée. Ces mémoires sont non-volatiles, permettant de conserver l’information même
en l’absence de l’alimentation. Le contenu est programmable électriquement mot par mot et effaçable
électriquement par bloc. Deux types: NOR Flash et NAND Flash
Les mémoires Flash présentent un bon compromis: une densité beaucoup plus grande que les
EEPROMs, à un coût nettement inférieur (bien que pas aussi bas que les EPROMs), tout en étant
effaçables électriquement. Le seul désavantage des mémoires Flash est que l'effacement n'est possible
que dans sa totalité ou par secteurs, mais pas byte à byte, une autre alternative est l'utilisation de la
MRAM.
La MRAM (Magnetic RAM) est une technologie en cours de développement utilisant la charge
magnétique de l'électron. Les performances possibles sont assez éloquentes, avec un débit de l'ordre du
gigabit par seconde et des temps d'accès comparable a ceux de la DRAM (10 ns) et surtout une non-
volatilité des données
Les performances du cache dépendent du flux de référence de mémoire dynamique créant une
imprévisibilité. À mesure que la hiérarchie de la mémoire s'approfondit, la variance des temps d'accès
augmente également. Pour ces raisons, les caches ne sont pas répandus dans les systèmes embarqués
en temps réel où la prévisibilité est primordiale

Au contraire, les concepteurs utilisent une mémoire de bloc-notes, c'est-à-dire une mémoire sur puce
contrôlée par logiciel située dans une région d'adresse séparée, pour un temps d'exécution prévisible.
Bien que le déplacement des données entre la mémoire du bloc-notes et la mémoire standard nécessite
des copies explicites, une fois que les données sont dans la mémoire du bloc-notes, les performances
sont complètement prévisible.
Le fait d'avoir à la fois une mémoire cache et une mémoire de bloc-notes (scratch pad) dans un
processeur intégré offre à la fois une prévisibilité et des performances élevées pour un large éventail
d'applications. Les données accessibles tout au long de l'exécution de l'application ou avec une
localisation temporelle élevée doivent résider dans la mémoire du bloc-notes. Structures de données
plus grandes que le
La taille de la mémoire du bloc-notes et qui ont une localité temporelle ou spatiale est mieux attribuée
aux caches.

Exercice
cache 2-way SA de 4 Ko, lignes de 16 octets, adresses 32 bits
Noter le stockage des tags en plus des données.
Les tags stockés occupent 128x2x21bits

Exercice
On considère une architecture 64 bits (adresses sur 64 bits).
Soit un cache direct-mapped pouvant contenir 64 Ko de données, la taille de ligne étant de 32 octets.
• Combien de lignes contient le cache ?
• Quelle est la taille d’une étiquette en nombre de bits ?

M.OUSLIM Page 15
Systèmes Embarqués 2020 ELN ESE M2 USTO

• Si on compte la table des étiquettes, quelle est la quantité de mémoire réellement occupée par
le cache ?
• Montrer que, lorsque deux adresses sont séparées par une distance inférieure à 64 Ko, elles ne
sont pas en conflit dans le cache. La réciproque est-elle vraie ?

Exercice
Nous voulons comparer les éléments suivants:
Un cache de données de 16 Ko et un cache d'instructions de 16 Ko par rapport à un
Cache unifié de 32 Ko
Supposons qu'un hit prend 1 cycle d'horloge à traiter
• Pénalité du miss = 50 cycles d'horloge
• Dans le cache unifié, l'appel de chargement ou de stockage prend 1 cycle d'horloge supplémentaire =
un aléas structurel
• 75% des accès sont des références d'instructions

• Quelle est le temps d'accès moyen à la mémoire dans chaque cas?

Réponse:
On a besoin de déterminer le taux du miss pour les caches fractionnés:
(75% x 0.64%) + (25% x 6.47%) = 2.10%
Cela se compare au taux du miss du cache unifié de 1,99%

Nous utiliserons la formule de temps d'accès mémoire moyen mais divisez-le en références
d'instructions et de données

Temps moyen d'accès à la mémoire - cache partagé


75% x (1 + 0.64% x 50) + 25% x (1 + 6.47% x 50)
(75% x 1.32) + (25% x 4.235) = 2.05 cycles

Temps moyen d'accès à la mémoire - cache unifié =


75% x (1 + 1.99% x 50) + 25% x (1 + 1 + 1.99% x 50)
(75% x 1.995) + (25% x 2.995) = 2.24 cycles

Malgré un taux de miss plus élevé, le temps d'accès est plus rapide pour le cache partagé

M.OUSLIM Page 16
Systèmes Embarqués 2020 ELN ESE M2 USTO

Chapitre4 Communications dans les Systèmes embarqués

Introduction
Les systèmes embarqués sont souvent des sous-ensembles d’un système plus important. Il est alors essentiel de
les faire communiquer entre eux pour obtenir le fonctionnement global souhaité.
Selon le nombre de systèmes embarqués (ou noeuds) communicants sur une même application, plusieurs choix
technologiques de communication peuvent exister :
– Liaison point àpoint, lorsque le nombre de noeuds est très faible
– Utilisation d’un réseau de terrain.
Dans tous les cas, il est nécessaire de mettre en place :
– un bus de communication : moyen matériel pour transmettre des informations numériques ;
– un protocole de communication
Il existe plusieurs protocoles de communication pour faire discuter plusieurs systèmes entre eux. On peut citer
par exemple :
– I2C : "Inter Integrated Circuit", développépar Philips ;
– CAN : "Controller Area Network", développé par Bosch, devenu un standard dans l’automobile ;
– SPI : "Serial Peripheral Interface", développépar Motorola ; etc.

Le bus CAN
La sociétéBOSCH développe dès le début des années 1980 une solution de multiplexage des informations
circulant àbord de la voiture. Le bus CAN apparaî
tra et sera normalisédans les années qui suivent (dès 1983).

C'est un contrôleur LAN (Local Area Network). Le bus CAN peut transférer les données série une par une. La
figure montre une architecture d'une automobile. Tous les participants des sous-systèmes de bus CAN sont
accessibles via l'unitéde commande sur le Interface de bus CAN pour l'envoi et la réception de données. Le
bus CAN est un système de transmission multicanal. Quand une unitétombe en panne, cela n'affecte pas les
autres.
Les réseaux multiplexés, aujourd'hui présents dans de multiples domaines industriels, on distingue des
protocoles de type "event triggered" comme le CAN, le CAN FD et le LIN et les protocoles de type "time
triggered" comme le TT CAN, le FlexRay.

Réduction de câblage

41% de longueur de câble entre les Peugeot


306 et 307
Le bus CAN supporte des systèmes
embarqués temps réel avec un haut niveau de
fiabilité. Ses domaines d’application
s’étendent des réseaux moyens débits aux
réseaux de multiplexages faibles coûts. Il est
avant tout àclasser dans la catégorie
des réseaux de terrain utilisédans
l'industrie.

Caractéristiques physiques du bus CAN


Support de transmission
La transmission des données est effectuée sur une paire filaire différentielle. La ligne est donc constituée de
deux fils : CAN_L (CAN LOW) et CAN_H (CAN HIGH).
Le CAN est un bus de terrain, soumis àdes parasites importants. L’immunité électromagnétique est assurée
car les deux lignes du bus sont toutes les deux affectées de la même manière par un signal perturbateur. Le bus

M.OUSLIM Page 1
Systèmes Embarqués 2020 ELN ESE M2 USTO

série est une paire différentielle (une paire torsadée ou non) connectée sur des résistances 120ohm ou des
capacités de 30 pF résistant aux perturbations.
Les états logiques nommés dominant et récessif (0 ou 1) sont codés par différence de potentiel entre les deux
fils. Pour les niveaux physiques (de tensions) sur le bus, il est important de distinguer les deux types de
transmission possibles :Basse vitesse et haute vitesse:
ISO11519-2 vitesse basse CAN <125Kbps ISO11898 vitesse haute CAN 125Kbps - 1Mbps
Le tableau ci-dessous résume les principales différences entre les deux types de bus notamment sur les débits
supportés.

Le CAN étant un protocole réseau, il s’intègre dans


la norme ISO/OSI (ISO: International Standards
Organization, ,OSI: Open Systems Interconnection)
La sous-couche MAC représente le noyau du
protocole CAN. Elle a pour fonction de
présenter les messages reçus en provenance de
lasous-couche LLC et d’accepter les messages
devant être transmis vers la sous-couche LLC. Elle
est responsable de :
- la mise en trame du message.
- l’arbitrage.
- l’acquittement.
Le materiel :
Pour réaliser un periphérique CAN nous avons
donc besoin :d'un transcriver pour adapter les
signaux sur le bus et d'un controleur CAN pour
gérer les regles d’emmision et de la réception d’un microcontroleur . Cet émetteur-récepteur typique
fonctionne àpartir d'une alimentation de 5 V et délivre un signal différentiel de 0 à3 V pour la transmission
réelle des données. Il fournit également une protection contre les tensions transitoires sur les données.

Les pic 18FXX80 intergre en materiel le contoleur CAN , cependant il n'integre pas de transceiver, il faut donc
avoir un transceiver externe (MCP2551 de Microhip) .

M.OUSLIM Page 2
Systèmes Embarqués 2020 ELN ESE M2 USTO

Dans le datasheet du pic nous avons tous


les registre du CAN dans la partie ECAN.
Cependant Microhip nous facilite les
choses grace àsa librairie CAN ecrit pour
les pic18FXX. On a ànotre dispositon
des fonctions en C, qui permettent de
gérées de manière très facile le Bus CAN.

La couche physique du protocole CAN utilise


le codage NRZ pour représenter les bits.

La succession de bits transitant sur le bus est


codéavec la méthode du NRZ (Non Return To
Zero).
Pendant la durée totale du bit, le niveau de
tension de la ligne est maintenu, c’est à dire que pendant toute la durée durant laquelle un bit est généré, sa
valeur reste constante qu’elle soit dominante ou récessive.

Ceci crée un problème d'absence de transition durant la durée du bit (désirable pour une bonne synchronisation
du fait que la transmission est asynchrone)

Pb de synchronisation (asynchrone) codage NRZ? Pb de transition


Bit Stuffing(bit de bourrage).
Cette méthode consiste, dès que l’on a émis 5 bits de même polarité sur le bus, à insérer un bit de polarité
contraire pour casser des chaînes trop importantes de bits identiques succesifs. On obtient ainsi dans le
message un plus grand nombre de transitions ce qui permet de faciliter la synchronisation en réception par les
nœuds. Cette technique est uniquement active sur les champs de la trame de SOF, d’arbitrage, de contrôle, de
CRC (délimiteur exclu). Pour un fonctionnement correct de tout le réseau, cette technique doit être
implémentée aussi bien à la réception qu’à l’émission.

Le bit stuffing introduit un overhead : le cas le plus defavorable se presente quand on a une alternance de
5bits au debut ensuite 4 bits complémentaire et ainsi de suite donc le bit de stuffing qu'on ajoute sera le
5ième bit àchaque fois. Dans ce caspour un tel message de n bits on a un accroissement max de

Arbitrage
Comme son nom l'indique, il faut un arbitre pour décider qui aura la priorité parmi les nœuds qui accèdent en
même temps au bus. Le bus CAN fonctionne avec la technique d'accès au médium CSMA / BA (Bitwise
Arbitration) pour eviter les collisions et les conflits entre les differents nœuds attchés au bus.

M.OUSLIM Page 3
Systèmes Embarqués 2020 ELN ESE M2 USTO

Principe de fonctionnement
Dans un protocole CAN, tout les périphériques sont au même niveau (pas de relation mâitre-esclave) seul les
messages sont classé par ordre de priorités. Chaque message est precédé d’un identifiant
Emetteur: Pour émettre il réalise les étapes suivantes:
• Ecoute du bus ( carrier sense)
• Si le bus est libre, début d'émission (SOF: debut de trame)
•Continu d'écouter, et compare bit àbit la valeur du bus avec ce qu'il émet dans l'identifiant du message +
RTR.
• Si différent (ce qu'il émet avec ce qu'il ya dans le bus): il a perdu l'arbitrage car moins prioritaire=>
réémission plus tard.
• Si c'est la même chose : il continue àémettre, et attend l'acquittement positif dans le message.
• s'il n y a pas d'acquittement il retransmit sinon on procède par la Gestion des erreurs

Le ET câblésource d'arbitrage
Exemple:
Soient 4 nœuds qui veulent émettre en
même temps sachant que l'état
dominant (0) est prioritaire les nœuds
4,1,et 3 deviennent récepteur et le
nœud 2 c'est le nœud qui gagne le bus
et continue a transmettre ses données
sans qu'il y est destruction du message
on parle d'arbitrage non destructif.

On dit que le bus fournit un ET logique câbléregroupant les sorties des


nœuds aux points d'attache sur le bus (figure: cas de trois nœuds
attachés au bus CAN : R réception et T transmission)

Exemple2
L'arbitrage se produit que pour le
champ du message appelé
identificateur. Dans ce cas d'exemple
l'état du bus c'est celui du nœud 2

M.OUSLIM Page 4
Systèmes Embarqués 2020 ELN ESE M2 USTO

Différents types de trames


Les données sont envoyées dans un message et structurées en trames contenant l'information utile et
l'information de contrôle. On distingue quatre types de trames:

Trame de données (data frame)


La trame de données de type standard CAN 2.0A, la plus utilisée se décompose en sept parties principales que
l'on appelle des champs :
 début de trame (1 bit) start off frame (SOF)
 champ d'arbitrage (12 bits) arbitration field
 champ de commande (6 bits) control field
 champ de données (0 à64 bits) data field
 champ de CRC (16 bits) CRC sequence
 champ d'acquittement (2 bits) ACKnowledgementfield
 fin de trame (7 bits) end of frame (EOF)
puis, une 8emme zone dite d'espace interframe (intertrame) qui fait partie intégrante de la trame.

Les champs de la trame de données


SOF (Start Of Frame: debut de trame) : Commence toujours par 1 bit dominant (bit à0), la ligne étant
précédemment au repos. Ce bit ne sert qu’à synchroniser les horloges internes des récepteurs sur celle de
l’émetteur : bit de start

Champ composé de 12 bits : Les 11 premiers indiquent l’identité du contenu du message, et servent
également à l’arbitrage (gestion des priorités) Le dernier bit (RTR : Remote transmission Request bit) permet
de coder la nature du message : trame de données (exemple : régime moteur) ou trame de requête (demande de
Température eau) bit à0 (dominant) dans trame de données ou bit à1 (récessif) : trame de requête

Champ de commande constitué de 6 bits : Le premier bit IDE


(Identifier Extention bit) est un bit dominant permettant de spécifier qu’il
s'agit d’une trame standard. Le deuxième bit est réservé est définit
comme dominant. Les 4 derniers permettent de coder le nombre d’octets
du champ de données. Les contrôleurs CAN doivent être aptes àtraiter
toutes combinaisons de tous les bits du champ de commande.

Champ de données
Le champ de données est l'endroit où se trouvent les données utiles
transmises. Il peut être composéde 0 octet minimum à8 octets maximum
transmis avec le MSB (Most Significant Bit) en tête.

Le champ de contrôle : CRC (Cyclic Redundancy) est composéde 16 bits, il permet de vérifier les données
transmises.Ce champ de vérification des données est composéde 2 parties : Code de vérification des données
transmises sur 15 bits : le récepteur compare son code à celui de l’émetteur ; si c'est different, il n'envoie pas
d’acquittement.

M.OUSLIM Page 5
Systèmes Embarqués 2020 ELN ESE M2 USTO

Délimiteur de vérification de données : marque la fin de vérification, 1 bit toujours à l’état 1 (récessif) Ce
contrôle est effectuépar tous les contrôleurs du can sur le réseau.Ce champ est étudiépour une trame de 127
bits max. Le nombre maximals d’erreurs détectées peut être de 5.
Les bits utilisés dans le calcul du CRC sont ceux du SOF, du champ d'arbitration, du champ de Control et du
champ Data Field.
Le CRC est un polynôme calculé de la même manière par l’émetteur et par le récepteur de la trame : le
message est vu par l’algorithme comme un polynôme qui est divisé par X15+X14+X10+X8+X7+X4+X3+1 et le
reste de cette division est la séquence CRC transmise avec le message.

champ d’acquittement est composéde 2 bits : Un bit d’acquittement à l’état 0 (dominant) si le calcul du code
de vérification des données est correct ; si une erreur : bit laissé à l’état haut (récessif)
Un bit délimiteur d’acquittement, toujours à l’état haut (1) (récessif)
Tous les noeuds du réseau doivent acquitter, même si la trame ne les concerne pas (perte de temps possible)
Pendant cette période, l’émetteur laisse la trame libre…ce sont les récepteurs qui complètent la trame.

Champ de fin de trame : suite de 7 bits à l’état 1. Le codage par bit stuffing est désactivéàpartir de cet
instant
Remarque :
• 3 bits à l’état 1 séparent obligatoirement 2 trames consécutives
• 108 bits (sans les stuffing) sont nécessaires pour 64 bits de données

Trame de demande de données


Il se peut aussi qu'un nœud ait besoin d'information d'un certain type dont il ne dispose pas pour assurer la
mission qui lui est dévolue. Dans ce cas, une station nécessitant des données peut initialiser la demande d'une
transmission des données considérées par un autre nœud en envoyant une remote frame.
Cette trame ne se compose que de six parties Une trame de requête est constituée de la même manière qu’une
trame de données sauf que le champ de données est vide.
Bit RTR à 1 (d’où une priorité inférieure àla trame de données)
Ne contient pas de données
La réponse n’est pas « écrite » dans la trame
Permet une coopération de type Client-Serveur
Induit une surcharge sur le réseau
Aucune garantie sur le délai de la réponse.

Trame de surcharge (overload frame)


Cette trame indique qu'une station est surchargée pendant un certain laps de temps.
Il y a deux sortes de conditions de surcharge qui mènent toutes deux àla transmission d'un overload flag :
 les conditions internes d'un récepteur qui nécessitent un certain temps (un retard) pour accepter la
prochaine data frame ou remote frame.
 la détection d'un bit dominant durant la phase intermission. Dans ce cas le démarrage de l'overload
frame a lieu juste après la détection du bit dominant.
Afin de ne pas bloquer le bus indéfiniment seules deux overload frame consécutives peuvent être générées
pour retarder les data ou remote frame suivantes.
Cette trame ne comprend que deux champs :
 Le champ des flags de surcharge,
 Le délimiteur de champ.

La trame d’erreur
Pour différentes raisons, comme l’existence de fortes perturbations ou de pertes importantes lors de la
transmission, le protocole CAN dispose d’un système de gestion des erreurs locales.
Le principe du bit stuffing vu précédemment permet de localiser une erreur et un nœud qui détecte ce type
d’erreur transmettra aux autres nœuds un message dit «Error Flag » contenant six bits de même polarité.
Après avoir transmis le message Error Flag, le nœud essaiera à nouveau de transmettre le message, et si aucun
message de prioritésupérieure ne prend la main sur le réseau ce nouveau message est transmis 23 bits au plus
après.

M.OUSLIM Page 6
Systèmes Embarqués 2020 ELN ESE M2 USTO

Les bits formant l’Error Flag sont dominants et écrasent donc les données contenues dans la Data
Frame. Ils provoquent la retransmission de cette dernière. Dans le cas d’erreurs successives, il y aura
superposition d’Error Flags.
Les 8 bits de l’Error Délimiter donnent l’autorisation aux nœuds du réseau de reprendre leurs
communications. Des recherches ont montré que le taux d’erreurs non détectées par le protocole CAN est très
faible : 1 erreur non détectée pour 1000 années de fonctionnement

Période inter-trame
Elle sépare les trames de données ou de requêtes entre elles. Il s’agit d’une suite de plusieurs bits récessifs.
Elle est divisée en deux parties:
- le champ d’intermission
- le bus idle
Le champ d’intermission est une suite de 3 bits récessifs consécutifs. Durant la période d’intermission,
l’émission de trame n’est pas autorisée. Les gestionnaires de protocole ne sont autorisés à signaler que les
conditions de surcharge.
Le champ de Bus Idle est celui du bus quand il est au repos. Le niveau de repos est le niveau récessif et aucune
trame ne circule sur le bus (succession de 5 bit récessifs).
Le champ de suspension de transmission est émis par un noeud lorsque celui-ci envoie une trame d’erreur
passive.

Les erreurs de transmission


Il n'existe pas de technique de correction automatique seulement détection (et retransmission).. Une station
qui détecte une erreur, la signale aux autres par une trame d’erreur (6 bits dominants). La trame corrompue
participera àun prochain arbitrage (mais ne gagne pas en priorité). Probabilité d’erreur résiduelle très faible
(de l’ordre de 10-12)
Les differents types d’erreurs qui peuvent se produire peuvent etre comme suit:
Bit-stuffing : 6 bits consécutifs même niveau
Erreur bit: dominant + récessif = récessif (émission d’un bit dominant et réception d’un bit récessif)
Erreur de CRC : CRC calculé différent du CRC trame
Erreur de Forme : mauvaise valeur pour un champ fixe
Erreur d'acquittement : pas d’acquittement (L' "ACK " est émis avec une valeur récessive).
Remarque: Lorsqu'une station reçoit une trame de façon correcte, elle met le champ d'ACK àune valeur
dominante. Ceci implique que l'acquittement signifie qu'au moins une station a reçu la trame, mais pas
forcément le destinataire des données applicatives. Donc l'acquittement n'est pas totalement fiable
Le protocole CAN implémente des mécanismes de détection d'erreurs, le nœud est en Écoute permanente
du bus et dans tous les cas, ces évènements débouchent sur la production d'une trame d'erreur.

Les compteurs d'erreurs


Une station défectueuse peut perturber le fonctionnement de tout le système (ex: envoi ininterrompu de trames
d’erreurs). Les stations «défectueuses»se déconnectent automatiquement (ou limitent leur prérogatives
comme le signalement d’erreurs) . Pour détecter ce probleme, Chaque noeud possède deux
compteurs d’erreurs de transmission sur chaque contrôleur sur les trames émises (TEC – transmit error counter)
et sur les trames reçues (REC – receive error counter).
Les 3 états d’une station selon la valeur de ces compteurs sont:
Erreur-active : fonctionnement normal
Erreur-passive : émission possible mais 8 bits après que le bus soit libre- plus de signalement d’erreurs
Bus-off : - la station se déconnecte du bus (ni émission ni réception)
Par défaut (à l’initialisation), le nœud est dans l’état « erreur Active ». Le bus peut émettre et recevoir sans
restriction. Pendant le fonctionnement, les compteurs sont incrémentés lors de la détection d’erreur (variable
suivant le type d’erreur).
Pour chaque transmission réussie, le compteur est décrémenté. Le nœud reste dans l’état « erreur active » tant
que la valeur du compteur reste inférieure à127
Si la valeur des compteurs dépasse 127, le noeud passe à l’état « erreur passive ».
Dans ce mode; le nœud peut émettre et recevoir, mais après une transmission, il doit suspendre la transmission
et attendre 8bits de plus qu’un nœud en mode erreur active pour pouvoir retransmettre. Si les compteurs

M.OUSLIM Page 7
Systèmes Embarqués 2020 ELN ESE M2 USTO

dépassent la valeur 255, le nœud passe dans le mode «Bus off ». L’activité du nœud est arrêtée, il ne participe
plus àla communication. Seul un RESET permet de repasser en mode erreur active (127 trames de onze bits
récessifs).

Lorsqu'un récepteur détecte une erreur, son REC est augmenté


de 1.
• Lorsqu'un transmetteur envoie une trame d'erreur, son TEC
est augmentéde 8.
• Après une transmission réussie, le TEC est diminué de1.
• Après une réception réussie, le REC est diminuéde 1.
On note que l'erreur est davantage pénalisée que la réussite. En
fonction de la valeur de ces compteurs, on pourra minimiser
l'influence d'un nœud, voire le déconnecter du réseau en
fonction de son niveau de perturbation. Ce sont les Règles de
confinement.

Effet des longueurs de câble


Le signal qui correspond àun bit émis par un nœud se propage sur les lignes électriques et optiques. La plus
longue durée de propagation est celle oùun bit doit parcourir le bus d’une extrémité à l’autre.

M.OUSLIM Page 8
Systèmes Embarqués 2020 ELN ESE M2 USTO

Donc, l’unité élémentaire d’information (le ‘bit’), n’occupe qu’une partie de la ligne et se déplace sur cette
ligne à une vitesse donnée (quel que soit son potentiel électrique représentatif d’un ‘0’ ou d’un ‘1’).

La synchronisation du bus
La transmission dans le bus CAN est asynchrone, on a besoin d'un mécanisme de synchronisation ,en plus, vue
la transmission série des bits, il y aura forcement une erreur de synchronisation qui s'accumule de bit en bit la
raison pour laquelle la taille des données est limitée àune longueur maximale de 64 bits.
La synchronisation telle que définie dans les spécifications du bus CAN garantit que les messages sont
correctement décodés. Malgré les erreurs de phase qui peuvent s'accumuler entre les nœuds. Ces erreurs de
phase peuvent se produire en raison de l’oscillateur dérive, délais de propagation entre nœuds répartis
spatialement sur le réseau ou erreurs de phase causées par le bruit des perturbations.
Il est demandé aux nœuds d'être synchronisés sur les fronts de bits afin que chaque nœud s'accorde sur la
valeur du bit actuellement transmis sur le bus. Pour ce faire, chaque nœud implémente un protocole de
synchronisation qui maintient le débit binaire du récepteur aligné sur le débit réel des bits transmis. Le
protocole de synchronisation utilise des bords de transition pour resynchroniser les nœuds. Par conséquent, les
longues séquences sans transitions de bits doivent être évitées pour éviter les dérives dans les horloges de bits
des nœuds.
La synchronisation se fait de 2 façons :
- par matériel: (sur le bit de start) Une
synchronisation matérielle se produit lors de la
transition récessive àdominante du bit de départ. Le temps de bit est redémarréàpartir de ce front

M.OUSLIM Page 9
Systèmes Embarqués 2020 ELN ESE M2 USTO

-Re- synchronisation se fait sur chaque front récessif et


dominant La resynchronisation se produit lorsqu'une
transition ne se produit pas dans le segment de
synchronisation dans un message

La notion de «Nominal Bit Time


On définit la plus petite base de temps reconnue sur un bus CAN comme étant le Time Quantum (TQ). Cette
base de temps est une fraction de l’horloge de l’oscillateur du bus. Un bit dure entre 8 et 25 TQ.
La durée du bit time de chaque circuit est construite à partir d’un nombre déterminé de périodes d’horloge
issue de l’horloge interne de chaque circuit CAN. On définit ainsi le TQ qui est une discrétisation plus petite
utilisée par le bus CAN • La longueur du TQ est programmée par la division de l’oscillateur interne du
composant d’interface.
• La longuer d’un bit (bit Time) et donc le débit (Bit Rate) du bus CAN est obtenue en programmant la
longueur du TQ et en programmant le nombre de TQ par Bit comme c'est indiquésur la figure.

La durée du bit est donc


fragmentée en 4 segments:
Synch: Le segment de
synchronisation, qui est toujours
long d'un quantum, est utilisé
pour la synchronisation des
horloges. Un front de bits
devrait avoir lieu ici lorsque les
données changent sur le bus.
Le segment de propagation est nécessaire pour compenser le retard dans les lignes de bus.
Les segments de phase peuvent être raccourcis (segment de phase 1) ou allongés (segment de phase 2) si
nécessaire pour maintenir les horloges synchronisées.
Les niveaux de bus sont échantillonnés àla frontière entre le segment de phase 1 et le segment de phase 2.La
plupart des contrôleurs CAN offrent également une option pour échantillonner trois fois pendant un bit. Dans
ce cas, l'échantillonnage se produit aux frontières des deux quanta qui précèdent le point d'échantillonnage, et
le résultat est soumis àun décodage majoritaire.
Afin d'ajuster l'horloge du bus sur puce, le contrôleur CAN peut raccourcir ou prolonger la longueur d'un bit
d'un nombre entier de TQ. La valeur maximale de ces ajustements de temps de bit est appelée la largeur de
saut de synchronisation, SJW (Synchronization Jump Width)
L'un des segments de phase est raccourci ou allongéavec une quantitéqui dépend de l'erreur de phase dans le
signal; la quantité maximale pouvant être utilisée est déterminée par le paramètre largeur de saut de
synchronisation. La plupart des contrôleurs CAN permettent au programmeur de définir la synchronisation
des bits àl'aide des paramètres suivants
• Une valeur de prescaler d'horloge
• Le nombre de quanta avant le point d’échantillonnage
• Le nombre de quanta après le point d'échantillonnage
• Le nombre de quanta dans la largeur du saut de synchronisation, SJW

M.OUSLIM Page 10
Systèmes Embarqués 2020 ELN ESE M2 USTO

Notions de masque et de filtre


Les trames transmises d'un nœud seront reçues par tous les autres nœuds sur le réseau, utilisant la diffusion du
message. Le filtrage des messages qui est fourni par le Contrôleur CAN (matériel), décide si la trame reçue est
pertinente àce noeud ou pas.
Pour qu'un message arrive dans le buffer de réception (possibilitéde déclencher une interruption), il faut qu’il
soit accepté. Grace au masque on peut choisir quels bits de l’identifiant doivent être comparé avec le filtre
pour que le message soit validéet arrive dans le buffer .
Voici un exemple :
ID du message : 101001111101 et soit le masque : 00000000111
ex n°1 de filtre: 110110000101 ex n°2 de filtre: 110110000111
Dans l'exemple n°1 on voit que les 3 premiers bits sont identiques, le
message est accepté
Dans l'exemple n°2 on voit que les 3 premiers bits sont différents, le
message est refusé. La table suivante montre la technique de
comparaison utilisée ainsi que l'action Correspondante.

Séquence de transmission des données sur le bus CAN:


1. On donne àl'émetteur l'ID, la taille de l'ID (IDE), le nombre d'octets de données (DLC) et les données dans
le cas échéant.
2. on met a 1 un bit pour indiquer àl'émetteur du contrôleur CAN d'envoyer cette trame.
3. Tout nœud (s), voyant le bus inactif pendant le temps minimum requis, peut commencer àenvoyer une
trame CAN.
4. Tous les autres nœuds commencent à le recevoir sauf ceux qui commencent également à transmettre un
message en même temps.
5. Si un autre nœud commence à émettre: le processus d'arbitrage démarre - le nœud avec la priorité la plus
élevée (valeur d'ID inférieure) continue et les nœuds de priorité inférieure cessent d'envoyer et se transforment
immédiatement en récepteurs et reçoivent le message de priorité.
Remarque: le nœud perdant «connaît» le début de l'autre message. L'arbitrage CAN est non destructif.
6. À ce stade, un seul nœud transmet un message et aucun autre ne démarre pendant ce temps, sinon une erreur
de bus se produit.
7. Lorsque le nœud émetteur a terminé l'envoi de son message, il attend un bit de temps pour que le champ
ACK de 1 bit soit tiré vers un 0 logique par tout autre nœud (normalement tous) pour indiquer que la trame a
étéreçue sans erreur.
8. Si cela se produit, le nœud émetteur suppose que le message a atteint son destinataire, envoie les bits de fin
de trame et passe en mode réception ou commence à envoyer son message suivant s'il en a un. Les nœuds de
réception transmettent le message reçu àleurs processeurs hôtes pour traitement, sauf si le filtrage
d'acceptation empêche cette action.
9. À ce moment, n'importe quel nœud peut commencer à envoyer n'importe quel message ou le bus passe à
l'état inactif si aucun ne le fait. Allez au 1.
10. Si # 7 ne se produit pas (bit ACK non mis à1) alors l'émetteur retransmet le message àl'heure la plus tôt
autorisée. Si le bit ACK n'est jamais défini, le nœud émetteur enverra son message initial pour toujours.

Séquence de réception des données du bus CAN:


1. Tous les nœuds à l'exception de ceux qui transmettent actuellement des trames et de ceux en mode bus-off
sont en mode écoute.
2. Une trame CAN est envoyée en utilisant la procédure décrite précédemment: Séquence de transmission des
données sur le bus CAN:
3. Cette trame envoyée est reçue par tous les nœuds d'écoute. S'il est considérécomme un message CAN
valide sans erreur, le bit ACK est activépar tous les écouteurs. Dans la terminologie CAN, cela passe àl'état
«dominant»par opposition àl'état récessif.

M.OUSLIM Page 11
Systèmes Embarqués 2020 ELN ESE M2 USTO

4. La trame est envoyée via le mécanisme de filtre d’acceptation du contrôleur s’il est activé. Si cette trame est
rejetée: elle est rejetée. S'il est accepté, il est envoyéàla mémoire FIFO du contrôleur. Si le FIFO est plein, la
trame la plus ancienne est perdue.
5. Le processeur hôte est alertédu fait qu'une trame valide est prête àêtre lue àpartir du FIFO. Cela se fait soit
par une interruption, soit par un bit défini dans un registre de contrôleur. Ce cadre doit être lu le plus tôt
possible.
6. Vous n'indiquez pas au récepteur la taille de l'ID ou le nombre d'octets de données àrecevoir. Lorsque le
récepteur obtient une trame valide, il déchiffre ces informations et vous fournit les registres IDE et DLC
appropriés.
7. Le processeur hôte décide quoi faire avec ce message comme déterminépar votre logiciel.

Exemple de Réalisation de mesures de bus CAN (On Board Diagnostic OBD)


Dans de nombreux véhicules, il existe un connecteur OBD (On Board Diagnostic) c’est une petite «entrée»
souvent placée sous le volant. Ce connecteur est utilisé pour lire les codes d'erreur électroniques lors de
l'entretien du véhicule. Assez souvent, le connecteur OBD est également connecté au bus CAN. Non
seulement les codes d'erreur peuvent être lus, mais également tous les signaux CAN. Lors de l'acquisition de
données via le bus CAN, un fichier DBC (* .dbc) est utilisépour décoder les signaux. Le fichier DBC contient:
• Liste de toutes les unités de commande électronique (ECU)
• Liste de tous les signaux d'entrée et de sortie diffusés entre les calculateurs
• Facteur d’échelle, décalage et valeurs par défaut pour chaque signal
Le fichier CANA DBC est spécifique à l'année modèle du véhicule et au groupe motopropulseur. C'est un
fichier ASCII qui peut être éditéavec des outils comme le Bloc-notes
L’OBD ou diagnostic automobile embarqué permet d’accéder à toutes sortes d’informations en interrogeant
les calculateurs électroniques de la voiture. La partie électronique d’un véhicule est composée de 15 à 20
boîtiers, des calculateurs. Ces derniers dialoguent entre eux et avec un gros calculateur central,
En branchant la prise diagnostic du véhicule à un boîtier OBD, on peut recueillir des informations des
calculateurs, transmises àun ordinateur (via un câble USB branchésur le boî tier) ou àun smartphone (en wifi
ou Bluetooth).

M.OUSLIM Page 12
Systèmes Embarqués 2020 ELN ESE M2 USTO

Chapitre5 Conception Des Systèmes Embarqués

Introduction
Dans les années 1980, on utilisait la conception de systèmes àbase de composants ou une architecture
matérielle est vue comme l’interconnexion sur une carte (PCB pour Printed Circuit Board) de
composants sur étagère. Ces composants sont vus comme des boîtes noires avec des datasheets, pour
en préciser les fonctionnalités, les interfaces et les contraintes d’utilisation. Une même carte regroupe
généralement un processeur, de la mémoire, des périphériques de taille modeste et des circuits
logiques. Ces derniers sont combinés soit pour construire des circuits plus complexes, soit sous forme
de “glu” pour adapter les interfaces entre composants. Dans les années 1990, les microcontrôleurs
intègrent dans un même boîtier un cœur de processeur, ses périphériques et de la mémoire. La capacité
croissante des ASICs (Application Specific Integrated Circuits) autorise l’implantation directement en
matériel de fonctions complexes tandis que les circuits logiques programmables (PLD) permettent de
regrouper la “glu” sur une même puce pour en réduire l’encombrement. A partir de 2000, un simple
ASIC ou FPGA (Field-Programmable Gate Array) peut contenir l’équivalent de plusieurs millions de
portes logiques, ce qui permet d’intégrer dans le même boîtier un ou plusieurs cœurs de processeurs,
des bus, de la mémoire et des périphériques.
Construire des systèmes de fonctionnalitéet qualitédéterminée et garantie, àcoût acceptable, est un
défi technologique et scientifique majeur, qui recouvre plusieurs aspects.

Problématique de conception:

Les systèmes embarqués d'aujourd'hui se caractérisent par une fonctionnalité en expansion rapide
associée à une réduction des délais de mise sur le marché. Les capacités matérielles (et les besoins
logiciels associés) augmentent plus rapidement que les concepteurs ne peuvent suivre. De telle sorte
qu'àce rythme on ne pourra plus exploiter les possibilités de la technologie qui permet des évolutions
rapides des produits

L'obstacle de la productivitéde
conception voir figure ci-dessous
qui résume l'écart entre
l'avancement technologique en
électronique et son exploitation
effective et réelle par une
conception qui aboutit àun
produit délivrable et
commercialisable.

On peut résumer les contraintes


de la conception aux points
suivants:

1-La contrainte du critère du time-to-market : Le délai moyen de mise sur le marchéest actuellement
estiméàenviron 8 mois ceci impose une conception rapide et efficace sinon le produit ne sera pas
exploitable.

2- la contrainte de la Fenêtre de marché(Market window ): Période pendant laquelle le produit aurait


les ventes les plus élevées: manquer la fenêtre du marchépeut être coûteux comme c'est indiquédans
la figure ci-dessous: on a besoin de temps pour le développement de nouveaux produits, le plus gros
profit est dans la fenêtre du marchésur des marchés hautement concurrentiels, il est essentiel de saisir

M. Ouslim Page 1
la fenêtre du marché: un court retard avec le produit sur le marchépeut avoir des conséquences
financières catastrophiques (même si la qualitédu produit est excellente).

Solutions: Court délai de commercialisation pour cela il faut procéder par de nouvelles méthodes de
conception : on a Besoin d'une conception soignée qui optimise différents paramètres de conception

Evolution des techniques de conception

Le processus de développement d’un système embarqué peut être résumé par deux grandes étapes :
• comprendre et décrire le besoin (le quoi);
• implanter la solution (le comment).
Avec l'objectif de réduction du temps de conception Afin de répondre àces exigences, les systèmes
doivent être hautement optimisés. Pour aboutir àcela il faut adopter les recommandations suivantes:
- Bonnes méthodologies de conception.
- Des outils de conception efficaces.
- Réutilisation de blocs préalablement conçus et vérifiés (hardware & software).
- De bons designers qui comprennent àla fois les logiciels et le matériel
-Les aspects matériels et logiciels doivent être pris en compte simultanément

Méthodologie de conception

Une méthodologie de conception, ou un processus de conception, est une séquence d'étapes


nécessaires pour construire un système fonctionnellement correct, une méthodologie peut avoir
d'autres objectifs tout aussi importants: le temps de mise sur le marché, le coût de conception et / ou la
qualité. Une méthodologie fournit un contexte pour comprendre les modèles, les méthodes et les outils
qui sont une partie indispensable du développement de systèmes embarqués modernes.
Les méthodologies de développement de systèmes embarqués sont souvent décrites par rapport àun
ensemble de niveaux d'abstraction reliant la spécification àl'implémentation. Ceux-ci sont classés dans
une pile en fonction de leur niveau d'abstraction avec la représentation la plus abstraite (la
spécification) en haut et la moins abstraite (l'implémentation) en bas. Le nombre et les types de
niveaux d'abstraction dans une pile dépendent de la méthodologie concrète.

La conception d'un système embarqué, peut être considérée comme une série de décisions de
conception faisant passer le système de l'idée à la mise en œuvre. Ces décisions sont capturées àl'aide
de modèles. Associé à un modèle est un "niveau d'abstraction" qui spécifie les concepts de
modélisation et la sémantique du modèle. La nature exacte de ces concepts et de la sémantique
associée dépend de ce que l'on considère comme l'implémentation. Par exemple, pour une conception
matérielle, on pourrait prendre les transistors comme concept de base et pour une conception logicielle,
le concept central pourrait être les instructions de certains jeux d'instructions de processeurs. Le
nombre de décisions de conception capturées par un tel modèle est astronomique, même pour les plus
petites conceptions d'intérêt pratique. Le manque de moyens efficaces de prendre ces décisions est la
cause de l'écart de productivité. Dans le domaine de la conception de systèmes embarqués, la

M. Ouslim Page 2
complexité a traditionnellement été abordée par une combinaison d'abstraction, de hiérarchie et de
domaines.
Modélisation
La modélisation est le processus qui consiste à acquérir une compréhension plus approfondie d'un
système par l'imitation. Les modèles imitent le système et reflètent les propriétés du système. Les
modèles spécifient ce que fait un système. Les Modèles sont des vues conceptuelles de la
fonctionnalitédu système.
L'analyse est le processus d'acquérir une compréhension plus profonde d'un système par dissection. Il
spécifie pourquoi un système fait ce qu'il fait (ou ne parvient pas à faire ce qu'un modèle dit qu'il
devrait faire).
Pour être utile, un modèle doit posséder certaines qualités: il doit être formel pour ne pas contenir
d'ambiguïté. Il devrait être complet, afin qu'il puisse décrire le système entier. En outre, il devrait être
compréhensible pour les concepteurs, tout en étant facile à modifier. Enfin, un modèle devrait être
suffisamment naturel pour aider, le concepteur à comprendre le système. Il n’est donc pas une fin en
soi.

Lors de la modélisation, On fait appel àl'Abstraction (c'est le niveau de détail contenu dans le modèle
du système), qui sert a éliminer des détails, et focaliser sur un point de vue du système. Pour
permettre àtravailler àdifférentes échelles de complexitéet de temps
Au début de ce processus, seule la fonctionnalité du système est connue. Le travail du concepteur
consiste àdécrire cette fonctionnalitédans un langage basésur les modèles les plus appropriés.
Il est important de noter qu'un modèle est un système formel composé d'objets et de règles de
composition et est utilisé pour décrire les caractéristiques d'un système. Généralement, nous
utiliserions un modèle particulier pour décomposer un système en éléments, puis nous générons une
spécification en décrivant ces éléments dans un langage particulier.

Exemple de modèles d'un controlleur d'un ascensse

a: description textuelle, b: code en C , c: FSM

Types de modèles
Suivant le type des détails précisés ou omis (l'abstraction), on distingue plusieurs types de
modélisation, appelées aussi modèles ou vues :
Les vues physiques :
Ces modèles spécifient les paramètres physiques d'un système, tels que ses dimensions, les matériaux
le constituant. Dans ce type de modèles on décrit les transistors, les masques (polysilicium, dopant N,
métal, ...), leur taille, leur épaisseur, ...
Les vues structurelles :

M. Ouslim Page 3
Dans ce cas on ne considère pas les caractéristiques physiques, on ne voit un système que comme un
assemblage de composants. On s'attache donc àdécrire les interconnexions entre les différents sous-
ensemble, qui peuvent eux-mêmes être composés de plusieurs sous-ensembles, etc... jusqu'au niveau le
plus petit, le transistor.
Les vues comportementales :
Dans ces modèles, un système est décrit en définissant comment ses sorties réagissent en fonction des
entrées et du temps. On s'intéresse ici àce qu'un circuit fait, et non àcomment il est conçu. On utilise
pour cela des descriptions textuelles d'algorithmes, des diagrammes d'état, des fonctions de transfert, ...
C'est souvent la vue la plus abstraite.

Finesse des modèles


Quatre cercles concentriques caractérisent les niveaux hiérarchiques du processus de conception, avec
une abstraction croissante du cercle intérieur au cercle extérieur. Chaque cercle caractérise un modèle.
Chacun de ces modèles peut être plus ou moins raffiné, selon la finesse des détails qu'on y présente.
Pour une vue physique, les différents niveaux d'abstraction seront :
1. cartes
2. composants électroniques
3. cellules standards
4. layout
2. Pour une vue structurelle, les différents niveaux seront :
1. processeurs, mémoires, bus, ...
2. registres, ALU, multiplexeurs, ...
3. portes logiques, bascules, ...
4. transistors
3. Pour une vue comportementale, les différents niveaux seront :
1. algorithmes, diagrammes de flot
2. transferts entre registres (RTL)
3. expressions logiques booléennes
4. fonctions de transfert des transistors

M. Ouslim Page 4
Le processus de conception traverse de manière itérative trois abstractions: comportement, structure et
géométrie et on note de plus en plus d'automatisation pour chacune d'elles.
On représente souvent ces trois types de modèles et leur degrés de finesse (abstraction) selon un
diagramme dit "en Y" : on parle d'une conception selon le diagramme en Y de GAJSKI
Dans ce cas, la conception peut être représentée àdifférents niveaux sous trois angles différents selon
le diagramme en Y donnéci-dessus.
Normalement, on démarre la conception du système avec une vue comportementale avec une
abstraction de haut niveau en termes de spécification système. On peut ensuite le décomposer en
niveaux d'abstractions inférieurs, tels que les algorithmes et les fonctions de bas niveau, équations
booléennes qui correspondent aux objectifs de conception.
La deuxième partie consiste àmapper cette vue comportementale du modèle application / utilisation
dans une architecture - en termes de processeurs, de mémoires, de co-processeurs et d’abstractions de
bas niveau supplémentaires (FSM, ALU, bascule, etc.) qui constitue le deuxième axe du domaine
structurel. . La troisième vue correspond àune implémentation physique en termes de systèmes, cartes,
puces, floor plan, masques, disposition, etc.
Exemple Pour une bascule D, les différentes représentations seraient, par exemple :comportementale
(Behaviour ) (quoi?)• Structurel (comment? = Composition of sub-behaviours)• Physique
Implémentation (Plan Production, Géométrie)

3 2 1
Dans l'Exemple ci-dessus le circuit est
1. décrit à un niveau assez abstrait (représentation comportementale et structurelle de niveau
élevé), Elle permet de simuler et donc d'analyser le comportement, mais ne décrit pas la
structure interne du composant modélisé.
2. puis synthétisépour obtenir une netlist de portes logiques (représentation structurelle àbase de
cellules standards et transistors), elle décrit la structure interne, c'est àdire la façon dont le
composant peut se décomposer en une interconnexion de composants plus simples
3. puis placé-routépour obtenir les masques du circuit (représentation physique très bas niveau).
elle décrit le dessin des masques de fabrication qui sont utilisés pour graver le silicium
En pratiques, ces différents modèles sont souvent mélangés. De plus, la frontière entre les différentes
descriptions sont souvent floues.
Synthèse
Le passage d'une vue àl'autre est appelée synthèse. Il en existe donc deux types :
Synthèse physique :
C'est le passage d'une vue structurelle àune vue physique. On part généralement d'une liste de
portes et de leurs interconnexions (netlist) pour aboutir àune description physique du circuit
en termes de masques. Cette étape est souvent manuelle, et appelée placement-routage.
Synthèse logique :
C'est le passage d'une vue comportementale à une vue structurelle. Elle est souvent
automatique, traitée par des logiciels spécialisés et complexes.
En pratique, le terme synthèse est utlisépour le passage d'une quelconque vue comportementale ou
d'une vue structurelle de niveau élevé(registres / ALU /mux et au dessus) àune vue structurelle en
portes logiques, c'est-à-dire d'une représentation relativement abstraite, telle qu'elle est utilisée par les
concepteurs, à une représentation bas niveau utilisable pour le placement-routage. C'est donc un
mélange de synthèse logique et éventuellement de raffinement d'une vue structurelle.

M. Ouslim Page 5
En résumé,
Une méthodologie de conception doit satisfaire les besoins suivants :
- La possibilitéde modéliser le système dans un niveau d'abstraction élevé;
- Un processus de synthèse qui permet de combler l'écart d'abstraction à fin d'assurer une
implémentation efficace.
Ces objectifs peuvent être définis comme le défi d'une méthodologie de conception réussie des
systèmes embarqués.
Le choix du langage utilisé pour une conception dépendra du domaine d'application, et de
l'environnement dans lequel la conception doit être effectuée.
Du point de vue application on distingue deux grandes classes de modeles:
1-Modèles orientés contrôle (Les réseaux de Petri, Les machines àétats finis: FSM), Modèles réactifs
synchrones, Graphe de tâches)
2-Modèles orientés traitement (Modèles à base de langages impératifs: C, Java, Processus
communicants concurrents / séquentiels, Modèles à base de graphes de flots(Graphe de flot de
données, Graphes de flots mixtes de données et de contrôles , Flots de données synchrones (SDF),
Modèles hybrides , Les StateCharts et les CFSM, Le modèle SDL, Modèles au niveau transactionnel
(SystemC, Verilog et SystemVerilog).
Malgré les nombreux modèles existants aucun n'a réussi à faire l'unanimité, et encore moins à
s'imposer comme standard. Jusqu'àprésent, aucun consensus ne semble se dégager sur un modèle de
spécification universel (idéal) qui soit utilisable pour toutes les classes d'applications. Pour le
moment, la sélection d'un modèle approprié est souvent guidée par les caractéristiques de
l'application àimplanter. Néanmoins, il est généralement admis qu'un modèle qui se voudrait
efficace pour modéliser les applications dans un processus de conception conjointe, doit présenter
un certain nombre de caractéristiques. Il doit, en particulier :
- Permettre de représenter aussi bien les flots de données que les flots de contrôle ;
- Préserver la cohérence des différentes parties du système à travers toutes les étapes du processus
(continuitédu modèle) ;
- Reposer sur un formalisme mathématique rigoureux, afin de permettre de recourir à la preuve
formelle comme mécanisme de validation/vérification ;
-Permettre de modéliser au maximum la concurrence (parallélisme) entre calculs ;
- Prendre en compte la communication et la synchronisation ;
- Permettre l'implantation facile en matériel ou en logiciel ;
-Représenter la hiérarchie des systèmes complexes afin d'augmenter la lisibilité lorsque les
systèmes modélisés sont de grande taille.

Caractéristiques logiciel contre matériel


.
Software Hardware
la flexibilité, Outils de conception
la vitesse, Hardware
reconfigurabilité, consommation d'énergie,
mise à jour facile, etc., Logic Synthesis
coût en gros volumes Place-and-route
fonctionnalité complexe, Parallèle
Coût,... Simulateursr
Synchrone Software
Séquentiel Portes logiques
Asynchrone Compilateurs
Wire-based communication Assembleurs
Programmes mémorisés topologie fixe
Memory-based communication Linkers
Basse puissance Debuggers
Hautement programmable Plus détaillé
Puissance élevée NRE élevé
Moins détaillé rapid
No NRE
lent

M. Ouslim Page 6
Comparaison du matériel et du logiciel
Aux deux extrêmes, on trouve d'un côté le processeur standard offrant la souplesse de la
programmation et de l'autre l'ASIC permettant des temps de traitement optimaux. Entre les deux,
apparaissent des solutions intermédiaires telles qu'un processeur « brut » (sans interface
d'entrées/sorties ou de mémoire associées) et un processeur dédié (DSP par exemple) offrant des
compromis souplesse-performance satisfaisants pour une large classe d'applications
ASIC et FPGA présentent une excellente densitéde calcul (le nombre d'opérations réalisables ramené
par unitéde surface). De ce point de vue la faiblesse des processeurs programmables est due au fait
qu'ils utilisent des mémoires de grandes capacités pour mémoriser le code logiciel. Ces mémoires
coutent cher en termes de surface de silicium souvent plus cher que le processeur lui-même. A
l'inverse pour les FPGA, ou la reconfigurabilitéest assurée par les bits de configuration des CLBs et
des interconnexions qui forment une seule instruction très large pour tout le circuit. L'utilisation d'une
seule instruction pour mémoriser le comportement du matériel fait que les FPGA représentent de
manière beaucoup plus dense l'état et la description d'un calcul donné. En plus les FPGA fonctionnent
a un granularité bit contrairement aux processeurs qui utilisent des mots de 16,32,…. Bits. Un
processeur devant traiter une information de 1 bit utilisera des largeurs de mot faisant chuter
l'efficacitéen termes de densitéde calcul
La meilleure utilisation du matériel dans les solutions câblées se traduit aussi au niveau de la
consommation électrique. Ce paramètre difficile àestimer pour un circuit complet est cependant très
fortement liéàla surface de silicium. Les FPGA et les ASIC plus dense en terme de surface et dont le
taux d'utilisation des ressources est beaucoup plus élèvé que pour les processeurs ont donc des
rendements performance/consommation bien meilleurs.
Les systèmes embarqués ont une forte demande de flexibilité. Les composants (matériels) doivent être
remplaçables en raison, par exemple, d'une interruption de produits ou par souci d'indépendance du
fournisseur. L'ajout de nouvelles fonctionnalités devrait être possible de manière rapide et économique.
Les normes sont souvent évolutives et régulièrement soumises àdes changements, soit pour apporter
des améliorations par rapport à la version précédente soit pour corriger certaines erreurs. Ces
évolutions sont généralement assez légères et ne remettent pas en cause l'ensemble du système. Dans
le cas d'un système programmable l'évolution consiste donc en une seule mise à jour du logiciel
embarqué. Dans le cas d'un système câblé, le comportement de l'architecture est figéet ne peut être
modifié. La prise en compte d'un changement de norme implique donc le changement de tout le
système et la re-conception d'un circuit implémentant le nouveau standard.

Il existe plusieurs choix possible offrant divers compromis performances/coûts


Conception traditionnelle:
les points clés de la conception classique
-Système immédiatement partitionnéen composants matériels et logiciels (voir figure)
- Matériel et logiciel développés séparément
- Les compromis matériel / logiciel sont limités
- L'impact de HW et SW l'un sur l'autre ne peut pas être évaluéfacilement
–Intégration tardive du système
–Des conceptions de mauvaise qualité
–Modifications coûteuses

 Dans la méthodologie traditionnelle de conception, les conceptions des parties logicielles et


matérielles sont développées de manière indépendante et ce dès les premières étapes. Ces
étapes demeurent indépendantes et ont peu d'interaction.

M. Ouslim Page 7
 Cette approche restreint les possibilités d'exploration de différentes solutions oùcertaines
fonctionnalités pourraient migrer du logiciel vers le matériel ou vice-versa.

Ce type de conception peut être résumédans ce qui suit:

1. Commencez par des spécifications de la


fonctionnalitéet un ensemble de contraintes
2. Générez un modèle plus formel de la
fonctionnalité, basée sur un concept de
modélisation
3. Simulez le modèle afin de vérifier la
fonctionnalité. Si nécessaire faire des
ajustements.
4. Choisissez une architecture (μprocesseur,
bus, etc.) tels que les limites de coût sont
respectées et les contraintes de temps et de
puissance sont remplies.
5. Construisez un prototype et implémentez le
système.
6. Vérifiez le système: si les contraintes de
puissance ne sont pas satisfaites !!!
Revenez à4, choisissez une nouvelle
architecture et démarrez une nouvelle
implémentation.

Conception actuelle d'un système embarqué


Les chercheurs se sont focalisés sur les nouvelles méthodes et environnements de conception afin de
faciliter la conception des systèmes embarqués récents et maîtriser leur complexité. En effet, dés les
années 90, les chercheurs se sont concentrés sur l’innovation et la mise en œuvre d’une nouvelle
méthodologie de conception : "co-design" Toutefois, Jusqu’à la fin des années 90 la conception des
systèmes dédiés n'est implémentée que sur cartes (circuits imprimés). Aujourd'hui, le développement
technologique des composants submicroniques avec un taux d’intégration supérieur à un million de
transistors a ouvert la porte à l’implémentation de ces systèmes sur un seul Chip. Cette nouvelle
génération de systèmes embarqués (SoC : "System on Chip") permet de maîtriser des problèmes
encore plus complexes du fait qu’avec un seul chip on peut atteindre des performances plus élevées
que celles pouvant être réalisées avec une carte. Une phase clé lors de la conception des SoC est
l’intégration des blocs IPs ("Intellectual Property") ce qui reste une opération difficile et coûteuse en
temps de conception.
Les modules de PropriétéIntellectuelle
Les IPs sont des blocs fonctionnels complexes pouvant être réutilisés dans plusieurs conceptions.
En général, un module IP est une représentation d’un composant qui peut être intégrée dans un
système supérieur. Un IP fini n’est pas modifiable. Toute modification a pour conséquence de créer
une nouvelle version, un nouvel IP. La réutilisation des modules permet aux concepteurs de structurer
un modèle de système àhaut-niveau à partir de leur IPs et d’autres développés par ailleurs.
On distingue deux types de blocs IPs :
·Hard IP : sont des blocs IPs déjàphysiquement implanté, dépendant de la technologie utilisée. Cette
famille de blocs IPs est très optimisée.
·Soft IP : sont des blocs décrit en langage de haut niveau (VHDL, Verilog), sont souvent des blocs
paramétrable et synthétisable. Généralement, l’emploi de ces blocs IPs dans un projet implique

M. Ouslim Page 8
l’utilisation d’un environnement de développement adapté(co-design, co-vérification,…) tel que
Xilinx EDK, Mentor-Altera, etc

Réutilisation
La réutilisation de composants est devenu le maître mot de la conception pour réduire le temps de
conception matériel Il devient de moins en moins possible de concevoir un SoC entièrement. Des
parties déjàconçues doivent être réutilisées. La réutilisation de composants est utilisée pour éviter de
la redondance dans la conception.
Au fur et à mesure que la complexité des conceptions de systèmes embarqués augmentait avec le
temps, la conception de chaque composant matériel du système à partir de zéro est rapidement
devenue beaucoup trop peu pratique et coûteuse pour la plupart des concepteurs. Par conséquent, l'idée
d'utiliser des cœurs de propriété intellectuelle (IP) préconçus et pré-testés dans les conceptions est
devenue une alternative intéressante. Les processeurs soft-core sont des microprocesseurs dont
l'architecture et le comportement sont entièrement décrits à l'aide d'un sous-ensemble synthétisable
d'un langage de description matérielle (HDL). Ils peuvent être synthétisés pour toute technologie ASIC
ou FPGA, par conséquent, ils offrent aux concepteurs une grande flexibilité.
Modules àréutiliser
– Modules matériels préconçus - soit des cœurs souples (par exemple, source, netlists) ou des cœurs
durs (transistor ou autre disposition)
- Gamme de fonctionnalités allant des multiplicateurs simples aux mémoires, en passant par la logique
d'interfaçage et les processeurs
- Logiciels préconçus également (par exemple, pilotes, OS)
Il faut noter que ces modules suivent généralement certaines normes d'interfaçage définies.
Conception conjointe (codesign):
Définition: (Gajski) définie comme une méthodologie pour concevoir le matériel et logiciel d’une
façon concurrente et réduire par conséquent le temps de conception et le TTM.
Développement simultané avec interaction forte et permanente entre les deux parties (exploiter la
synergie entre hard/soft en supprimant la frontière rigide entre les deux tout en prenant en
considération l’interface (communication entre les deux partenaires soft/hard).
La Co-conception signifie atteindre des objectifs au niveau du système en exploitant la synergie de
matériel et de logiciels grâce àleur conception simultanée.
Dans ce contexte on parle de:
Allocation :sélection de l’architecture (composants de celle-ci) après exploration des différentes
alternatives (analyse des possibilités; design space exploration)
Partitionnement réel: répartition des éléments de la description fonctionnelle sur l’architecture
Ordonnancement : détermination de l’ordre d’exécution

Sachant que lors de la conception on peut avoir de très nombreuses possibilités d'implémentation
qu'on appelle l'espace d'architectures, cette recherche du meilleur compromis s'appelle l'exploration
d'un espace architectural.
Un cycle de conception peut être réaliséen utilisant diverses «méthodologies de conception». Chacune
d'entre elles définit un modèle spécifique pour capturer le comportement souhaité, plusieurs étapes de
transformation vers la mise en œuvre finale pouvant être effectuées automatiquement ou avec une
interaction utilisateur, ainsi qu'un modèle spécifique pour exprimer la mise en œuvre finale. Il existe
aujourd'hui plusieurs méthodologies de conception qui prétendent automatiser ou faciliter l'exécution
de diverses tâches du processus de conception. Chacune d'entre elles suit une approche différente en
fournissant différents langages de spécification de modèle pour exprimer le comportement souhaité,
différentes méthodes d'estimation des caractéristiques du système cible (sous différentes contraintes de
conception) et différentes étapes de transformation (manuelle ou automatique) pouvant conduire àune
ensemble d'implémentations cibles potentielles. Les spécifications comportementales et structurelles
sont définies àl'aide de modèles et exprimées àl'aide de langages de spécification.
La conception commence avec une description à un haut niveau d’abstraction pour s’affranchir de
nombreux détails de réalisation. À ce niveau d’abstraction, on s’intéresse à la fonctionnalité,
indépendamment de l’implémentation finale, ce qui correspond à la conception système. On recherche
des algorithmes et des représentations de données les plus adéquates. Généralement, 1a spécification

M. Ouslim Page 9
de haut niveau est réalisée à 1 ‘aide d ‘un langage de haut niveau comme C ou C++, qui permettent
aussi une validation des fonctionnalités rapide grâce à leur vitesse d’exécution.
L’étape suivante consiste à trouver une architecture efficace. C’est l’exploration d’architectures qui
détermine la réalisation logicielle ou matérielle de tous les composants. Grossièrement, les composants
qui nécessitent des performances élevées sont réalisés en matériel, alors que ceux nécessitant de la
flexibilité sont réalisés en logiciel. On choisit aussi dans cette étape les composants physiques
(processeur, DSP, etc.) qui exécutent les parties logicielles, ainsi que l’architecture mémoire, la
gestion des entrées / sorties, etc. À la fin de cette étape, on obtient les spécifications de tous les
composants matériels et logiciels.
Les étapes suivantes sont la conception du matériel, du logiciel et des interfaces composées elles aussi
de parties matérielles et logicielles. Idéalement, il faudrait réutiliser des composants existants pour
gagner du temps, par rapport à une conception complète de tout le système. Pour les composants
matériels qui n’existent pas déjà, la conception peut suivre le flot traditionnel de conception avec les
différentes étapes de synthèse (comportementale, logique et finalement physique)
Les étapes de ce type de conception sont présentées dans la figure ci dessous

Points clés méthodologiques de la conception conjointe ou co-conception


1. Concevoir à différents niveaux d’abstraction
2. Ramener la complexitéàun niveau gérable
3. Apporter les détails d’implantation le plus tard possible
4. Développer le matériel et logiciel en même temps sur des chemins parallèles
5. Séparation des champs d’étude à chaque niveau
6. Séparer l’application de la plateforme
7. Rester ‘platform independant’ le plus longtemps possible (Flot de conception en
Y)

M. Ouslim Page 10
8. Réaliser des objectifs au niveau du système en exploitant les compromis entre matériel et
logiciel dans un système grâce àleur conception simultanée

L'étape de répartition logiciel/matériel


Consiste à déterminer les parties du système qui seront réalisées en matériel et celles qui seront
réalisées avec du logiciel . A partir des spécifications, formelles ou informelles, ou d'un algorithme
décrivant le comportement du système, il faut trouver la meilleure réalisation possible en terme de
surface, de coût, et de respect des contraintes temporelles qui satisfont les spécifications initiales .
Cette répartition est en général faite par le concepteur en fonction de certains critères et de certaines
contraintes (vitesse, complexité, . . .)
Lors de la conception de systèmes hétérogènes, le matériel est plutôt dédiéaux parties nécessitant des
performances élevées . Par contre, le logiciel est préféré pour des raisons de coût, de facilité
d'évolution, de temps de développement plus court et aussi parce qu'il permet des modifications
tardives dans la spécification
Lorsque l'on regarde l'évolution d'un produit industriel (par opposition aux considérations techniques
ci dessus), nous devons préférer une conception logicielle d'un produit dans le début de son cycle de
vie pour répondre plus facilement aux évolutions et améliorations de ce produit . Finalement, une
réalisation plutôt matérielle àsa maturitépermettra une meilleure fiabilité, de meilleures performances
et un coût de production plus faible .
Après l'étape de spécification vient l'étape de partitionnement qui divise le système en trois parties:
• Une partie matérielle généralement implantée sous forme de circuits matériels (circuits
programmables comme les FPGA, circuits dédiés comme les ASIC, coprocesseurs, etc.),
• une partie logicielle implantée en tant que programme exécutable sur un microprocesseur à usage
général ou spécifique,
• une interface de communication matériel / logiciel.

Mixed HW/SW embedded system

Problématique du partitionnement
Le problème du partitionnement se pose dès que nous disposons de plus d'un composant pour réaliser
une tâche . Le problème est de déterminer «qui »réalise chaque tâche (ou fonctionnalité) .
C'est un des problèmes classique de l'allocation des ressources . Or, les contraintes liées au partage des
ressources dépendent de l'ordonnancement des tâches . En effet, le parallélisme d'action dépend du
nombre de ressources disponibles sur l'architecture . Autrement dit, pour répondre correctement au «
qui » il faut répondre au « quand » et réciproquement . Il est donc nécessaire d'aborder la
problématique dans son ensemble .
Précisément, pour des systèmes embarqués orientés traitement de données, la problématique est pour
chaque tâche
• de déterminer sa date d'exécution (ordonnancement),
• de choisir une réalisation logicielle ou matérielle (partitionnement),
• de définir le nombre et le type de ressources pour implanter le système (allocation) .
L'ordonnancement, le partitionnement et l'allocation sont trois problèmes interdépendants . L'idéal
serait de les réaliser simultanément . Cependant, pour échapper à la trop grande complexité du
problème général, il faut réaliser des approximations guidées par des choix locaux . Ainsi dans la

M. Ouslim Page 11
majoritédes cas, l'allocation, le partitionnement et l'ordonnancement sont réalisés séparément . Pour
renseigner le concepteur sur la qualitédes solutions trouvées,
on utilise des estimateurs (estimations des performances, des coûts, . . .) afin de prédire les résultats de
la conception sans aller jusqu'àla réalisation du système

Les principaux objectifs du partitionnement sont la minimisation du coût (surface, consommation, . . .)


et de la durée d'exécution du système . Un compromis entre ces deux minimisations est généralement
recherché.
• Le type d'application (orienté contrôle ou données) est également une caractéristique importante, car
les applications flot de données permettent un ordonnancement statique alors que des applications
orientées contrôle nécessitent un ordonnancement dynamique (la date de début d'exécution de
certaines tâches est en effet indéterminée)
• Les types de communication utilisés et le degré de prise en compte des contraintes des
communications lors du partitionnement sont également des critères de différentiation des approches
existantes . La conception des communications est composée de deux étapes . La première étape
consiste àdéterminer l'architecture de communication la plus appropriée pour le transfert des données .
Pour définir cette architecture, il faut déterminer le
canal de transmission, le protocole et l'unitéréalisant le transfert . Le problème des communications se
pose donc en termes de choix de ressources logicielles ou matériels . La seconde étape consiste à
implanter l'architecture qui a été définie lors de la première étape . Cette étape est généralement
appelée synthèse de l'interface .

Optimisation dans un système embarqué


Les ressources d'un système embarqué sont souvent limitées pour des raisons de coût et de
consommation d'énergie. Par conséquent, l'optimisation du système en ce qui concerne la
consommation de mémoire, les cellules logiques, etc. est importante. Cependant, cette exigence
contredit l'exigence de flexibilité. nous allons chercher àoptimiser les systèmes embarqués pour les
rendre plus petits, plus rapides, plus performants, plus écoénergétiques, etc. Ce serait merveilleux si
nous pouvions atteindre tous ces objectifs en même temps et pour certains circuits nous le pouvons.
Mais, en général, optimiser dans une dimension signifie généralement faire moins bien dans une autre.
En d'autres termes, il y a des compromis de conception àfaire.

Il est très important de mettre en place une infrastructure permettant d'extraire les opérations
dominantes et les ressources nécessaires caractérisant le comportement du système.
Optimiser un code veut dire améliorer sa qualité:
- Le rendre plus rapide
- Le rendre plus compact
- Le rendre le moins gourmand en énergie et en puissance électrique
- Le code mort est tout code exécutémais qui ne contribue pas au résultat du programme. Une
analyse de dépendances de données permet de détecter les instructions du programmes qui ne
contribuent pas au résultat final(d’une fonction par ex).

Remarque dans ce contexte on définit Le temps de développement comme étant:


(taille du programme en lignes de code ( Lines of Code)) x (temps par lignes de code)
lorsque le temps par ligne de code est totalement inconnu; estimez les modules en termes de
lignes de code (LOC),

Écriture du code spécifique àl’embarqué


Les parties du code à optimiser sont les parties les plus souvent exécutées : boucles, fonctions
appelées plusieurs fois, etc. Pour détecter ces parties «chaudes », on utilise la notion de profilage.

M. Ouslim Page 12
Profilage
Le but du profilage du code embarqué c'est l'analyse de l’exécution d’un programme afin de
connaitre son comportement, ceci nous précise les hots spots (points chauds) qui représentent la
portion du code consommateur de temps.
L’outil de profilage analyse et localise rapidement les sources de dégradation de la performance d’une
application, les goulots d’étranglement comme les accès mémoires et procure des suggestions
d’amélioration: avant de passer a l’optimisation, il est nécessaire de savoir ou le processeur passe la
majeure partie de son temps (rôle du profileur)
Il détermine aussi la liste des fonctions appelées et le temps passé dans chacune d’elles ainsi que
l’utilisation du processeur-mémoire etc..
Le profilage du code est implémentépar instrumentation (en rajoutant des instructions au code source
Donc il détermine les parties du code qu’il faut optimiser.
Exp: UNIX: gprof (compiler avec l’option –pg)
Dans le cas des boucles qui représentent en général, une part importante du temps consommédans un
programme, les optimisations sont : Déplacement de code, Optimisation des variables induites ,
Élimination du code mort

Remarque: Il faut noter qu'On ne peut pas optimiser ce que l’on ne peut pas mesurer…..

Quelques Techniques de programmation de l'embarqué:


Ne pas utiliser les fonctions de temporisations
Utiliser des fonctions avec paramètres
Découper une fonction longue en un diagramme d’états
Exemple:
Déplacement des invariants de boucle
Si le résultat d'une expression n'est pas modifié à l'intérieur d'une boucle, on peut déplacer l’expression
àl'extérieur de cette boucle
Voici 4 exemples d'optimisation de boucle:

for (i=0; i<n; i++){ change (i=0;i<100;i++)


for (i = 0; i < limit*2; i++) { for (i=0; i<n; i++){
a[i]=x+y+z; if (x<3) a[i]=1; DoSomething();
...
} }
} devient
devient devient
devient
t=x+y+z int j = limit*2; DoSomething()
for (i = 0; i < j; i++) { if (x<3){
for (i=1; i<n; i++) { for(i=0;i<100;i++)
a[i]=t ... for (i=1; i<n; i++)
} a[i]=1; { ... } } ).
}

La taille des données est également importante dans les protocoles d'E / S et de communication
mappés en mémoire. Il est donc recommandéd'utiliser des typedefs pour définir une taille fixe,
comme indiquéci-dessous.

M. Ouslim Page 13
Autres recommandations sur les types de données
Le C préfère les types signés, ce qui implique que tout type sans mot clé signé / non signé sera
automatiquement traité comme signé. Les types signés sont plus chers que les types non signés, en
particulier parce qu'ils empêchent l'optimisation lorsque les opérations arithmétiques sont remplacées
par des opérations binaires moins chères. Donc, à moins que vous n'ayez spécifiquement besoin de
gérer des nombres négatifs, utilisez des types non signés.

Règles générales de programmation


• Éviter les variables globales autant que possible.
• Utiliser le mot clef "static" pour toutes les fonctions ou variables internes a un fichier
• La Recursiviténe doit s'appliquer qu'au fonctions avec peu de paramètres et de variables
• Utiliser les fonctions les plus spécifique possibles (puts plutôt que printf, alloca plutôt que
malloc)
• Utiliser l'allocation dynamique pour les cas ou vous n'avez aucune idée de la taille memoire de
votre variable. Si une variable est bornée pour 90% de son utilisation utiliser une allocation
statique pour ces 90% et un test pour passer en allocation dynamique pour les 10% restants.
• Utiliser les optimisations du compilateur.
en C/C++ un code optimiséest fréquemment un code plus simple et plus facile àlire.
• Jumps/branches sont chers. Minimisez leur utilisation autant que possible.
• Les appels de fonction nécessitent deux sauts, en plus de la manipulation de la mémoire de la pile.
• Préférez l'itération à la récursivité.
• inline Utilisez les fonctions en ligne pour les fonctions courtes afin d'éliminer la surcharge des
fonctions.
• Déplacer les boucles dans les appels de fonction
• Long if...else if...else if...else if... chaînes nécessitent beaucoup de sauts pour les cas près de la fin de
la chaîne (en plus de tester chaque condition). Si possible, convertissez-le en une instruction switch,
que le compilateur optimise parfois en une recherche de table avec un seul saut. Si une instruction
switch n'est pas possible, placez les clauses les plus courantes au début de la chaîne if

Outil système pour la conception de SOPC


Le concepteur a besoin d’une méthodologie de conception et Le concepteur a besoin d’outils.
Pour simplifier le processus de conception, Xilinx propose le Vivado Design Suite et le Xilinx
Software Development Kit (SDK). Cet ensemble d'outils vous fournit tout ce dont vous avez besoin
pour simplifier la conception de système embarqué pour un appareil qui fusionne un SoC avec un
FPGA. Cette combinaison d'outils offre la conception d'applications matérielles et logicielles, la
capacitéde débogage, l'exécution de code et le transfert de la conception sur des cartes réelles pour
vérification et validation.

Software Development Kit (Le kit de développement logiciel (SDK))


Le (SDK) est un environnement de développement intégré, complémentaire de Vivado, utilisépour la
création et la vérification d'applications logicielles embarquées C / C ++
Vivado est utilisépour ajouter des sources de conception àvotre matériel. L'utilisation de l'intégrateur
IP facilite l'ajout des IP souhaitées àvotre source de conception existante
Vivado et IP integrator sont utilisés pour tout le développement de système matériel. La spécification
du microprocesseur, des périphériques et l'interconnexion de ces composants, ainsi que leur
configuration détaillée respective, a lieu dans Vivado.
Le SDK est utilisépour le développement de logiciels et est disponible soit dans le cadre de Vivado
Design Suite, soit il peut être installéet utilisésans aucun autre outil Xilinx installésur la machine sur
laquelle il est chargé

M. Ouslim Page 14
Système de processeur Zynq
Xilinx Zynq SoC dispose d'un processeur ARM Cortex A9 double cœur, du bus AMBA, de dispositifs
de connexion (SPI, I2C, CAN, UART, GPIO, DMA), de contrôleurs de mémoire flash et DRAM, de
sécuritéet logique programmable (PL) avec DSP et RAM.
Le protocole utilisé par de nombreux concepteurs de SoC aujourd'hui est AXI, ou Advanced
eXtensible Interface, et fait partie de la spécification Arm Advanced Microcontroller Bus Architecture
(AMBA). Elle est particulièrement répandue dans les dispositifs Zynq de Xilinx, fournissant
l’interface entre le système de traitement et les sections logiques programmables de la puce.
Tous les systèmes ZYNQ ont la même architecture et ils contiennent tous un processeur double cœur
ARM cortex A9. C’est un processeur en dur (hard processor) comparé au processeur logiciel (soft
processor). Le ZYNQ permet l’utilisation du soft processor mais dans la partie PL du circuit.
L’appellation du soft processor est microblaze comme sur la série de FPGA SPARTAN ou VIRTEX.
la plate-forme de traitement Zynq-7000 est un processeur SOC système sur puce avec logique
programmable intégrée: le système de traitement (PS) est un double cœur en silicium dur et la logique
programmable (PL)

La puce Zynq

M. Ouslim Page 15
ZYNQ BOARD:
C’est une carte à faible cout. La petite sœur de la carte ZEDBOARD qui dispose d’un meilleur
potentiel. La carte ZYBO est basée sur un SOC du type Z-7010
L’APU est composé de deux cœur de processeur ARM chacun associé à plusieurs unités de traitement
- Un moteur de traitement multimédia NEON (Media Processing Engine (MPE))
- Une unitéde traitement àvirgule flottante (FPU)
- Une unitéde management de mémoire (Memory Management Unit (MMU)) essentiel pour faire
tourner un OS comme LINUX
- De la mémoire cache de niveau 1 et de niveau 2
-De la mémoire OCM On Chip Memory
La partie PL est basée sur un FPGA série 7 du type ARTIX ou KINTEX suivant le modèle de ZYNQ.

La carte ZYBO (ZYNQ BOARD)

M. Ouslim Page 16
CONCLUSION

Principes de la modélisation

 Objectif principal de la modélisation = maîtriser la complexité


 Modéliser = abstraire la réalitépour mieux comprendre le système àréaliser
 Le modèle doit être reliéau monde réel
o Par exemple : l’existant avant les travaux, le réalisé, le restant àréaliser
 Un modèle peut être exprimé avec différents niveaux d’abstraction / raffinement
 Une seule «vue » du système n’est pas suffisante
 Le processus de modélisation vise àobtenir une solution acceptable du système
informatique. La solution finalement retenue n’est pas obtenue en une seule itération.
Plusieurs étapes sont nécessaires ; ces étapes successives permettent de raffiner le
niveau de détails du système àréaliser. Les premières étapes donnent une vision àtrès
gros grains et permettent d’avancer dans la compréhension du problème.
 Le modèle permet donc de spécifier le système àréaliser/réalisé, de valider le modèle
vis-à-vis des clients, de fournir un guide pour la construction du système pour
organiser les structures de données et le comportement du système, et de documenter
le système et les décisions prises.

En Bref:
Il existe différents modèles pour les systèmes embarqués lors de leur conception, qu'il faut les
étudier pour pouvoir adéquatement les utiliser en cas de besoin. On choisit le modèle
appropriéselon l'application que vise ce système à réaliser et selon les outils de conception
mis à notre disposition (environnement de développement logiciel (langage,
compilateur,simulateur etc…) et matériel (carte de prototypage)).
Généralement, une application d'un système embarquéest orientée soit traitement (calcul) ou
contrôle( action-reaction), Donc on choisit le modèle qui va precisement avec telle ou telle
application.
Le système à concevoir doit être décrit et présentéà un haut niveau (simple a comprendre),
avec le moindre de détails donc sous une forme grossière (abstraction la plus élevée).
Généralement on utilise un langage formel avec une sémantique et une syntaxe standard bien
établies tel que par exemple VHDL (pour décrire le matériel) et C (pour décrire le logiciel)
ou SystemC (pour décrire les deux a la fois). Afin de pouvoir automatiser le processus de
conception à l'aide d'outils logiciels pour accélérer la conception (rappel le TTM). Il est
important que le modèle de spécification soit exprimédans un langage formel. qui permettent
aux outils et la manipulation formelle de détecter les inconsistances, ambiguïtés ou
l'incomplétude dans le modèle. Plus que le niveau d'abstraction est élevé dans l'étape de
spécification, moins que les détails de l'implémentation sont inhérents dans le modèle
d'implémentation et l'espace de conception est plus large. Il faut raffiner le modèle par une
cosimulation en ajoutant au fur et a mesure les détails imposées par l'application et en
respectant des métriques de conception selon les exigences, jusqu’à ce qu'on satisfait la
fonctionnalité demandée. Une fois la simulation achevée on procède au prototypage du
système en utilisant une carte de développement telle que la Zedboard afin de tester et vérifier
le système et valider le système pour entamer sa fabrication et la production du système avec
la meilleur combinaison des parties logicielles et matérielles les plus optimales avec un délai
de conception raisonnable en respectant la fenêtre du marché.

M. Ouslim Page 17
Rattrapage SYSTEMES Embarqués 2021 solution ELN ESE M2 USTO
1- (1pt)

Application Specific Instruction set Processor : c'est un processeur dédié a traitement bien
particulier exemple traitement de signal Exemples d’ASIP : DSP, GPU même un microcontrôleur

2- (1pt)

Software: logiciel
la flexibilité, Hardware: materiel
reconfigurabilité, la vitesse,
mise à jour facile, etc., consommation d'énergie,
fonctionnalité complexe, coût en gros volumes
Coût,... Parallèle
Séquentiel Synchrone
Asynchrone Portes logiques
Programmes mémorisés Wire-based communication
Memory-based communication topologie fixe
Hautement programmable Basse puissance
Puissance élevée Plus détaillé
Moins détaillé NRE élevé
No NRE rapid
lent

3- (1pt)

On doit cibler les métriques de conception: telle que consommation énergétique et


performances Et on essaie d'équilibrer entre ces métriques (trouver la combinaison
proportion matérielle et proportion logicielle qui donne le meilleur compromis)

4- (2pts)

ASIC : application specific IC (c'est l'implémentation dédiée en matériel d'une fonction) Le


microcontrôleur est une unitéde traitement programmable qui cible toutes les fonctions
de contrôle donc elle est flexible et adaptable et non dédiée mais en contre partie elle
consomme plus et elle est moins performante comparativement a un asic qui realise une
fonction sur mesure.

NON car l'ASIC lui-même est un circuit integréfigéet si on a besoin d'un accélérateur
matériel on utilise un FPGA pour cette fin et non pas un asic

5-.(1pts)

RISC est une architecture load/store , l'exécution d'une instruction est faite d'une manière
simple ce qui libère de l'espace et favorise l'utilisation des banques de registres qui seront
très utile pour le traitement des sous programmes, chose appréciable pour un système
embarquéde même on peut utiliser des mémoire de données et d'instructions séparées ce
qui donne une architecture harvard et permet l'implantation du mécanisme du pipelining
qui est une sorte de traitement parallèle pour accélérer le traitement sans augmenter la

Rattrapage SYS EMB USTO ELN 2020-2021 1


fréquence de l'horloge (qui entraine une consommation énergétique non tolérée par un
système embarqué)

6- (1pt)
Performance (vitesse d'exécution), consommation énergétique, taille ou le cout.
L'objectif est de trouver un compromis entre ces métriques car améliorer un facteur
entraine la dégradation des autres.

7- (2pts)
Pour un soc (système on chip) les fonctions réalisées sont fournies sous forme de bloc
matériel ou logiciel déjàconçu au préalable (testéet validépour la dite fonction) dont le
but est de rentabiliser la surface dédiée a la fonction faite par le bloc IP et de permettre la
réutilisation de ces blocs et ne pas les réinventer ce qui permet d'accélérer la conception et par
conséquent diminuer le TTM (time to market).

8- (1pts)
Le temps de bit nominal est défini dans le but de permettre la synchronisation entre les
différents nœuds attachés au bus CAN. La gestion d'erreur est faite en utilisant deux
compteurs d'erreur respectivement pour la réception de trames et la transmission au niveau
de chaque nœud. Ces compteurs s'incrémentent et se décrémentent de telle sorte que le
nœud défectueux sera automatiquement écartédu bus
9- (2pts)

Le bit stuffing ajoute un bit de polaritécontraire a la polaritéde 5 bits consécutifs dont le


but est de briser et interrompre une longue séquence de bits ayant la même polarité. Car
ceci risque a faire perdre la synchronisation due au codage NRZ utilsé.

le cas le plus defavorable se presente quand on a une alternance de 5bits au debut ensuite 4
bits complémentaire et ainsi de suite donc le bit de stuffing qu'on ajoute sera le 5ième bit à
chaque fois. Dans ce caspour un tel message de n bits on a un accroissement max de

10- (1pts)

Sachant que la trame dans le bus can est faite d'une information de contrôle et des données
utiles alors on considerera que les données utile qui sont de 64bits pour une trame standard

CAN 2.0A Standard trame maxi = 1 + 11 + 1 + 6 + 64 + 16 + 2 + 7 = 108 bits


Sur un total de 108 bits 64 bit sont utile le rendement est
Rendement = Données utiles/Trame standard maxi=64/108= 59:25%
Donc le debit effectif (utile) = rendement * debit =59:25% * 250Kb/s=148,125Kb/

11- (2pts)
Ceci depend du type de cache
On considere le cache pleinement associative: on a besoin pour chaque entrée dans le
cache un comparateur : le nombre de blocs dans le cache est
6Koctet/4 = 6*210/4=6*28= 1536 bloc
donc pour chaque bloc on a besoin d'un comparateur donc 1536 comparateurs au total

Rattrapage SYS EMB USTO ELN 2020-2021 2


ceci est payétrès chère en ce qui concerne l'espace réservéa la mémoire

EXO1 3pts
1) Il faut vider le pipeline, donc c'est un coût proportionnel à la profondeur.
2) Le programme ayant 5000 instructions, il prendra environ 5000 cycles pour s'exécuter
5000 *25%=1250 instructions sont des branchements. Dans 25% des cas (312,5
instructions), il faudra flusher le pipeline, ce qui aura un coût de 10cycles (profondeur du
pipe). Le nombre de cycles nécessaires à l’exécution de ce programme est:
(5000-1250 ) * 1cycle + 313 *10cycles + 937*1cycle = 7817 cycles

EXO2 2pts

Dans le cas d'un miss (on ne trouve pas la donnée dans le cache ) on doit accéder a la
mémoire principale pour avoir la donnée donc la fréquence cette situation dépend de
combien de fois on a un miss taux de miss m=1-hit
Du fait que les temps ne se chevauchent pas ceci veut dire qu'on accède au cache ensuite
on accede a la mémoire principale un accès tmiss= tcache + tmemoire=5+80=85ns
Dans le cas du hit on accède qu'a la mémoire cache avec une probabilitéde h
Tacces moyen= h* tcache+ (1-h)tmiss< 20
5h+85(1-h) < 20 d’où 80h>65 h>65/80
h= 0,8125 soit un taux de réussite supérieur a 81,25 %

Note: j'ai donnébeaucoup de questions pour que vous aurez au moins un 10

Rattrapage SYS EMB USTO ELN 2020-2021 3

Vous aimerez peut-être aussi