Systèmes Embarqués Numériques

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