Professional Documents
Culture Documents
LotfiBoussaid@yahoo.fr
2007 - 2008
Un
Un système
système temps
temps réel
réel est
est un
un système
système qui
qui contrôle
contrôle ou
ou pilote
pilote un
un
procédé
procédé physique
physique àà une
une vitesse
vitesse adaptée
adaptée àà l’évolution
l’évolution de
de ce
ce
procédé
procédé quelles
quelles que
que soient
soient les
les conditions
conditions d’utilisation
d’utilisation
• Temps réel strict/dur (hard real-time) : le non respect d’une contrainte de temps a des
conséquences graves (humaines, économiques, écologiques) : besoin de garanties
• Temps réel souple/mou (soft real-time) : on peut tolérer le non respect occasionnel
d’une contrainte de temps (garanties probabilistes)
• Un système temps réel est un système réactif devant fournir des sorties logiquement correctes tout en
respectant strictement des contraintes temporelles explicites
• Le terme "temps réel" est généralement assimilé à "temps réel dur". Ce sont les systèmes de ce type
qui posent des problèmes spécifiques tant d'analyse que de réalisation et de validation.
• Le "temps réel" n'est pas un problème de rapidité intrinsèque. Il suffit de respecter les contraintes de
temps imposées par l'environnement.
• La structure embarquée ou détachée du système n'en change pas les principes. Elle n'influence que le
type de solution retenue qui sera spécifique ou standard et plus ou moins réutilisable.
• La plupart des systèmes dits "temps réel" comportent à la fois des fonctions temps réel dures et des
fonctions temps réel souples.
Satellite
Faible
portée
Région
Grande
Portée
Local Area
Large région
Grande mobilité Faible mobilité
Hardware Software
Évolution de l’architecture
Microprocesseurs - le 8080
• Format standard
– Classique (AT), ATX
• Supporte :
– processeur (ou carte fille Slot1)
– mémoire (RAM, cache, BIOS)
• SIMM, DIMM
– “chipset” (gestion logique bus)
– bus ISA et/ou PCI
– peut inclure un contrôleur SCSI
– cartes d’extension
– connecteurs divers
périphériques, alimentation
Ex : carte Pentium
MÉMOIRE
MÉMOIRE CPU
CPU
IO
IO IO
IO IO
IO
•••••
MÉMOIRE MÉMOIRE
MÉMOIRE
DONNÉES
DONNÉES
MÉMOIRE
PROGRAMME
PROGRAMME
CPU
CPU IO
IO IO
IO IO
IO •••••
BUS DONNÉES
Les avantages
• Instructions plus proches d'un langage de haut niveau
• Programmation plus compact
• Écriture plus rapide et plus élégante des application
• Moins d'occupation mémoire des programmes
• Exécution nécessite moins d'octets mémoire
Les inconvénients
• beaucoup trop de codes d'instruction différents
• taille des instructions élevée et variable (1 à 15 bytes – octets par instruction)
• structure des instructions non standardisées: exécution complexe, peu performante
PLD
PLD
Programmable
ProgrammableLogic
LogicDevice
Device
SPLD
SPLD CPLD
CPLD FPGA
FPGA SPGA
SPGA
Simple
Simple PLD
PLD Complex
Complex PLD
PLD Field
Field System
System
(PAL
(PAL &
& GAL)
GAL) Programmable
Programmable Programmable
Programmable
Gate
Gate Array
Array Gate
Gate Array
Array
~~ 00 àà 500
500 ~~ 500
500 àà 30
30 000
000 ~~ 1000
1000 àà 250
250 000
000 ~~ 500
500 000
000
Gates
Gates Gates
Gates Gates
Gates Gates
Gates
Les Fabricants
XILINX, ALTERA, ACTEL, Vantis, Lattice, Lucent, Cypress, Atmel, QuickLogic, Philips ..
Programmable I/O
• 840 Mbps LVDS
Digital Clock Management
• Precise frequency generation and
phase control
• Both on-chip & off-chip clock synchronization
EmbeddedPowerPC
• 300 MHz
• 420 DMIPS
Bloc CLB
Cellules
d’interconnections
PSM = Programmable Switch Matrix
10 interconnect points per matrix
• Délai de conception
• Possibilité de reconfiguration
• Prototypage rapide
• Ré-utilisation de bibliothèque de composants (IPs)
• Facilité de mise en œuvre et de test.
Raffinement Synthèse
Synthèse de
de Haut
Haut niveau
niveau
&
Réutilisation
Niveau
Niveau RTL
RTL
VHDL
VHDL RTL
RTL
Synthèse
Synthèse etet Data
Data Path
Path -- Controller
Controller
Validation
Validation
Synthèse
Synthèse RTL
RTL
Niveau
Niveau Logique
Logique
Nelist
Nelist
Synthèse
Synthèse Logique
Logique
Prototypage
Prototypage
Niveau
Niveau Physique
Physique
VHDL VHDL
VHDL
VHDL Simulation
Xilinx Integrated Software Synthèse Après synthèse
STIMULI
Environnement Ou
TESTBENCH
ISE EDIF, XNF
Mémoire SRAM
Port VGA
(256 Kb x 32)
Intégrée à la carte
Port série
Port PS2
8 interrupteurs et
9 Leds 4 afficheurs 7 segments à Leds
4 boutons-poussoirs
Le VHDL
VHSIC (Very High Speed Integrated Circuit) Hardware Description Language
entity comparateur is
port( A, B: in bit_vector(0 to 3);
EQ: out bit);
end comparateur;
Objets VHDL
• Les différentes sortes d’objets
– Signal : Fil conducteur.
– Variable : Valeur intermédiaire d’une opération complexe.
– Constant : Valeur fixe.
• Possédant tous un type
Objets VHDL
La bibliothèque IEEE 1164 a proposé un type de donnée standard ayant neuf valeurs comme
indiqué ci-dessous :
Value Description
'U' Uninitialized
'X' Unknown Ex. Type : std_logic et std_logic_vector(n downto 0)
'0' Logic 0
(driven)
'1' Logic 1
(driven)
'Z' High
impedance
'W' Weak 1
'L' Logic 0 (read)
'H' Logic 1 (read)
'-' Don’t care
Opérateurs
Les Packages
• Les packages sont des librairies de code VHDL précompilées ou non
(Analogie avec C/ C++: #include “package.h”)
• Les packages sont généralement déclarés au tous début des fichiers de code source VHDL
(avant les entités)
• Employés dans plusieurs cas, par exemple :
– Modularisation du code
– Simulation de composantes numériques externes
– Librairies nécessaires par les simulateurs employés
2. Les Directions
- In entrée
- Out sortie qui ne peut pas être relue à l’intérieur de l’architecture
- Inout entrée-sortie pouvant être relue à l’intérieur de l’architecture
- Buffer sortie pouvant être relue à l’intérieur de l’architecture mais sur des signaux du type
buffer
3. Les Objets
- Signal connexion interne déclarée dans une architecture ou un paquetage
- Buffer Il est affecté généralement à une sortie après une utilisation interne
- Variable utilisée comme index dans la génération de boucle et ne peut être déclarée que dans
un process.
- Constant permet une meilleure lisibilité du programme
else INSTRUCTIONn;
end if;
- Le test case .. When .. End case :
case EXPRESSION is
when ETAT1 => INSTRUCTION1;
when ETAT2 => INSTRUCTION2;
..
E0 S0 S 0 = FC ( E0 , .. , En )
FC
En Sp S p = FC ( E0 , .. , En )
architecture COMPORTEMENT of BCD_2_7SEG is
Exemple : Conversion BCD vers 7 Segments : begin
case BIN is
when 0 => SORTIE <= "0000001" ;
library ieee ; when 1 => SORTIE <= "1001111" ;
use ieee.std_logic_1164.ALL; when 2 => SORTIE <= "0010010" ;
entity BCD_2_7SEG is when 3 => SORTIE <= "0000110" ;
port ( when 4 => SORTIE <= "1001100" ;
BIN : in STD_LOGIC_VECTOR(3 downto 0) ; when 5 => SORTIE <= "0100100" ;
SORTIE : out STD_LOGIC_VECTOR(6 downto 0) when 6 => SORTIE <= "0100000" ;
); when 7 => SORTIE <= "0001111" ;
end BCD_2_7SEG; when 8 => SORTIE <= "0000000" ;
when 9 => SORTIE <= "0000100" ;
when others => SORTIE <= "01100000" ;
end case ;
end COMPORTEMENT;
Lotfi BOUSSAID Cours Informatique Temps Réel 48
Calculateurs Temps Réel
La CAO des Systèmes Matériels
Fonctions Séquentielles (1)
Définition d’un PROCESS
Un process est une partie de la description d’un circuit dans laquelle les instructions sont
exécutées séquentiellement c’est à dire les unes à la suite des autres.
Il permet d’effectuer des opérations sur les signaux en utilisant les instructions standard de la
programmation structurée comme dans les systèmes à microprocesseurs.
L’exécution d’un process est déclenchée par un ou des changements d’états de signaux
logiques. Le nom de ces signaux est défini dans la liste de sensibilité lors de la déclaration du
process.
[Nom_du_process :] process(Liste_de_sensibilité_nom_des_signaux)
Begin
-- instructions du process
end process [Nom_du_process] ;
L’assignation sélective
L’assignation conditionnelle case signal_de_slection is
when valeur_de_sélection => instructions
if condition then [when others => instructions]
instructions end case;
[elsif condition then instructions]
[else instructions] Exemple:
end if ; case SEL is
when “000” => S1 <= E1;
Exemple: when “001” => S1 <= ‘0’;
if (RESET=’1’) then when “010” | “011” => S1 <=’1’;
SORTIE <= ”0000”; when others => S1 <= ‘0’;
end if ; end case;
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all;
Use ieee.std_logic_unsigned.all;
entity BASCULED is
port ( D,CLK : in std_logic;
S : out std_logic);
end BASCULED;
Une même combinaison des entrées, à un certain instant, pourra avoir des effets différents suivant les
valeurs des combinaisons précédentes de ces mêmes entrées.
Une fonction séquentielle peut être réalisée grâce une structure du type machine à états finis (MEF)
Une machine à états en anglais Finite State Machine (F.S.M.) est un système dynamique, qui peut se
trouver, à chaque instant, dans une position parmi un nombre fini de positions possibles.
Dans une machine de type MOORE, les sorties ne dépendent que de l’état interne.
Dans une machine de type MEALY, les sorties sont fonctions de l’état courant et des entrées.
Le registre d’état constitue le cœur d’une machine à états. Il est constitué de n bascules synchrones.
Le nombre d’états est : N=2n
Problématique
Pour assurer une exécution portable et efficace il faut pouvoir gérer :
Exemples de problèmes
2. Partage d’imprimante
SE
Vue ascendante Gestionnaire de ressources
- Une vue uniforme des entrées/sorties - Assurer le bon fonctionnement des ressources
et le respect des délais
- Une mémoire virtuelle et partageable
- Le contrôle des accès aux ressources
- La gestion de fichiers et répertoires
- L’interruption d’une utilisation de ressource
- la gestion de processus
- La gestion des erreurs
- La gestion de communication interprocessus
- Et l’empêchement des conflits
Application
CALL
Bibliothèque Mécanisme des traps
TRAP Mode utilisateur
Mode noyau
Système
Matériel
- Contrôle de processus
Ces systèmes sont principalement utilisés en milieu industriel, ils permettent de réagir en temps
garanti à des événements issus de capteurs pour maintenir la stabilité d’un processus industriel
« Feedback »
- Serveurs de fichiers
Ces systèmes contrôlent de gros ensembles d’informations interrogeables à distance Î Besoin de temps
de réponse court
- Transactionnel
Ces systèmes contrôlent de grandes bases de données modifiées de façon très fréquente Î Besoin de
temps de réponse court
- Général
Multi-utilisateurs et multi-tâches
1. Systèmes Monolithiques
Le système est une collection de procédures, chacune visible de toutes les autres, et pouvant
appeler toute autre procédure qui lui est utile.
Structure interne en trois niveaux :
- La procédure interne est exécutée lors de chaque appel système
- Les procédures de services dédiés au traitement de chaque appel système
- Les procédures utilitaires assistent les procédures de service
2. Systèmes en couche
Structuration en plusieurs couches, dont chacune s’appuie sur la couche immédiatement inférieure
4. Systèmes client-serveur
Les systèmes client-serveurs sont basés sur une approche horizontale plutôt que verticale.
Ils sont constitué d’un micro-noyau minimum pour la communication, permettant aux processus
clients d’effectuer des requêtes auprès des différents serveurs de ressources du SE.
Définition Y
Un
Un processus
processus est
est crée
crée par
par d’autres
d’autres processus
processus (sauf
(sauf le
le premier),
premier), ilil est
est susceptible
susceptible d’être
d’être ::
-- Suspendu,
Suspendu, redémarré,
redémarré, et
et de
de recevoir
recevoir des
des signaux
signaux traitables
traitables de
de façon
façon asynchrones
asynchrones
Définition Z
IlIl existe
existe deux
deux niveaux
niveaux d’exécution
d’exécution ::
-- Les
Les processus
processus classiques
classiques «« lourds
lourds »» possédant
possédant chacun
chacun leurs
leurs données
données propres
propres
-- Les
Les tâches
tâches légères
légères ou
ou «« threads
threads »» qui
qui peuvent
peuvent exister
exister au
au sein
sein de
de chaque
chaque processus
processus lourd
lourd
Un
Un processus
processus modélise
modélise l’exécution
l’exécution d’un
d’un programme
programme sur
sur un
un processeur
processeur disposant
disposant ::
-- d’un
d’un compteur
compteur ordinal
ordinal ;;
-- d’un
d’un jeu
jeu de
de registres
registres ;;
-- de
de mémoire
mémoire virtuelle
virtuelle
Les
Les processeur
processeur physique
physique commute
commute entre
entre les
les processus
processus sous
sous la
la direction
direction d’un
d’un Ordonnanceur
Ordonnanceur
A
B
C
D Temps
Dans les SE à temps partagé, tous les processus progressent dans le temps, mais un seul s’exécutent à la fois
Pour
Pour les
les systèmes
systèmes de
de traitement
traitement par
par lots,
lots, l’algorithme
l’algorithme de
de traitement
traitement est
est relativement
relativement simple
simple Î
Î Exécution
Exécution
du
du programme
programme suivant
suivant de
de la
la file
file dés
dés qu’un
qu’un emplacement
emplacement mémoire
mémoire sese libère
libère
Pour
Pour les
les systèmes
systèmes multi-utilisateurs,
multi-utilisateurs, multi-tâches,
multi-tâches, multi-processeur,
multi-processeur, l’algorithme
l’algorithme d’ordonnancement
d’ordonnancement peut
peut
devenir
devenir plus
plus complexe
complexe
Le
Le choix
choix de
de l’algorithme
l’algorithme dépend
dépend l’application
l’application et
et notamment
notamment des
des critères
critères suivants
suivants ::
-- Équité
Équité :: chaque
chaque processus
processus doit
doit pouvoir
pouvoir disposer
disposer de
de la
la ressource
ressource processeur
processeur
-- Efficacité
Efficacité :: l’utilisation
l’utilisation du
du processeur
processeur doit
doit être
être maximale
maximale
-- Temps
Temps de réponse :: minimiser
de réponse minimiser le
le temps
temps de
de réponse
réponse pour
pour les
les utilisateurs
utilisateurs interactifs
interactifs
-- Temps d’exécution :: minimiser
Temps d’exécution minimiser le
le temps
temps d’exécution
d’exécution pris
pris par
par chaque
chaque travail
travail exécuté
exécuté en
en traitement
traitement par
par lot
lot
-- Rendement
Rendement :: le
le nombre
nombre de
de travaux
travaux exécuté
exécuté par
par unité
unité de
de temps
temps doit
doit être
être maximale
maximale
Ordonnancement du plus court d’abord : Ce type d’ordonnancement s’applique lorsqu’on dispose d’un
ensemble de tâches dont on peut connaître la durée à l’avance (ex: transactions journalières bancaires).
Ordonnancement dicté par une politique : Ce type d’ordonnancement permet de garantir à l’utilisateur
une performance annoncé (peut être utilisé pour les systèmes temps réel)
Dans un système temps réel, le but de l'Ordonnanceur est de donner à l'utilisateur une
impression de confort tout en s'assurant que toutes les tâches demandées sont
finalement exécutées.
Contraintes
Les systèmes à contraintes temps réel doivent répondre à trois critères fondamentaux :
1.
1. Le
Le déterminisme
déterminisme logique
logique :: les
les mêmes
mêmes entrées
entrées appliquées
appliquées au
au système
système doivent
doivent produire
produire les
les mêmes
mêmes
effets.
effets.
2.
2. Le
Le déterminisme
déterminisme temporel
temporel :: une
une tâche
tâche donnée
donnée doit
doit obligatoirement
obligatoirement être
être exécutée
exécutée dans
dans les
les délais
délais
impartis,
impartis, on
on parle
parle d‘échéance.
d‘échéance.
3.
3. La
La fiabilité
fiabilité :: le
le système
système doitdoit être
être disponible.
disponible. Cette
Cette contrainte
contrainte est
est très
très forte
forte dans
dans le
le cas
cas d'un
d'un système
système
embarqué
embarqué car car lesles interventions
interventions d'un
d'un opérateur
opérateur sont
sont très
très difficiles
difficiles voire
voire même
même impossibles.
impossibles. Cette
Cette
contrainte
contrainte estest indépendante
indépendante de de la
la notion
notion de
de temps
temps réel
réel mais
mais la
la fiabilité
fiabilité du
du système
système sera
sera d'autant
d'autant plus
plus
mise
mise àà l'épreuve
l'épreuve dans dans le
le cas
cas de
de contraintes
contraintes dures.
dures.
Dans
Dans unun système
système temps
temps réel,
réel, le
le noyau
noyau est
est dit préemptif si
dit préemptif si un
un thread
thread peut
peut être
être interrompu
interrompu par
par
l'Ordonnanceur en fonction du niveau de priorité afin de permettre l'exécution d'un thread
l'Ordonnanceur en fonction du niveau de priorité afin de permettre l'exécution d'un thread de plus de plus
haut
haut niveau
niveau de
de priorité
priorité prêt
prêt àà être
être exécuté.
exécuté.
Ceci
Ceci permet
permet d'affecter
d'affecter les
les plus
plus hauts
hauts niveaux
niveaux de
de priorité
priorité àà des
des tâches
tâches dites critiques par
dites critiques par rapport
rapport àà
l'environnement
l'environnement réel
réel contrôlé
contrôlé par
par le
le système.
système.
La
La vérification
vérification des
des contextes
contextes àà commuter
commuter est
est réalisée
réalisée de
de manière
manière régulière
régulière par
par l'Ordonnanceur
l'Ordonnanceur en
en
fonction
fonction de
de l'horloge
l'horloge logicielle
logicielle interne
interne du
du système,
système, ou
ou tick
tick timer
timer système.
système.
Dans
Dans le
le cas
cas d'un
d'un noyau
noyau non
non préemptif
préemptif (ex:
(ex: le
le noyau
noyau LINUX)
LINUX) unun thread
thread sera
sera interrompu
interrompu uniquement
uniquement
dans le cas d'un appel au noyau ou d'une une interruption externe.
dans le cas d'un appel au noyau ou d'une une interruption externe.
Norme développée par l’IEEE (Institute of Electrical and Electronic Engineering) et standardisée par
l'ANSI (American National Standard Institute) et l'ISO (International Standard Organisation).
Le but de POSIX est d'obtenir la portabilité des logiciels au niveau de leur code source indépendamment du
matériel et afin de pouvoir migrer d’un système à l’autre moyennant une compilation des sources du
programme.
Le standard POSIX est divisé en plusieurs sous-standards dont les principaux sont les suivants :
-IEEE 1003.1-1990 : POSIX Partie 1 : Interface de programmation (API) système. Ce standard contient la
définition de ces fonctions (Bindings) en langage C.
- IEEE 1003.2-1992 : Interface applicative pour le shell et applications annexes pour les systèmes de type
UNIX.
-IEEE 1003.1b-1993 : Interface de programmation (API) temps réel. Ajout du support de programmation
temps réel au standard précédent. On parle également de POSIX.4.
VxWorks - est aujourd'hui l'exécutif temps réel le plus utilisé dans l'industrie (Société Wind River).
Fiable, portable, totalement configurable et supporte plusieurs processeurs (PowerPC, 68k,
ColdFire, 8086, Pentium, ARM, MCORE, ..
QNX - Développé par la société canadienne QNX Software , QNX est un système temps réel de type
UNIX conforme à la norme POSIX
µC/OS - environnements de très petite taille construits autour de micro-contrôleurs. Il est disponible sur un
grand nombre de processeurs et peut intégrer des protocoles standards comme TCP/IP (µC/IP) pour
assurer une connectivité IP sur une liaison série par PPP.
Windows CE - Annoncé par Microsoft comme système d'exploitation embarqué pour les PDAs
eCOS - (Embeddable Configurable Operating System) fut initialement développé par la société Cygnus et
adapté aux solutions à très faible empreinte mémoire et profondément enfouies.
2. Développement d’un noyau auxiliaire pour les traitements des tâches à temps réel dur
1. RTAI (Real Time Application Interface) Département d'ingénierie aérospatiale (DIAPM) de l'Ecole
polytechnique de Milan (Politecnico di Milano). Il intègre des améliorations et des corrections
concernant en particulier les modes temps réel et la gestion des nombres flottants.
2. µClinux (prononcer « you see linux ») est l'acronyme de Microcontroller Linux. Le projet µClinux
lancé en janvier 1998 est un portage de Linux version 2.0.x originellement sur des processeurs ne
possédant d'unité de gestion mémoire MMU (Memory Management Unit). Il supporte les processeurs
(Motorola 683xx, Motorola ColdFire, i960 d'Intel, ARM7TDMI et NIOS d'Altera. µClinux basé sur le
noyau Linux 2.4.x est maintenant opérationnel.
Un aperçu du parallélisme
X Sequencement
Sequencement du
du travail
travail d'un
d'un maçon
maçon travaillant
travaillant seul
seul
Y Sequencement
Sequencement du
du travail
travail d'un
d'un maçon
maçon travaillant
travaillant seul
seul
Z {{ Sequencement
Sequencement du
du travail
travail de
de deux
deux maçons
maçons travaillant
travaillant sur
sur deux
deux portions
portions de
de mur
mur séparées.
séparées.
Avantages :
• Rapidité :
Pour N processeurs, temps de calcul divisé par N, en théorie.
• Taille mémoire :
Pour N processeurs, on dispose de N fois plus de mémoire (en général)
Difficultés :
Calculs multiprocesseurs :
• Exécution pour une série de conditions initiales différentes.
• Problème divisible en sous-problèmes indépendants:
Exemple: Mouvement de N particules test dans un champ extérieur.
Une architecture parallèle efficace coûte cher, il faut l'utiliser à bon escient.
Modèle de parallélisme
Architecture matérielle:
Modèle de programmation:
Le plus utilisé
Mémoire distribuée
Mémoire partagée (SMP)
Chaque processeur possède sa propre
Tous les processeurs ont accès à mémoire. Il n'a pas accès à celle des autres.
l'ensemble de la mémoire.
➔ Il faut gérer l'échange de messages (surcoût)
➔ Attention aux conflits. ➔ Architecture bon-marché.
➔ Très peu de surcoût de parallélisation. ➔ Il faut ajouter un réseau de com. performant.
➔ Le plus souvent nb proc < 32. ➔ Nb de proc ~ illimité.
➔ Architecture coûteuse.
http://www.top500.org
Outils de parallélisation
La parallélisation peut-être effectuées à divers niveaux:
Langages :
➔ Compositional C++ (CC++)
➔ Fortran M
➔ High performance Fortran (HPF)
➔ etc...
Bibliothèques :
➔ Message Passing Interface (MPI)
➔ Parallel Virtual Machine (PVM): ~ obsolète.
Directives de compilation :
➔ OpenMP
➔ Instructions spécifiques constructeur.
Compilateurs: efficacité très faible :
➔ Intel Fortran/C compiler: gratuit.
Sur une architecture à mémoire distribuée, les unités de calculs doivent échanger des
messages. Ces communications ne sont pas instantanée.
Débit (bandwidth)
Conséquences:
Préparation du message
Il vaut mieux envoyer 1 gros (Packing)
Latence
message que plein de petits.
Initialisation paramètres réseau
Il faut grouper les communication!
Taille des messages (1-10 Ko)
MPI : Introduction
MPI est une bibliothèque de communication pour le parallélisme sur architectures à mémoire
partagée (Fortran, C, C++).
Implémentations gratuites:
Î LAM: http://www.lam-mpi.org
MPI 1 et 2 (en partie) sur grille de PC ou architectures SMP.
Î MPICH2: http://www-unix.mcs.anl.gov/mpi/mpich2/index.htm
MPI 1 et 2 (en partie) sur grille de PC ou architectures SMP.
Visiophone
GSM 3G Éducation
eTV GPS
MP EG MPEG
Authe 21 7
ntifica Descript
tion ion de
Contenu
AV
MPEG4
Codage objet
et interactivité
MP E G
1
CD Vidéo MPEG2
DVD, TV
HD
« Arrissala »
Lotfi BOUSSAID Cours Informatique Temps Réel 98
Les STRCalculateurs
embarqués Temps Réel
: les SOC et les SOPC
Mouvement
<Segment xsi:type="MovingRegionType">
<TextAnnotation>
<FreeTextAnnotation xml:lang="en">Person</FreeTextAnnotation>
</TextAnnotation>
<MediaTime>
<MediaTimePoint> 00:00:15 </MediaTimePoint>
<MediaDuration> 00:00:30 </MediaDuration>
</MediaTime>
<ParametricObjectMotion model="Upward">
…
</ParametricObjectMotion>
</Segment>
Réutilisation
- Approche retenue pour limiter les coûts
IP :
- Conception d’un SOC à partir de blocs prédéfinis
Intellectual Properties
Programmable I/O
• 840 Mbps LVDS
Digital Clock Management
• Precise frequency generation and
phase control
• Both on-chip & off-chip clock synchronization
EmbeddedPowerPC
• 300 MHz
• 420 DMIPS
1000
- Prévision de répartition par secteur pour 2004 :
– Communication : 44% (croissance 24% par an) 800
Nb Soc
– Electronique grand public : 28 % (croissance 43% 600 (M)
par an)
400
– Le reste 28 %
200
- Les outils de conception évoluent moins vite
0
que la technologie 1995 2000 2005
Utilisation d’IP
Problématique
~ Spécification
~ Partitionnement
~ Co-synthèse
~ Co-simulation
~ Prototypage.
- Le bus Avalon est un bus de chez Altera utilisé pour le processeur embarqué Nios
- Les maîtres et esclaves du bus Avalon interagit ensemble avec une technique d’arbitrage appelé Slave-Side
- L’arbitrage Slave-side détermine lequel des maître gagne l’accès à l’esclave à un évènement ou plusieurs
maîtres tentent d’accéder au même temps à l’esclave.
Bus partagé
1. Master Interface
2. Slave Interface
SoC vs SoPC
• SoC
– Peu évolutif
– Grandes productions
– Fabrication et test long et coûteux
• System on Programmable Chip
– Prototypage rapide sur FPGA
– Composant reconfigurable à volonté
– Moins de portes logiques disponible
– Consommation plus élevée
– Performances moins bonnes
Processeur
Multiplieurs MEM SW ou HW
CPU
Resources Process Process
Matérielles HW HW
disponibles MEM
Resources Process
Matérielles HW
disponibles
Processeur Région
Transmetteurs
HW reconfigurable
T1 Une seule
* Temps de reconfiguration T4 T2 T3
** Contraintes Mémoires T9 Partition
T
6 T
5
T
*** Contraintes surfaces T8 1
T7 1 T
1
T
HW HW
Firm IP Process Process
Statique
Hard. IP
Soft. IP Resources
HLE RDP HW
programmable Process
disponibles
IP RDT variables
T1
T3 Partition(
T4 T2
T4 T9 1)
Surface
T6 T5
/Latence Graphe de tâche T8 T1
Partition(
T41 T43 T7
T1 n)
T42 T1
µP DRAM
Codeur Réseau
vidéo ASIC
Intégré
DSP SRAM
- Simulation fonctionnelle traditionnelle insuffisante surtout pour éviter les erreurs d’incompatibilité
dans les SoC
Langage
VHDL
Verilog Outil : Solver
PSL
PEC SVE: Siemens
ACL2: Texas Instrument Méthodologie
HOL: Université de Cambridge
ImPROVE-HDL : TNI-Valiosys
Assertions Simples
Génération d’une librairie
(Property/Environment Constraints)
(Assertion + Environnement)
Segmentation
de la vidéo
16 x histogrammes (Dim. 4)
-1 -2 -1 -1 0 1
Sx= 0 0 0 Sy= -2 0 2
1 2 1 -1 0 1
g ( x, y ) = f ( x , y ) * S x + f ( x, y ) * S y
g1( x, y ) = f ( x, y ) * S x
g1( x, y ) = ( f ( x, y ) + 2 f ( x − 1, y ) + f ( x − 2, y )) − ( f ( x, y − 2) + 2 f ( x − 1, y − 2) + f ( x − 2, y − 2))
g 2( x, y ) = f ( x, y ) * S y
g 2( x, y ) = ( f ( x, y ) + 2 f ( x, y − 1) + f ( x, y − 2)) − ( f ( x − 2, y ) + 2 f ( x − 2, y − 1) + f ( x − 2, y − 2))