Séance 3, Méchanismes architecturaux avancés

publicité
CM Architecture Avancée
Parallélisme et mécanismes
architecturaux avancés
Laurent Rodriguez – Benoît Miramond
Parallélisme
●
Parallélisme d’instructions
–
–
–
Parallélisme temporel
Parallèlisme
Débit d’instructions
• Parallélisme de données
– SIMD
• Parallélisme de tâches
– Multithread
– Multi processeur
: pipeline
: VLIW et Superscalaire
: vectoriel
Plan
I.
II.
III.
IV.
V.
VI.
VII.
VIII.
Architectures Pipelinées
Architectures Superscalaires et VLIW
Architectures Vectorielles
Architectures Multi-thread
Interruptions
DMA
Cache
Exemple : Les processeurs graphiques (GPU)
I. Parallélisme d’instructions
1.1 La technique du pipeline
L'exécution complète d'une instruction dans un processeur met en jeu plusieurs unités du processeur (unité d'adressage, unité de décodage, unité d'exécution, etc...) qui ne sont pas toutes utilisées simultanément.
La technique du pipeline consiste à améliorer les performances du processeur en même temps que son rendement.
Le pipeline permet de superposer les sous­cycles d'exécution des instructions.
mémoire
mémoire
reg.
P
C
RI
@
WB
EX
Accès Instruction (IA)
Recherche Instruction (IF)
Stockage Instruction (IS)
Décodage opérandes (DI)
Calcul d'adresse (AC)
Accès mémoire (MA)
Exécution (EX)
Ecriture résultat (WB)
calcul
MA
1.
2.
3.
4.
5.
6.
7.
8.
AC
DI
IS
IF
IA
Cycles du
processeur
reg.
mémoire
mémoire
reg.
P
C
RI
reg.
@
Insertion de registres d'étages
(les niveaux du pipeline)
Les données et tous les signaux de
contrôle sont mémorisés et propagés à
chaque niveau
calcul
mémoire
mémoire
reg.
P
C
reg.
RI
Instruction i
@
:
IA
calcul
mémoire
mémoire
reg.
P
C
reg.
RI
Instruction i
Instruction i+1
@
:
:
IA
calcul
IF
IA
mémoire
mémoire
reg.
P
C
reg.
RI
Instruction i
Instruction i+1
Instruction i+2
@
:
:
:
IA
calcul
IF
IA
SI
IF
IA
mémoire
mémoire
reg.
P
C
reg.
RI
Instruction
Instruction
Instruction
Instruction
@
i
i+1
i+2
i+3
:
:
:
:
IA
calcul
IF
IA
SI
IF
IA
DI
SI
IF
IA
mémoire
mémoire
reg.
P
C
reg.
RI
Instruction
Instruction
Instruction
Instruction
Instruction
@
i
i+1
i+2
i+3
i+4
:
:
:
:
:
IA
calcul
IF
IA
SI
IF
IA
DI
SI
IF
IA
AC
DI
SI
IF
IA
mémoire
mémoire
reg.
P
C
reg.
RI
Instruction
Instruction
Instruction
Instruction
Instruction
Instruction
@
i
i+1
i+2
i+3
i+4
i+5
:
:
:
:
:
:
IA
calcul
IF
IA
SI
IF
IA
DI
SI
IF
IA
AC
DI
SI
IF
IA
MA
AC
DI
SI
IF
IA
mémoire
mémoire
reg.
P
C
reg.
RI
Instruction
Instruction
Instruction
Instruction
Instruction
Instruction
Instruction
@
i
i+1
i+2
i+3
i+4
i+5
i+6
:
:
:
:
:
:
:
IA
calcul
IF
IA
SI
IF
IA
DI
SI
IF
IA
AC
DI
SI
IF
IA
MA
AC
DI
SI
IF
IA
EX
MA
AC
DI
SI
IF
IA
mémoire
mémoire
reg.
P
C
Toutes les
unités du
processeur
sont utilisées à
100 %
reg.
RI
Instruction
Instruction
Instruction
Instruction
Instruction
Instruction
Instruction
Instruction
@
i
i+1
i+2
i+3
i+4
i+5
i+6
i+7
:
:
:
:
:
:
:
:
IA
calcul
IF
IA
SI
IF
IA
DI
SI
IF
IA
AC
DI
SI
IF
IA
MA
AC
DI
SI
IF
IA
EX
MA
AC
DI
SI
IF
IA
WB
EX
MA
AC
DI
SI
IF
IA
Effet du pipeline
L'effet du pipeline rentabilise l'utilisation du silicium
=> Augmentation du rendement silicium (proche de 100%)
Le pipeline augmente le débit des instructions sans modifier le temps d'exécution des instructions
=> augmentation de la fréquence d'exécution des instructions
=> augmentation de la performance de la machine
La présence du pipeline permet d'augmenter la fréquence apparente d'exécution des instructions
=> plus de niveaux, niveaux plus «courts», donc plus rapides
Exemple : Pentium IV = 20 niveaux de pipeline !!
1.2 Inconvénients du pipeline
1. Il est impossible d'assurer en permanence l'exécution d'une instruction par cycle d'horloge
Le débit effectif est inférieur à 1 inst/c (IPC < 1)
2. Un pipeline doit être rempli et vidé en cas de rupture de séquence
3. Il peut apparaître des dépendances entre les instructions dans le pipeline (les aléas de pipeline) :
●
Conflit d'accès à des ressources (aléas structurels)
●
Dépendances de données entre instructions (aléas de données)
●
Rupture de séquence (aléa de contrôle)
a. Cas des conflits de ressources
Un conflit de ressource se produit lorsque plusieurs instructions, dans des étages différents du pipeline, requièrent la même ressource.
C'est le cas systématique de l'accès à la mémoire :
mémoire
mémoire
reg.
P
C
reg.
RI
Instruction
Instruction
Instruction
Instruction
Instruction
Instruction
@
i
i+1
i+2
i+3
i+4
i+5
:
:
:
:
:
:
IA
IF
IA
calcul
SI
IF
IA
DI
SI
IF
IA
AC
DI
SI
IF
IA
MA
AC
DI
SI
IF
IA
Conflit d'accès
à la mémoire
Solutions aux conflits de ressources
Solutions aux conflits de ressources :
1. Détecter les cas et introduire une «bulle» dans le pipeline :

Diminution du IPC
2. Utiliser des ressources à accès multiples : 
mémoires double port (lecture/écriture) 
Mémoires caches distinctes (IC et DC) pour les conflits MA/IF

Utilisation d'une architecture Harvard (cas du DSP SHARC) b. Cas des conflits de données
Un conflit de données se produit lorsque plusieurs instructions dans le pipeline ont une dépendance de registre.
Ex :
ADDD
LOAD
R1, R2, #100
R3, R1
L'instruction LOAD nécessite la mise à jour de R1 avant de s'exécuter... impossible tant que l'instruciton ADD n'aura pas terminé son cycle d'exécution (avant l'étape WB).
Un conflit de données peut se produire également lors de l'exécution d'instructions multicyles dans le pipeline...
=> Réorganisation de l'ordre d'écriture des registres !
Exemple :
Instruction
ADD R1, R2, #100
LOAD R3, R1
0
IA
1
IF
IA
2
IS
IF
3
DI
SI
4
AC
.
5
MA
.
6
EX
.
7
WB
.
8
9
10
11
12
DI
AC
MA
EX
WB
Sans ressources additionnelles, insertion
de «bulles» dans le pipeline :
l'étape de recherche des opérandes
de l'instruction LOAD est retardée
Solutions aux conflits de données
Solutions aux conflits de données :
1. Détecter les cas et introduire une «bulle» dans le pipeline :

Diminution du IPC
2. Utiliser, lorsque c'est possible, des chemins de court­circuit dans le pipeline :
mémoire
ALU
reg.
c. Cas des aléas de contrôle
Un aléa de contrôle se produit lors de l'exécution d'instructions de branchement conditionnels, lorsque la condition n'est pas encore connue au moment de charger une nouvelle instruction dans le pipeline.
Ex : ADD R1, R2, #30
CALL routine
LOAD
R0, R4
ADD R5, R0, R2
Ces instructions sont déjà dans le
pipeline avant l'exécution de CALL
Solution : ●
Vider le pipeline avant de remplir avec les nouvelles instructions !
●
Utiliser des instructions de branchements retardés (cf. cours DSP SHARC)
Exemple :
BEQ
...
...
ADD
etiq
etiq
R4, R1, R2
Calcul de la condition et
de l'adresse de destination
Instruction
BEQ etiq
...
...
ADD R4, R1, R2
0
IA
1
IF
IA
.
2
IS
IF
IA
.
3
DI
SI
IF
IA
.
4
AC
.
5
MA
.
6
EX
.
7
WB
.
8
9
10
11
12
IA
.
IA
IF
IS
DI
AC
MA
EX
WB
Sous-utilisation du pipeline :
Les instructions ne doivent pas être
exécutées
(pas de modification memoire/état)
1.3 La prédiction des branchements
La majorité des ruptures de séquences par branchements inconditionnels se fait à des adresses constantes.
Pour éviter de vider/remplir les pipelines, on utilise la méthode de la prédiction des branchements :
●
Les adresses des branchements sont stockées dans une table, à l'image des mémoires cache des DSP
●
Une unité dédiée détecte les éventuels branchements et met à jour le PC par anticipation de l'adresse de destination
Valable aussi pour les branchements conditionnels, avec l'exécution spéculative des instructions : les instructions du branchement sont mises dans le pipeline avant de savoir si le branchement doit être pris ou non => algorithmes complexes de prédiction
Unité(s)
de calcul
Unité
d’adressage
Registres
@
mémoire
données
données
Unité de décodage
Unité
d’exécution
@
mémoire
programme
instructions
Adresse
prédite
PC
Table mise à jour automatiquement lors de
l'exécution
d'instructions de branchement :
Prédiction des adresses de branchement
Adresses de
destination
Adresses des
instructions de
branchement
Exemple :
Sans prédiction d'adresse :
Instruction
JUMP etiq
Instruction
0
IA
1
IF
.
2
IS
.
3
DI
.
4
AC
.
5
MA
IA
6
EX
IF
7
WB
IS
8
9
10
11
AC
MA
EX
WB
10
11
12
Calcul de l'@ de destination
Avec prédiction d'adresse :
Instruction
JUMP etiq
Instruction
0
IA
1
IF
IA
2
IS
IF
3
DI
IS
Prédiction de l'@ de
destination
4
AC
DI
5
MA
AC
6
EX
MA
7
WB
EX
8
WB
9
12
Exécution spéculative et prédiction
Dans le cas des branchements conditionnels, il n'est pas possible d'anticiper le calcul de l'adresse du branchement (dépend d'une condition à calculer).
Stratégie :
●
Exécuter spéculativement les instructions en «pariant» sur la valeur de la condition
✔
✔
●
Si pari gagnant : OK, pas de cycles perdus
Si pari perdu : insertion de bulles
Différents algorithmes de prédiction qui dépendent des cas (application, instructions)
➢
➢
➢
➢
Branchement toujours pris : valable pour les boucles (cas du traitement de signal ?)
Analyse à la compilation (profiling)
Prédiction dynamique par apprentissage en ligne (proc. modernes)
Efficacité en fonction des bonnes prédictions
1.4 Bilan pipeline
La présence du pipeline permet d'améliorer significativement les performances d'une unité de calcul avec des conséquences pour les architectures embarquées...
Sous­étapes plus simples = plus de niveaux de pipeline = fréquence de fonctionnement plus élevée
MAIS
puissance dissipée plus importante !
plus de niveaux de pipeline = plus d'aléas
ET
plus de ressources pour corriger les aléas
Compromis pour l'embarqué : rarement plus de 3 à 5 niveaux de pipeline.....
2 Les mémoires cache
Le principe consiste à interposer entre le processeur et la mémoire centrale une mémoire de taille plus petite mais beaucoup plus rapide (SRAM) ➢
les temps de cycle du processeur sont toujours plus courts que ceux de la mémoire principale (SDRAM) : +60%/an contre +9%/an.
Le processeur teste la présence de ses données dans le cache :
●
Donnée présente = succès = cache hit
●
Donnée non présente = défaut = cache miss
L'amélioration des performances dépend du taux de succès dans le cache (de l'algorithme de mise à jour du cache) et du temps d'accès au cache
Une mémoire cache exploite les propriétés de localité temporelle et spatiale des
données :
Localité temporelle
Une donnée adressée à l'instant t possède une forte probabilité d'être adressée
à nouveau dans un avenir proche
Localité spatiale
Si une donnée a été adressée à l'instant t, alors une donnée voisine possède
une forte probabilité d'être adressée dans un avenir proche
=> Les instructions d'un programme possèdent de fortes caractéristiques de
localité temporelle et spatiale (boucles, branchements courts)
Processeur
adresses
données
Table des
étiquettes
(CAM)
=
miss
Mémoire
hit
Blocs ou lignes
de cache
Utilisation des mémoires cache :
1) Avec l'augmentation du nombre de niveaux de pipeline et de la fréquence
de fonctionnement des processeurs, les cycles d'accès aux mémoires sont
de plus en plus courts. Les mémoires caches permettent d'accélérer les
accès à la mémoire.
2) Pipeline = 1 instruction par cycle = aléas de ressources (mémoire). Une
mémoire cache permet de résoudre une partie des aléas structurels dans
le pipeline (cas des DSP avec des caches «simples».)
Inconvénients :
➢
➢
➢
Les temps de calculs sont difficiles à anticiper : dépendance aux compilateurs
Gestion difficile de la cohérence des données (caches multiples)
Ressources supplémentaires pour la mise à jour des caches
Améliorer les performances
●
●
●
Passer en dessous de 1 instruction/cycle
Nécessite des processeurs à lancement multiple
Deux formes :
–
Superscalaire,
●
●
●
–
lancement d’un nombre variable d’instructions par cycle
Peuvent être ordonnancées statiquement par le compilateur
Ou dynamiquement (Algorithme de Tomasulo)
VLIW
●
Nombre fixe d’instructions codées dans un mot long
3 Les architectures VLIW
VLIW = Very Large Instruction Word
Les architectures VLIW intègrent plusieurs unités de calcul et peuvent effectuer plusieurs opérations simultanées
Typiquement : plusieurs opérations arithmétiques entières + opérations flottantes + opérations booléennes
Pipeline = au plus 1 instruction (opération) par cycle
VLIW = augmentation du OPS (Operation Per Cycle)
Instructions codées sur un nombre important de bits (jusqu'à 1024 bits !)
3 Les architectures VLIW : Pipeline
…
I1
I2
I3
I4
I5
…
ADD R1, R1, -2
FMUL R2, R1, 10
STORE R3, #100
JE R2, FinCode
LOAD R4, R1(4)
http://fr.wikipedia.org/wiki/Processeur_VLIW
mémoire
mémoire
reg.
reg.
Calcul
1
P
C
RI
VLI
W
@
Calcul
2
Calcul
3
Le codage des instructions
contient plus de champs
Reg et Op
Les bus d'accès aux registres sont
multipliés
(bancs de registres multiples)
Plusieurs unités de calcul
en parallèle
Calculs généralement de
registre à registre
mémoire
Op
1
P
C
mémoire
reg.
reg.
Calcul
1
Op
2
Op
3
@
RI
VLI
W
Calcul
2
Calcul
3
Le compilateur est chargé de détecter les parallélisme potentiel des opérations et de compacter le codage des instructions
Décodage des instructions pas nécessairement plus complexe
Toutes les opérations ne sont pas toujours parallèles : forte dépendance à l'application, au compilateur, rendement potentiellement faible !
Profondeur des pipelines inégales : optimisations très difficiles
Exemple de l'architecture du coeur
de DSP Texas C64x :
Jusqu'à 8 opérations simultanées
sur deux chemins
de données parallèles
●
Unité de calcul logique
●
Unité auxiliaire
●
Multiplieur
●
Unité de calcul entière
●
4 Les architectures superscalaires
Le principe des architectures superscalaires est de retarder au moment de l'exécution l'ordonnancement des instructions parallèles. VLIW = architectures EPIC (Explicit Parallelism Instruction computers) parallélisme d'instruction décidé à la compilation
Superscalaires à la compilation
= parallélisme des instruction non explicite Ces architectures reposent sur la mise en parallèle de plusieurs pipeline (4 à 9 aujourd'hui) non nécessairement synchronisés.
●
●
●
●
●
Récupération de plusieurs instructions
Pré­décodage (branchement ?)
Décodage, résolution des dépendances (manipulation des registres)
Répartition sur plusieurs pipelines (exécution dans le désordre)
Envoi aux unités de calcul
4 Les architectures superscalaires : Pipeline
HP PA-RISC :
●
VLIW + superscalaire degré 2
●
4 instructions/cycle max
●
1 unité entière
●
3 unités flottantes
UltraSPARC III :
●
Exécution dans l'ordre
●
Pipeline 14 étages
●
4 instructions/cycle max
●
6 unités fonctionnelles
Intel Itanium 2 :
●
Bi-coeur
●
109 transistors
●
Exécution dans l'ordre
●
6 instructions/cycle max
●
128 registres entiers
●
128 registres flottants
●
128 registres de condition
AMD Opteron :
●
Mode 64 bits
●
Exécution dans le désordre
●
9 instructions/cycle max
●
3 calculs entiers
●
3 calculs d'@
●
3 calculs flottants
5. Conclusion
Les architectures modernes combinent plusieurs facteurs d'optimisation des performances :
●
Pipeline
●
Mémoires caches
●
Mécanismes câblés (cf. DSP)
●
Instruction Level Parallelism : VLIW (MIMD)
●
Architectures superscalaires (SISD => MIMD)
Toutes ces technologies ont encore un coût exhorbitant dans le cas de l'embarqué (surface, fréquences, puissance dissipée)
L'avenir passe par la mise en parallèle de plusieurs processeurs autour de ressources d'interconnexion rapides => MPSOC
Architecture MPSoC (DiMITRI, Thalès)
DiMITRI SoC
AM
AM RF
RF
FM
FM RF
RF
Local
Local
D-memory
D-memory
64
64 KB
KB
DDC0
DDC1
Periph.
Periph.
DMA
DMA
System
System
timer
timer
Clock
Clock &
&
Power
Power
Ctrl
Ctrl
ARM920
ARM946
RISC
RISC Core
Core
RISC
RISC Core
Core
D-Cache
D-Cache
16
16 KB
KB
I-Cache
I-Cache
16
16 KB
KB
D-Cache
D-Cache
88 KB
KB
1/4
1/4 VGA
VGA
display
display
I-Cache
I-Cache
88 KB
KB
LCD
LCD
Ctrl
Ctrl
Multi-layer
Multi-layer AHB
AHB interconnection
interconnection matrix
matrix
Interrupt
Interrupt
Ctrl
Ctrl
Timers
Timers
Local
Local
I-memory
I-memory
32
32 KB
KB
ARM920
ARM920
data
data mem.
mem.
VITERBI
DECODER
Periph.
Periph.
bus
bus
bridge
bridge
Int.
Int. RAM
RAM
16KB
16KB
Ext.
Ext. mem.
mem.
Ctrl
Ctrl 00
ARM920
ARM920 instr.
instr.
mem.
mem.
Ext.
Ext. mem.
mem.
Ctrl
Ctrl 11
ARM946
ARM946
data
data mem.
mem.
Communication
Communication interfaces
interfaces
Memory
Memory
card
card
Ethernet
Ethernet
USB
USB
Debug
Debug
33
II22S
S
II22C
C
44
SPI
SPI
33
USART
USART
PIO
PIO
ARM946
ARM946 instr.
instr.
mem.
mem.
 DRM Chip Set 1G available
 Narrow band OFDM modem
 Source Codecs
 Direct RF conversion
 SoC Platform
 Dual-processor
(ARM920+ARM946)
 Coprocessors Viterbi, DDC
 Multi-layer AHB
 Full set of peripherals
(Ethernet, USB, Usart, SPI, I2C,
…)
 Characteristics
 0.18µm, 12 Mxtors 56mm2,
 avg. 600 mW (including
external memories)
 Package: PBGA 388
II. Augmentation du débit
d’instructions,
architecture vectorielle
Les processeurs vectoriels
●
●
●
Ces processeurs disposent d’instructions de
haut niveau qui travaillent sur des vecteurs
(tableaux linéaires).
Une instruction vectorielle typique est
l’addition de 2 vecteurs de 64 éléments en
virgule flottante
Ceci est équivalent à une boucle avec
–
–
Calcule un des 64 éléments
Mise à jour des indices
Propriétés
●
●
●
●
Le calcul de chaque résultat est indépendant du
calcul des résultats précédents, permettant un
pipeline très profond sans générer d’aléa de données
(géré par le compilateur)
Le besoin en bande passante instructions est réduit
(SIMD)
Les accès mémoire sont connus si les éléments du
vecteur sont tous adjacents
Plus rapide qu’une séquence d’instructions scalaires
Architecture de base
●
Constituée d’une unité
scalaire pipelinée et d’une
unité vectorielle
–
●
CRAY(CRAY-2, X-MP, Y-MP, C90), NEC, Fujitsu, Hitachi
L’architecture de gauche
(DLXV)
–
–
–
–
8 registres vectoriels
Des UAL vectoriels flottantes
Les 2 sont reliés par plusieurs
ports à un crossbar
32 registres scalaires
Code scalaire
double Y = a*X + Y
LD
ADDI
boucle :
LD
MULTD
LD
ADDD
SD
ADDI
ADDI
SUB
BNZ
F0, a
R4, tabx, #512
// dernière adresse
F2, 0(tabx)
// X[i]
F2, F0, F2
// a.X[i]
F4, 0(taby)
// Y[i]
F4, F2, F4
// a.X[i] + Y[i]
F4, 0(taby)
tabx, tabx, #8
// index X
taby, taby, #8 // index Y
R20, R4, tabx
// condition de fin
R20, boucle
Code Vectoriel
LD
LV
MULTSV
LV
ADDV
SV
F0, a
V1,tabx
V2, F0, V1// mult vecteur-scalaire
V3, taby
V4, V2, V3
taby, v4
Comparaison
●
Réduction du débit d’instructions : 6 contre
600
–
–
Opérations vectorielles
Absence de gestion de boucle (moitié des
instructions scalaires)
Temps d’exécution vectoriel
●
Dépend essentiellement de trois facteurs:
–
–
–
–
●
La longueur du vecteur
Le pas du vecteur
Les aléas structurels entre les opérations
Et les dépendances de données
Supposant des débits de 1 opérande
consommée et un résultat calculé par cycle
Tronçonnage de vecteur
m=(n mod MVL)
●
●
Calcul vectoriel de taille n supérieure à la longueur max du
vecteur du proc (MVL)
j varie de 0 à n/MVL, i est l’indice du vecteur de taille n
Temps d’exécution en fonction de la longueur du
vecteur
• Opération de multiplication scalaire A=B.s
• MVL = 64
• Temps total = temps de calcul d’un élément du vecteur
• Surcoût total = surcoût de temps de la boucle
64
128
196
Exemple, processeur CELL
(Playstation 3 )
●
●
●
Développé par les trois compagnies, le Cell est
un processeur doté d'une architecture multicore
et multithread 64 bits produit avec la technologie
90 nm SOI.
Optimisé pour les calculs intensifs en virgule
flottante et les applications multimédia haut
débit, tels que les jeux, films et autres contenus
numériques, il est capable de faire tourner
simultanément plusieurs système
d’exploitations, gérera les ressources système
en temps réels, sera doté d'une interface
d'entrée/sortie qualifiée de flexible et contiendra
un système de sécurité pour la protection des
propriétés intellectuelles.
Une station de travail Cell fournirait une
puissance de calcul de 16 teraflops selon le
trio.
Définitions
Tâche
●
[Au sens UNIX] Une tâche est un ensemble
d'instructions à exécuter. Une tâche peut
désigner aussi bien un processus regroupant
plusieurs threads, un ensemble de threads ou
quelques instructions.
Threads
●
[Au sens UNIX] Un thread est un flot
d'exécution de programme possédant un
compteur d'exécution, une pile et un contexte
d'exécution propre. Ils sont exécutés de
manière concurrente au processus qui les a
créé. Un thread peut accéder à la mémoire du
processus dont il est issu
Processus
●
[Au sens UNIX] Un processus regroupe un
ensemble de traitements appartenant à un
même espace d'adressage et supportant
plusieurs flots d'exécution de programme
(threads). Une application est un processus
Modèle d'exécution
Le modèle d'exécution d'une architecture décrit le
procédé d'exécution des processus sur cette
architecture. Il détaille la façon dont les processus
sont chargés en mémoire, exécutés puis restitués. Il
inclut l'ensemble des mécanismes d'exécution
comme le partage des données, les synchronisations
ou encore la gestion des entrées-sorties. Un modèle
d'exécution est une description détaillée du
fonctionnement de l'architecture.
Modèle de programmation
●
Le modèle de programmation s'intéresse
uniquement à la programmation de
l'architecture. Il décrit la façon dont les
processus doivent être explicités afin de
rendre possible leur transformation, par des
outils de compilation, en vue d’une exécution
sur cette architecture.
Architecture multithread
●
●
Une architecture multithread est un
processeur qui gère le changement de
contexte en matériel, réduisant ainsi le surcoût
du multithreading.
On distingue les MT
–
–
À gros grains (CMT) fournissant une instruction de
changement de contexte rapide
À grains fins (FMT) changeant de contexte
automatiquement à chaque instruction
Direct Memory Access
●
●
●
●
●
●
Device wishing to perform DMA asserts the processors bus request signal.
Processor completes the current bus cycle and then asserts the bus grant signal to the
device.
The device then asserts the bus grant ack signal.
The processor senses in the change in the state of bus grant ack signal and starts listening to
the data and address bus for DMA activity.
The DMA device performs the transfer from the source to destination address.
During these transfers, the processor monitors the addresses on the bus and checks if any
location modified during DMA operations is cached in the processor. If the processor detects a
cached address on the bus, it can take one of the two actions:
–
–
●
●
Processor invalidates the internal cache entry for the address involved in DMA write operation
Processor updates the internal cache when a DMA write is detected
Once the DMA operations have been completed, the device releases the bus by asserting the
bus release signal.
Processor acknowledges the bus release and resumes its bus cycles from the point it left off
Interrupt Handling
Here we describe interrupt handling in a scenario where the hardware does not support identifying
the device that initiated the interrupt. In such cases, the possible interrupting devices need to
be polled in software.
●
A device asserts the interrupt signal at a hardwired interrupt level.
●
The processor registers the interrupt and waits to finish the current instruction execution.
●
Once the current instruction execution is completed, the processor initiates the interrupt
handling by saving the current register contents on the stack.
●
The processor then switches to supervisor mode and initiates an interrupt acknowledge cycle.
●
No device responds to the interrupt acknowledge cycle, so the processor fetches the vector
corresponding to the interrupt level.
●
The address found at the vector is the address of the interrupt service routine (ISR).
●
The ISR polls all the devices to find the device that caused the interrupt. This is accomplished
by checking the interrupt status registers on the devices that could have triggered the
interrupt.
●
Once the device is located, control is transferred to the handler specific to the interrupting
device.
●
After the device specific ISR routine has performed its job, the ISR executes the "return from
interrupt" instruction.
●
Execution of the "return from interrupt" instruction results in restoring the processor state. The
processor is restored back to user mode
Synchronisation par DMA et
intérruptions
●
Software designers need to keep in mind that
DMA operations can be triggered at bus cycle
boundary while interrupts can only be
triggered at instruction boundary.
Téléchargement