Parallélismes

publicité
Parallélisme et mécanismes
architecturaux avancés
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
@
calcul
WB
1. Accès Instruction (IA)
2. Recherche Instruction (IF)
3. Stockage Instruction (IS)
4. Décodage opérandes (DI)
5. Calcul d'adresse (AC)
6. Accès mémoire (MA)
7. Exécution (EX)
8. Ecriture résultat (WB)
EX
MA
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
RI
reg.
@
Instruction i :
calcul
IA
mémoire
mémoire
reg.
P
C
RI
reg.
@
Instruction i :
Instruction i+1
calcul
IA
:
IF
IA
mémoire
mémoire
reg.
P
C
RI
reg.
@
Instruction i :
Instruction i+1
Instruction i+2
calcul
IA
:
:
IF
IA
IA
SI
IF
mémoire
mémoire
reg.
P
C
reg.
RI
@
Instruction
Instruction
Instruction
Instruction
i :
i+1
i+2
i+3
calcul
IA
:
:
:
IF
IA
IA
IA
SI
IF
IF
DI
SI
mémoire
mémoire
reg.
P
C
reg.
RI
@
Instruction
Instruction
Instruction
Instruction
Instruction
i :
i+1
i+2
i+3
i+4
calcul
IA
:
:
:
:
IF
IA
IA
IA
IA
SI
IF
IF
IF
DI
SI
SI
AC
DI
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
calcul
IA
:
:
:
:
:
IF
IA
IA
IA
IA
IA
SI
IF
IF
IF
IF
DI
SI
SI
SI
AC
DI
DI
MA
AC
mémoire
mémoire
reg.
P
C
reg.
RI
@
calcul
Instruction i :
IA
IF
SI
DI
AC
MA EX
Instruction i+1
:
IA
IF
SI
DI
AC MA
Instruction
Instruction
Instruction
Instruction
Instruction
:
:
:
:
:
IA
IA
IA
IA
IA
IF
IF
IF
IF
SI
SI
SI
DI
DI
AC
i+2
i+3
i+4
i+5
i+6
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
:
:
:
:
:
:
:
IF
IA
IA
IA
IA
IA
IA
IA
calcul
SI
IF
IF
IF
IF
IF
IF
DI
SI
SI
SI
SI
SI
AC
DI
DI
DI
DI
MA EX WB
AC MA EX
AC MA
AC
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/s (IPC < 1)
1. Un pipeline doit être rempli et vidé en cas de rupture de séquence
2. 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
IA
IA
IA
IA
calcul
SI
IF
IF
IF
IF
DI
SI
SI
SI
AC
DI
DI
MA
Conflit
AC
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
Registres
Unité
d’adressage
@
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
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
10
11
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 !)
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.
Calcul
1
Op
2
Op
3
reg.
@
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 computers)
= architectures EPIC (Explicit Parallelism Instruction Superscalaires = parallélisme des instruction non explicite à la compilation
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
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 (MPMD ?)
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 RF
FM RF
Local
D-memory
64 KB
DDC0
DDC1
Periph.
DMA
System
timer
Clock &
Power
Ctrl
ARM920
ARM946
RISC Core
RISC Core
D-Cache
16 KB
I-Cache
16 KB
D-Cache
8 KB
I-Cache
8 KB
1/4 VGA
display
LCD
Ctrl
Multi-layer AHB interconnection matrix
Interrupt
Ctrl
Timers
Local
I-memory
32 KB
ARM920
data mem.
VITERBI
DECODER
Periph.
bus
bridge
Int. RAM
16KB
Ext. mem.
Ctrl 0
ARM920
instr. mem.
Ext. mem.
Ctrl 1
ARM946
data mem.
Communication interfaces
Memory
card
Ethernet
USB
Debug
3
I2S
I2C
4
SPI
3
USART
PIO
ARM946
instr. 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
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,
C-90), 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/sorte 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