Académique Documents
Professionnel Documents
Culture Documents
processeur DSP
• Accès mémoire et
E/S
• Unités du CPU
• Pipelining
1
Architecture générale d’un processeur
Processeur
CPU
Unité de Unités de
contrôle traitement
Bus internes
2
Accès à la mémoire
3
Rappels : Bus
4
Etapes d’une opération de calcul
2
1
3
CPU Mémoir
5
e
Mémoire
CPU BUS Programme
+ Données
6
Architecture Harvard
Mémoire Programme
CPU
Mémoire Données
7
Architecture Harvard modifiée
Mémoire
Mémoire Programme
Programme
+ Données
CPU
Mémoire Données
Mémoire
Programme
+ Données
CPU
Mémoire Données
Bus C
Mémoire Données
CPU b[0]…b[N-1]
x[0]…x[N-1]
Bus D
Pour l’opération
y[n] ← b[n] * x[n]
On souhaite récupérer b[n] et x[n]
mémoire:
- Mémoire à Simple Accès (SARAM) => 2 cycles
- Mémoire à Double Accès (DARAM) => 1 cycle
- Mémoire externe => temps de latence dépend de la qualité de la
mémoire 10
Architecture interne du CPU
11
Schéma de principe des échanges
CPU pilotag
e
Registres
Génératio Génératio et Unités
Séquenceu decalcul
n
adresses n
adresses
r
P D
programme
addr
Bus
dat
a
ctrl
addr
données
dat
Bus
a
ctrl
Mémoire P Mémoire D périphérique
s 12
Détail des unités
• Séquenceur
– Décodage des instructions
– Pilotage les autres unités
• Unité de génération d’adresse
programme
– Compteur de programme (PC)
– Gestion matérielle des boucles
• Unité de génération d’adresses données
– Adressage indirect efficace (*p++)
– Adressage circulaire, bit-reverse
• Unités de traitement
– Effectuent les calculs
– Registres pour résultats intermédiaires
13
Fetch (lecture instruction)
programme
addr
Bus
data
ctrl
addr
données
data
Bus
ctrl
Mémoire P Mémoire D
14
Read/Write (lecture/écriture donnée)
programme
addr
Bus
data
ctrl
addr
données
data
Bus
ctrl
Mémoire P Mémoire D
15
Diagramme bloc du TMS320C5416
Peripheral Bus
RND, SAT
Ch 2 Multichannel
de EXP Encoder Buffered Serial
Shifter Accumulators Ch 3 Port (McBSP)
calcul Multichannel
40-Bit Barrel 40-Bit ACC A
Ch 4 Buffered Serial
(-16, 31) 40-Bit ACC B Port (McBSP)
Ch 5 Multichannel
Addressing Unit Buffered Serial
Génératio Port (McBSP)
8 Auxiliary Registers PLL Clock
n Generator
2 Addressing Units
d’adresse S/W Waitstate
s Power Management Generator Entrée
s
CPU Sorties
16
Structure interne
du
TMS320C54x
Source : Texas
Instruments
TMS320C54x DSP
Reference Set
Vol 1 : CPU and
Peripherals 17
Zero overhead Adressage indirect :
looping Pré- et post-
incrémentation
automatique
Génération
d'adresses Génératio
Unité de controle programme n
d'adresse
s
données
Bus P
programme
Bus C / D
lecture
donnée
s
Bus E
écriture
donnée
s
4 bus : Accès simultané à 1 instruction + 2 opérandes + 1 59
écriture
Registre
s
ALU
Shifte
r
Viterbi
MAC
20
Pipelining
t1 t2 t3 t4 t5 t6 t7 t8 F1
- MemP
Instruction Instruction 1 Instruction 2
Fetch F1 F2
-
D1
CPU
Decode D1 D2
Read R1 R2 R1
- MemD
Execute X1 X2
X1
- MemD
Exécution
séquentielle
t1 t2 t3 t4 t5 t6 t7 t8 F4
F5 MemP
Fetch F1 F2 F3 F4 F5 … … …
Decode D1 D2 D3 D4 D5 … … D3
D4
CPU
Read R1 R2 R3 R4 R5 …
Execute X1 X2 X3 X4 X5 R2
R3 MemD
Amorçage du
pipeline X1
X2 MemD
Exécution avec pipeline : entrelacement des
instructions 22
Retards dans le pipeline
• Le pipeline atteint son plein rendement une fois
qu’il est amorcé
• Une retard peut se produire
– en cas de rupture de séquence (vidange du pipeline)
• branchement mal prédit
• appel de sous-programme
• interruption
– s’il existe un conflit de ressources (retard ponctuel,
“bulle” dans le pipeline)
• accès à la mémoire
• utilisation des bus
23
Exemple de rupture de séquence
Code à exécuter
1:
: Instr1
2: Si B==1 Alors GOTO …
10: 10 Instr1
3: Instr3 : 0
4: Instr4 11: Instr11
5: Instr5 12: Instr1
6: Instr6 … 2
D D1 D2 D3 D4 ! D10 D11 D D1 D2 D3 D4 D5 D6 …
R R1 R2 R3 ! ! R10 R R1 R2 R3 R4 R5 R6
X X1 X2 ! ! ! X X1 X2 X3 X4 X5
! Read R1 R2 ! ! R3
R4
Execute X1 X2 ! ! X3
Problème réglé si
Mémoire multi-accès
Programmes et Données dans des mémoires différentes (ou multi-bloc)
8
Effets du pipeline lors du débogage
Window
A 2
B 2
C 1
26
Résumé caractéristiques des DSP
28
Mesures des performances
Mesure le nombre d’opérations
Million Floating–Point arithmétiques à virgule flottante que le
MFLOPS DSP à virgule flottante peut réaliser
Operation Per
Second en une seconde
29
Performances pour une application
(benchmarking)
• Pour avoir une idée des performances concrètes des DSP,
seul reste le benchmarking
• Benchmarks effectués par des sociétés de conseil telles que
– Berkeley Design Technology Inc. (www.bdti.com)
– Embedded Microproc. Benchmark Consortium (www.eembc.org)
• Spécifications générales des benchmarks:
– SPEC95: couvre plusieurs domaines tels que les vocodeurs,
les modems,
les applications multimédia
Algorithme Standard
de Traitement du Signal
Temps d’exécution
Consommation
électrique
30
Architecture d’un
DSP 2171
• Architecture Générale
• UAL
• MAC
• Décaleur à Barillet
• Séquenceur
• Interruption
• Générateur d’adresse 31
Architecture générale d’un DSP 2171
32
Architecture générale d’un DSP 2171
Il s'agit d’un DSP à virgule fixe, dont les données sont sur 16 bits. Les nombres sont soit
entiers positifs (sans signe), soit en format 1.15. Pour ce format, le bit de poids fort
représente le signe et les 15 bits restants correspondent à un nombre décimal de module
inférieur ou égal à l’unité. Si ce nombre est négatif il sera en complément à 2.
Le bus de données de la mémoire programme (PMD bus) est sur 24 bits, le bus de
données de la mémoire de données (DMD) a une largeur de 16 bits, alors que les bus
d'adresses de la mémoire de données (DMA) ou de la mémoire de programme (PMA) sont
sur 14 bits.
38
Comportement d’un DSP 2171
- mise sous tension (enclenchement des alimentations) ;
− comportement du reset ;
− fréquence de l’horloge de base (composants externes) ;
− mise en veille basse consommation.
Un mauvais fonctionnement de l’un de ces points peut avoir un effet catastrophique sur le
comportement du système quel que soit le type de circuit (FPGA, microcontrôleur DSP, …).
39
UAL d’un DSP 2171
40
UAL d’un DSP 2171
Structure
L’ALU est constitué de deux ports d’entrées X et Y de 16 bits de largeur. Le
port de sortie R de 16 bits également correspond au résultat. Pour les calculs
en multiprécision, l’ALU accepte une entrée supplémentaire de retenue
nommée CI (Carry Input). Cette entrée est issue du registre d’état
arithmétique ASTAT. −
Le port d’entrée X de l’ALU accepte des données (16 bits) de deux sources,
soit du double registre AX (AX0 ou AX1) ou des registres liées au bus résultat
R-Bus. Ces registres peuvent être utilisés directement comme opérandes. Les
deux registres contenus dans AX peuvent être lus ou écrits depuis le bus
DMD. L’ensemble des instructions disponible permet également la lecture de
ces registres par le bus PMD, mais il n’y a pas de connexion directe. Ces
opérations utilisent l’unité de transfert de données entre le bus DMD (16
bits) et le bus PMD (24 bits). La sortie du registre AX, grâce à un double port,
peut être simultanément lue par le port d’entrée X et disponible sur le bus
DMD. 41
UAL d’un DSP 2171
− Le port d’entrée Y de l’ALU accepte également des données (16 bits) de
deux sources, soit du double registre AY (AY0 et AY1) ou du registre de «
feedback » AF. Les deux registres contenus dans AY peuvent être lus ou écrits
depuis le bus
DMD ou écrits directement depuis le bus PMD. L’ensemble des instructions
disponibles permet également la lecture de ces registres par le bus PMD mais
dans ce cas c’est l’unité de transfert de données entre le bus DMD (16 bits) et
le bus PMD (24 bits) qui est utilisée. La sortie registre AY, grâce à un double
port, peut être simultanément lu par le port d’entrée Y et disponible sur le
bus DMD.
42
UAL d’un DSP 2171
− Le port de sortie R de l’ALU est connectée au registre de « feedback » AF et au registre
de résultat AR. La sortie registre AR, grâce à un double port, peut simultanément être
envoyée au bus résultat R-Bus et au bus DMD. L’ensemble des instructions disponible
permet également la lecture du registre AR par le bus PMD, mais il n’y a pas de connexion
directe. Cette opération utilise l’unité de transfert de données entre le bus DMD (16 bits)
et le bus PMD (24 bits).
N’importe quel registre associé à L’ALU peut être lu et écrit dans un même cycle d’horloge.
Les registres sont lus au début du cycle et écrits à la fin du même cycle. Dans un cycle
donné, la valeur contenue dans un registre quelconque a été chargée à la fin du cycle
précédent. Par conséquent, une nouvelle valeur écrite dans un registre ne peut pas être
lue avant le début du cycle suivant. Cette caractéristique permet à un registre de fournir
un opérande sur une entrée de l’ALU au début d’un cycle et être rafraîchit par un nouvel
opérande issu de la mémoire à la fin du cycle. Ceci permet aussi de stocker en mémoire le
contenu d’un registre résultat et de rafraîchir ce dernier par un nouveau résultat issu de
l’ALU dans le même cycle.
Les registres de l’ALU sont doubles (2 banks). Seul un bank est accessible à la fois. Le
second bank peut être activé, par exemple dans un sous-programme ou une routine
d’interruption, ce qui évite le stockage des données contenues dans les registres. La
sélection du bank primaire ou secondaire est commandée par le bit MSTAT[0] ).
43
UAL d’un DSP 2171
Fonctions standards de l’UAL
Les fonctions standards de l’ALU sont les suivantes (R=AR ou AF) :
R = X+Y : Addition simple
R = X+Y+CI : Addition avec retenue sur 1 bits
R = X-Y : Soustraction simple
R = X-Y+CI-1 : Soustraction avec retenue et décalage de 1 bit
R = Y-X : Soustraction simple
R = Y-X+CI-1 : Soustraction avec retenue et décalage de 1 bit
R = -X : Changement de signe de X (complément à deux)
R = -Y : Changement de signe de Y (complément à deux)
R = Y+1 : Incrémentation de Y par 1
R = Y-1 : Décrémentation de Y par 1
R = PASS X : Passe X dans R avec modification des flags AZ et AN
44
UAL d’un DSP 2171
Fonctions standards de l’UAL
R = PASS Y : Passe Y dans R avec modification des flags AZ et AN
R = 0 (PASS 0) : Mise à zéro de R
R = ABS X : Valeur absolue de X avec modification du flag AS
R = X AND Y : ET logique bit à bit entre X et Y
R = X OR Y : OU logique bit à bit entre X et Y
R = X XOR Y : OU exclusif logique bit à bit entre X et Y
R = NOT X : NON logique bit à bit de X (complément à 1)
R = NOT Y : NON logique bit à bit de Y (complément à 1)
45
UAL d’un DSP 2171
Les registres connectés aux ports de l’ALU sont les suivants :
46
UAL d’un DSP 2171
Calculs simple précision
47
UAL d’un DSP 2171
Mode saturation ou limitation de l’ALU
Le fonctionnement de l’ALU suppose l’absence de saturation ce
qui correspond à des données ne pouvant varier (en format 1.15)
que de 1000 0000 0000 0000 (valeur la plus négative), pour
laquelle AV=AC=1, à la valeur 0111 1111 1111 1111 (valeur la
plus positive), pour laquelle AV=1 et AC=0
48
UAL d’un DSP 2171
Bits d’état de l’ALU
Les bits d’état définis dans le registre d’état arithmétique ASTAT
sont les suivants :
49
MAC d’un DSP 2171
50
MAC d’un DSP 2171
Structure
Le multiplicateur est constitué de deux ports d’entrée X et Y de 16 bits de
largeur. Le port de sortie P de 32 bits correspond au résultat. Ce résultat
passe ensuite au travers d’un additionneur / soustracteur de 40 bits, lequel
peut ou non ajouter ou soustraire au résultat le contenu du registre MR. Le
résultat global est ensuite chargé dans le registre MR par une remise à jour.
Le registre MR de sortie est constitué de trois registres, deux de 16 bits MR0
et MR1 et un de 8 bits, MR2.
51
MAC d’un DSP 2171
Port d’entrée X
Le port d’entrée X du MAC accepte des données (16 bits) de deux sources,
soit du double registre MX (MX0 ou MX1) ou des registres liées au bus
résultat R-Bus. Ces registres peuvent être utilisés directement comme
opérandes. Les deux registres contenus dans MX peuvent être lus ou écrits
depuis le bus DMD. La sortie registre MX, grâce à un double port, peut être
simultanément lu par le port d’entrée X et disponible sur le bus DMD.
Port d’entrée Y
Le port d’entrée Y du MAC accepte également des données (16 bits) de deux
sources, soit du double registre MY (MY0 et MY1) ou du registre de «
feedback » MF. Les deux registres contenus dans MY peuvent être lus ou
écrits depuis le bus DMD, ou écrits directement depuis le bus PMD.
L’ensemble des instructions
disponibles permet également la lecture de ces registres par le bus PMD mais
dans ce cas c’est l’unité de transfert de données entre le bus DMD (16 bits) et
le bus PMD (24 bits) qui est utilisée. La sortie registre MY, grâce à un double
port, peut être simultanément lu par le port d’entrée Y et disponible sur le 52
MAC d’un DSP 2171
Port de sortie de MAC
- Le port de sortie P du MAC (32 bits) est connecté au 32 bits de poids faibles
de l’additionneur / soustracteur de 40 bits, la seconde entrée n’est rien
d’autre que les registres MR2, MR1, MR0.
L’additionneur / soustracteur a deux entrées, l’une de 32 bits directement
connectée à la sortie du multiplicateur, l’autre de 40 bits permet la lecture
du registre MR.
53
MAC d’un DSP 2171
Les sorties de l’additionneur / soustracteur
Les sorties de l’additionneur / soustracteur vont soit au registre de résultat MR soit au
registre de « feedback » MF. Le registre MF permet aux bits 16 à 31 du résultat d’être
directement utilisés par l’entrée Y du multiplicateur lors du prochain cycle de
l’horloge. Le registre de résultat est constitué de trois registres, deux de 16 bits (MR0
et MR1) et un de 8 bits (MR2). Ces registres peuvent être chargés directement par le
bus DMD. Leurs sorties sont directement connectées (driver tri-state) au bus DMD ou
au bus résultat R.
N’importe quel registre associé au MAC peut être lu et écrit dans un même cycle
d’horloge.
Les registres sont lus au début du cycle et écrits à la fin du même cycle. Dans un cycle
donné, la valeur contenue dans un registre quelconque a été chargée à la fin du cycle
précédent. Par conséquent, une nouvelle valeur écrite dans un registre ne peut pas
être lue avant le début du cycle suivant. Cette caractéristique permet à un registre de
fournir un opérande sur une entrée du MAC au début d’un cycle et être rafraîchit par
un nouvel opérande issu de la mémoire à la fin du cycle. Ceci permet aussi de stocker
en mémoire le contenu d’un registre résultat et rafraîchir ce dernier par un nouveau
résultat issu du MAC dans le même cycle.
54
MAC d’un DSP 2171
Fonctions standards de MAC
Les fonctions standards du MAC sont les suivantes (R=MR ou MF) :
R = X*Y : Multiplication simple
R = MR+X*Y : Multiplication et accumulation additive
R = MR-X*Y : Multiplication et accumulation soustractive
R= 0 : Mise à zéro du résultat (MR)
La famille des ADSP21xx permet deux modes pour le multiplicateur /
accumulateur, soit le mode fractionnaire (1.15) et le mode entier (16.0).
En mode fractionnaire 32 bits le port de sortie P du multiplicateur subit un
ajustement de format par un décalage de 1 bit vers la gauche (LSB mis à « 0
») afin de supprimer l’extension inutile du bit de signe avant de passer dans le
bloc additionneur / soustracteur.
En mode entier, aucun décalage n’est nécessaire avant de passer dans le bloc
additionneur / soustracteur.
Les modes entier ou fractionnaire sont validés par le bit MSTAT[4] du registre
d’état des modes de fonctionnement (MSTAT).
55
MAC d’un DSP 2171
Format d’entrée des opérandes
Afin de facilité les multiplications multiprécision, l’unité MAC accepte sur ces
ports d’entrées X et Y des nombres entiers ou fractionnaires, signés
(complément à deux) ou non signés.
La définition des formats d’entrées fait partie intégrante de l’instruction et
doit être précisée pour chaque multiplication.
57
MAC d’un DSP 2171
Registres d’entrées et de sortie du MAC
58
MAC d’un DSP 2171
Mode saturation ou limitation du MAC
L’additionneur / soustracteur du MAC génère un signal d’état de
dépassement de capacité (MV), lequel est chargé dans le registre d’état
arithmétique ASTAT[6] à la fin de chaque opération exécutée dans le MAC.
Le résultat placé dans les registres MR (MR2, MR1, MR0) est considéré
comme un mot signé de 32 bits. Un dépassement de capacité peut donc
être détecté si les 8 bits du registre MR2 ne sont pas tous égaux et
identiques au bit de poids fort (MSB) du registre MR1.
59
Décaleur À BARILLET (BARREL SHIFTER) d’un DSP
2171
60
Décaleur À BARILLET (BARREL SHIFTER) d’un DSP
2171
Structure
Cette unité de décalage peut être décomposée en quatre
zones distinctes :
- la zone de décalage (shifter array) ;
- la zone de fonction logique OU / PASSE (OR /PASS) ;
- la zone de détection de l’exposant (exponent detector) ;
- la zone de comparaison logique d’exposant (exponent COMPARE logic).
61
Décaleur À BARILLET (BARREL SHIFTER) d’un DSP
2171
Structure
Les blocs de décalage et la logique associée sont contrôlés par l’ensemble de
registres suivants :
− Le registre SI fournit la grandeur de 16 bits à décaler à l’entrée du bloc de
décalage et à l’entrée du détecteur d’exposent. Ce registre de 16 bits peut
être lu et écrit directement par le bus DMD. Comme le montre la structure
générale du décaleur à barillet, les entrées du bloc décaleur et du détecteur
d’exposent peuvent également provenir des registres connectés au bus de
résultat (R-bus), soit MR, AR, SR.
− Le registre SR, connecté à la sortie de bloc de décalage via le bloc logique
OR / PASS est un registre de 32 bits divisé en deux registres de 16 bits SR0 et
SR1. Ces deux registres peuvent être chargés par le bus DMD et lus soit par le
même bus ou par le bus résultat R. Le registre SR peut également être utilisé
en «feedback » comme entrée du bloc logique OR / PASS pour les décalages
en double précision.
62
Décaleur À BARILLET (BARREL SHIFTER) d’un DSP
2171
Structure
Le registre SE (Shifter exponent) a une largeur de 8 bits et contient l’exposent
du nombre contenu dans SI durant une opération de normalisation
/dénormalisation. Le registre SE peut être lu et écrit par le bus DMD (8 bits
LSB). Son contenu est un nombre binaire en complément à deux de format
8.0 (entier signé). En lecture les bits de poids forts (8 bits MSB) représentent
l’extension du signe de la valeur de SE
− Le registre SB (Shifter block) est important pour les opérations en virgule
flottante. Il contient la valeur de décalage nécessaire à la normalisation du
nombre contenu dans SI.
Le registre SB peut être lu et écrit par le bus DMD (5 bits LSB). Son contenu
est un nombre binaire en complément à deux de format 5.0 (entier signé). En
lecture les bits de poids forts (11 bits MSB) représentent l’extension du signe
de la valeur de SI
63
Décaleur À BARILLET (BARREL SHIFTER) d’un DSP
2171
Registres d’entrées et de sortie du décaleur à barillet
64
Décaleur À BARILLET (BARREL SHIFTER) d’un DSP
2171
Opération de décalage
Le décaleur à barillet exécute les fonctions suivantes :
65
Décaleur À BARILLET (BARREL SHIFTER) d’un DSP
2171
Ajustement de l’exposant EXPADJ:
Cette fonction détecte le plus grand exposant entre un ensemble de
nombres.
Décalage immédiat
Un décalage immédiat permet simplement de décaler un mot de 16 bits soit
vers la gauche (left : upshift) soit vers la droite (right : downshift) d’un
nombre entier de bits. Le nombre contrôlant le décalage est un nombre signé
de 8 bits. Le registre SE n’est ni utilisé ni modifié par une opération de
décalage immédiat.
Dénormalisation
L’opération de dénormalisation effectue le décalage d’une mantisse en
fonction de son exposant, ce dernier se trouvant dans le registre SE. Il s’agit
donc d’une opération permettant de passer un nombre en virgule flottante
en virgule fixe. La valeur du décalage doit être explicitement chargée ou être
le résultat d’une ou de plusieurs opérations précédentes. 66
Décaleur À BARILLET (BARREL SHIFTER) d’un DSP
2171
Normalisation
Les nombres avec un nombre de bits de signe redondant peuvent être
normalisés. Il s’agit ni plus ni moins que d’une conversion entre les
représentations en virgule fixe et virgule flottante. L’opération de
normalisation se déroule en deux étapes. La première permet de connaître la
valeur de l’exposant en observant les nombres de bits d’extension de signe et
la deuxième permet grâce à des décalages de normaliser la mantisse du
même nombre. Pour la seconde partie de l’opération, le nombre issu de la
détection de l’exposant est chargé dans le registre SE, puis grâce à
l’instruction NORM, permet le contrôle du décalage de la mantisse en
utilisant la valeur contenue dans SE mais changée de signe (bloc NEGATE).
67
Séquenceur de programme d’un DSP 2171
68
Séquenceur de programme d’un DSP 2171
Caractéristique
Le séquenceur de programme de l'ADSP2171 crée les adresses des
instructions à exécuter et gère les divers contrôles de fonctionnement du
programme.
Les instructions sont adressées grâce au bus PMA et les données programme
correspondant à ces adresses sont envoyées vers le registre des instructions.
Le compteur de programme (Program Counter incrémenter ou PC
incrémenter) permet l'adressage de manière progressive et ordonnée des
instructions du programme principal.
69
Séquenceur de programme d’un DSP 2171
71
Instruction de contrôle de séquence de programme
72
Instruction de contrôle de séquence de programme
73
Instruction de contrôle de séquence de programme
75
Les interruptions
76
Les interruptions
77
Gestion des piles à l’aide des instructions PUSH et
POP
Les pointeurs des piles de programme (PC stack), d’état (Status stack) et de boucle
(Loop
Stack) peuvent être modifiés par les instructions suivantes :
PUSH STS incrémente le pointeur de pile d’état (Status Stack) de manière à pointer le
prochain emplacement disponible. Les registres d’état arithmétique (ASTAT), de mode de
fonctionnement (MSTAT) et de masquage des interruptions (IMASK) sont sauvés dans la
pile d’état. PUSH STS est exécutée automatiquement lorsqu’une interruption est activée.
POP STS décrémente le pointeur de pile d’état (Status Stack) de manière à pointer le
prochain emplacement disponible. Les registres d’état arithmétique (ASTAT), de mode de
fonctionnement (MSTAT) et de masquage des interruptions (IMASK) sont mis a jour avec le
contenu des emplacements respectifs de la pile d’état. PUSH STS est exécutée
automatiquement lors d’un retour d’interruption (RTI).
POP PC et POP LOOP décrémente le pointeur de pile de programme (PC Stack) mais dans
ce cas l’information contenue dans la pile est perdue.
78
Registres d’état et de contrôle
D’autre part, les registres de contrôle des interruptions sont les suivants
79
Registres d’état et de contrôle
80
Registres d’état et de contrôle
81
Registres d’état et de contrôle
82
Registres d’état et de contrôle
83
Registres d’état et de contrôle
84
Registres d’état et de contrôle
85
Générateurs d’adresses (Data Address Generators)
86
Générateurs d’adresses (Data Address Generators)
87
Générateurs d’adresses (Data Address Generators)
Chaque bloc de registre contient quatre registres de 14 bits qui peuvent être lus ou écrit
via le bus DMD. Le contenu des registres I et L est considéré comme non-signés, par
conséquent
les deux bits MSB du bus DMD sont mis à « 0 ». Par contre les registres M contiennent
des
grandeurs signées, les deux bits MSB du bus DMD prennent des valeurs correspondant
à
l’extension du signe.
− Les registres pointeurs I0 à I3 pour l’unité DAG1 et I4 à I7 pour l’unité DAG2
contiennent les adresses réelles utilisées pour accéder à des positions mémoire. Lors
d’un adressage en mode indirect l’adresse stockée dans le registre sélectionné Ix
devient l’adresse de la mémoire.
Pour l’unité DAG1, l’adresse générée passe à travers une logique permettant l’inversion
de bit. Cette caractéristique est activée en forçant le bit MSTAT[1] à « 1 » ou
en utilisant l’instruction EN BIT_REV. De plus, la sortie de cette unité n’est connectée
qu’au bus d’adresses de la mémoire de donnée DMA.
88
Générateurs d’adresses (Data Address Generators)
Pour l’unité DAG2, l’adresse générée peut activer les deux bus d’adresses, soit les bus
DMA et PMA.
− Les registres de modification (M), désignés par M0 à M3 pour l’unité DAG1 et M4 à
M7 pour l’unité DAG2 contiennent les incréments algébriques (grandeurs signées) à
ajouter aux registres pointeurs I juste après un adressage effectif. Les registres (M) de
l’unité DAG1 ne peuvent pas commander les registres (I) de l’unité DAG2 et
réciproquement. Par contre n’importe quel registre de modification M d’une unité peut
commander n’importe quels registres pointeurs de la même unité.
89
Architecture d’un
BF533
• Architecture Générale
• UAL
• MAC
• Décaleur à Barillet
• Séquenceur
• Interruption
• Générateur d’adresse 90
Architecture générale d’un DSP BF533
Noyau MSA
Le principal avantage du noyau MSA (Micro Signal Architecture) réside dans la
fonctionnalité intégrée qui associe traitement multimédia, communication et interface
utilisateur sur une plate-forme unique facile à programmer. Ce noyau MSA hautement
polyvalent effectue des tâches DSP ainsi que des commandes utilisateur et des tâches de
contrôle. L'environnement de programmation comporte de nombreuses fonctionnalités
qui sont connues des programmeurs de microcontrôleurs et de DSP, accélérant ainsi
considérablement le développement de systèmes embarqués.
L'architecture MSA est également conçue pour fonctionner sur une large gamme de
vitesses d'horloge et de tensions de fonctionnement et comprend des circuits pour
assurer des transitions stables entre les états de fonctionnement. Un circuit de gestion
dynamique de l'alimentation surveille en permanence le logiciel en cours d'exécution sur
le processeur et ajuste de manière dynamique à la fois la tension fournie au noyau et la
fréquence à laquelle il s'exécute. Il en résulte une consommation d'énergie et des
performances optimisées pour les applications en temps réel.
Le processeur BlackFin ADSP-BF5xx est une famille de processeurs à virgulr fixe 16 bits
basés sur le cœur MSA. Ce processeur cible les applications sensibles à la consommation,
telles que les lecteurs audio portables, les téléphones cellulaires et les appareils photo
numériques. Blackfin est également adapté aux applications gourmandes en ressources
informatiques, notamment les équipements vidéo et les téléphones cellulaires 91de
troisième génération.
Architecture générale d’un DSP BF533
Noyau MSA
La première génération de la famille BF5xx est le BF535, qui atteint une vitesse d'horloge
allant jusqu'à 350 MHz à 1,6 V. Analog Devices a introduit trois familles de processeurs
(BF532, BF533 et BF561) en 2003. Ces processeurs peuvent fonctionner jusqu'à 750 MHz à
1,45 V. La vitesse d'horloge et les tensions de fonctionnement peuvent être commutées
dynamiquement pour des tâches données via un logiciel permettant d'économiser de
l'énergie. Le processeur BF561 intègre deux cœurs MSA pour améliorer les performances
lors du traitement en parallèle. Une version récente de la famille BF5xx est composée de
BF534, BF536 et BF537. Ces processeurs ajoutent une connectivité Ethernet intégrée et un
réseau de contrôleur au processeur Blackfin.
Le noyau Blackfin combine des MACs, un jeu d'instructions orthogonales ressemblant à un
ordinateur à instructions réduites (RISC), des fonctions de programmation à instruction
unique, SIMD (données multiples) et des fonctions de traitement multimédia dans une
architecture unifiée.
92
Architecture générale d’un DSP BF533
Noyau MSA
Le processeur Blackfin BF533 comprend des périphériques système tels qu'une interface
périphérique parallèle (PPI), une interface périphérique série (SPI), des ports série
(SPORT), des temporisateurs universels, un émetteur-récepteur universel asynchrone
(UART), horloge temps réel (RTC), horloge de surveillance et ports d’entrée / sortie (I / O)
à usage général. Outre ces périphériques système, le processeur Blackfin dispose
également d’un contrôleur DMA (accès direct à la mémoire) qui transfère efficacement les
données entre les périphériques / mémoires externes et les mémoires internes sans
intervention du processeur. Les processeurs Blackfin fournissent une mémoire cache L1
pour un accès rapide aux données et aux instructions.
En résumé, les processeurs Blackfin disposent de supports périphériques riches, d'une
unité de gestion de la mémoire (mmu) et d'instructions de type RISC, généralement
utilisées dans de nombreux microcontrôleurs haut de gamme.
93
Architecture générale d’un DSP BF533
Unité arithmétique de données
95
Architecture générale d’un DSP BF533
Unité arithmétique de données
96
Architecture générale d’un DSP BF533
Opération d'ajout / soustraction simple sur 16 bits
Deux registres quelconques de 16 bits (par exemple, R1.L et R2.H) peuvent être
ajoutés ou soustraits pour former un résultat de 16 bits, qui est stocké dans un
autre registre de 16 bits, par exemple, R3.H = R1.L+R2.H(ns), comme indiqué
dans la figure suivante. Notez que pour l'arithmétique sur 16 bits, un ou des
drapeaux à saturation ou un drapeau à non saturation (ns) doivent être placés à
la fin de l'instruction. Le symbole “;” indique la fin de l'instruction. Le processeur
Blackfin fournit deux unités ALU permettant d'effectuer deux opérations d'ajout
/ soustraction de 16 bits en un seul cycle. Cette double opération d'ajout /
soustraction de 16 bits double le débit arithmétique par rapport à l'opération
d'ajout / soustraction de 16 bits. 97
Architecture générale d’un DSP BF533
Opérations d'addition / soustraction doubles sur 16 bits
Deux registres de 32 bits quelconques peuvent être utilisés pour stocker quatre
entrées pour des opérations doubles d’addition / soustraction de 16 bits, et les
deux résultats de 16 bits sont sauvegardés dans un seul registre de 32 bits.
Comme le montre la figure suivante, l'instruction R3 = R1+|-R2 effectue
l'addition simultanément dans les moitiés supérieures de R1 et R2 et la
soustraction dans les moitiés inférieures de R1 et R2. Les résultats sont stockés
dans les mots haut et bas du registre R3, respectivement.
98
Architecture générale d’un DSP BF533
Opérations simples 32 bits
Le résultat de 32 bits de l'opération d'addition / soustraction de 32 bits est stocké dans un autre registre de 32 bits.
Par exemple, l'instruction R3 =R1+R2 effectue une addition sur 32 bits de R1 et R2 et place le résultat dans R3 comme illustré à la figure suivante.
Semblable à la double addition / soustraction 16 bits, la double addition / soustraction 32 bits peut également être effectuée
avec les doubles ALU 40 bits.
Par exemple, les instructions R3 = R1+R2, R4 = R1-R2 effectuent l'addition et la soustraction simultanées de R1 et R2 avec le résultat de l'addition
enregistré dans R3 et le résultat de la soustraction stocké dans R4, comme illustré à la figure suivante.
Dans les exemples ci-dessus d'opérations ALU, nous ajoutons / soustrayons des données dans une longueur de mot de 16 ou 32 bits.
Les résultats risquent de déborder en raison de la longueur de mot limitée utilisée.
99