Vous êtes sur la page 1sur 36

Processeurs de Traitement Processeurs de Traitement

Numérique du Signal (DSP) Numérique du Signal (DSP)

Olivier Sentieys I. Introduction


IRISA/ENSSAT Lannion II. Architectures MAC/Harvard
Université de Rennes I
III. Evolutions des DSP
sentieys@irisa.fr
http://www.irisa.fr/R2D2 IV. Flot de développement

Merci à Daniel Ménard pour son support

• Performances
Exemples d’applications • Faible coût
• Faible énergie

I. Introduction ƒ Téléphonie cellulaire ƒ Communications satellite


ƒ Communications sans-fil ƒ Analyse sismique
ƒ Contrôle de moteur ƒ Sécurité
ƒ Modems ƒ Reconnaissance vocale
1. Contexte applicatif ƒ Voix sur Internet ƒ Sonar, radar
2. Caractéristiques algorithmiques ƒ Audio grand public ƒ Photo et caméra
ƒ Navigation numériques
3. Solutions architecturales
ƒ Vidéoconférence ƒ Débruitage, écho
4. Marché des DSP ƒ Jouets, consoles vidéo ƒ Anticollision
ƒ Synthèse musicale, effets ƒ …
ƒ Médical ƒ et pleins d’autres à venir

ARCHI’05 - 4
Tâches élémentaires Algorithmes de TdSI1
1Traitement du signal et de l’image
ƒ Compression de signal (parole, audio, vidéo) ƒ Signaux numériques
ƒ Filtrage o Temps et amplitude discrets
o Flot de données
ƒ Modulation et démodulation
o Scalaires, vectorielles, matricielles, …
ƒ Détection et correction d’erreurs
ƒ Traitement temps réel
ƒ Contrôle o Temps d'exécution Tex guidé par flots de données
ƒ Traitements audio (e.g. réduction bruit, o Période d'échantillonnage Te période des sorties Tf > Tex
égalisation, annulation d’écho, conversion de e(t)
fréquence) Te

ƒ Reconnaissance vocale
ƒ Synthèse de signaux s(t) Algorithme ex. s(n) = max(moy(e), s(n-1))

ARCHI’05 - 5 ARCHI’05 - 6
Tf

Diversités Caractéristiques algorithmiques


ƒ Complexité des algorithmes de TdSI ƒ Charge de calcul importante
o Nids de boucles
< 5 MOPS 10-30 MOPS > 100-1000 MOPS o Multiplications-accumulations (convolution)
Faible Elevé o Multiplications-additions (FFT, DCT, adaptation, distances, ...)
mesure/contrôle Compression Compression ADSL UMTS ƒ Précision des calculs
parole modemsaudio GSM Compression o Virgule fixe ou flottante
vidéo Imagerie
o Compromis coût – précision des calculs
ƒ Format des données
médicale
ƒ Bande passante mémoire
Application Taille des données
PWM, mesures, contrôle 1 à 4 - 18 à 22 bits ƒ Calculs d'adressage complexes
convertisseurs sigma-delta o Gestion signal, accès image, bit-reverse (FFT), ...
radio HF/VHF, radar
sonar
6 - 14 bits
10 - 12 bits
ƒ Boucles de traitement courtes
parole 8 - 14 bits o Les instructions peuvent être placées en interne
audio 16 - 20 bits o Pas besoin de grande taille de cache (données ou instructions)
imagerie / vidéo 8 - 36 bits (par pixel)
analyseurs de sang 16 - 18 bits
ARCHI’05 - 7 ARCHI’05 - 8
Fonctions typiques de TdSI Exemple Fil Rouge
ƒ Convolution, filtrage ƒ Filtre Numérique RIF sur N points
o y = y + x.h : MAC (multiplication-accumulation)
ƒ Adaptation (LMS)
o yn = yn-1 + x.h : MAD (multiplication-addition)
ƒ FFT, multiplication complexe
D D D D
o xr=xr.wr-xi.wi; xi=xr.wi+xi.wr x(n)

ƒ Viterbi
x x x x x
o a1 = x1 + x2; a2 = y1 + y2; h(0) h(1) h(2) h(3) h(4)

o y = (a1>a2) ? a1 : a2 : ACS (addition-comparaison-sélection) y(n)


ƒ Estimation de mouvement + + + +
o sad += |xi,j - yi+u,j+v| : SAD (sum-of-absolute-difference) TAP
ARCHI’05 - 9 ARCHI’05 - 10

Fonctions typiques de TdSI Fonctions typiques de TdSI


ƒ FFT Fast Fourier Transform ƒ Filtrage adaptatif LMS
• Butterfly (DIF)
X X’ = X + W.Y

Y W Y’ = X - W.Y

x - + ƒ DLMS
x - xn(i-1)
hn-1(i)
x + + x + x + y
en
x - hn(i) xn(i) y

ARCHI’05 - 11 ARCHI’05 - 12
Fonctions typiques de TdSI Solutions architecturales
ƒ Estimation de mouvement ƒ Efficacité énergétique
• Codage vidéo MPEGx, H26x • Spécialisation, parallélisme 2 V DSP
3 MOPS/mW
N+2p sadmin = MAXINT; mvx=0; mvy=0; ƒ Flexibilité Pleiades, DART
for (u=-p; u<=p; u++)

Flexibility
10-50 MOPS/mW
Matched Block for (v=-p; v<=p; v++) {
Motion Vector
NxN sad = 0;
(u,v) Embedded
for (i=0; i<N; i++) { Processor
for (j=0; j<N; j++) { 100 -1000 MOPS/mW
p SA110
sad = sad + ABS[BR(i,j)-FR(i+u,j+v)] 0.4 MIPS/mW
ASIC
Reference Block /* if (sad>=sadmin) break; */
NxN } ASIP/DSP PowerPC
} 1 MIPS/mW
Search Window if (sad<sadmin) { Embedded Reconfigurable
sadmin = sad; mvx = u; mvy = v; FPGA Processor
}
100 10 1
ARCHI’05 - 13 } ARCHI’05 - 14 EE : MOPS / mW

Marché des DSP (1) Marché des DSP (2)


ƒ Sans fils domine : 75% des revenus en 2004 ƒ En haut de la liste des plus fortes croissances du
ƒ Systèmes grand public : DVD, TV et radio marché de l’industrie des semi-conducteurs
numérique, ... 14000
DSP Market (M$)
ƒ Asservissement des moteurs pour les disques
12000

durs, ...
10000
Multipurpose Automotive Consumer
6% 3% 9% 8000
Wireline
(modem, xDSL) 6000
6%
Computer 4000

6%
2000
Cellular
Cellular phone infrastructure
0
62% 5% 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007
Wirless short
Wireless (other) range
Prévisions Forward Concept Co.
2% 1%
ARCHI’05 - 15 ARCHI’05 - 16
Marché des DSP (3) II. Architecture
MAC/Harvard
ƒ Place dans le marché des processeurs embarqués

1. Genèse des DSP : MAC/Harvard


2. Modélisation des générations 1 et 2
Panorama des DSP
3. Performances

ARCHI’05 - 17

Architecture Von Neumann FIR sur machine Von Neumann


ƒ E.g. processeurs RISC ƒ Problèmes
MEMORY DATA BUS • Bande passante avec la mémoire
Code example:
• Code pour le contrôle et la gestion de l'adressage
multiply & accumulate
MUX
r2 = r2 + #imm * r1 • Multiplication lente
MEM. DATA

loop:
REGISTER
ADDRESS

REGISTER

mov *r0,x0
ALU

REGISTER PC
mov #imm,r3 mov *r1,x1
FILE
mul r1,r3 mpy x0,y0,a
add a,b Data Path Memory
add r3,r2 mov y0,*r2
inc r0
inc r1
⇒ 3 instructions, plus de 3 cycles inc r2
d'horloge dec ctr
tst ctr
MEMORY ADDRESS BUS jnz loop Exécution en N.(15 à 20) cycles
ARCHI’05 - 19 ARCHI’05 - 20
Généralités sur les DSPs Architecture Harvard (1)
PROGRAM ADDRESS BUS
Propriétés du traitement Conséquences sur les DATA ADDRESS BUS

numérique du signal architectures


„ Fonctionnement pipeline DATA DATA
Calculs intensifs et „ Architecture Harvard PROGRAM
RAM/ROM
RAM-A RAM-B
répétitifs „ Structures de contrôle
DATA BUS - A
évoluées
„ Unités de traitement DATA BUS - B

spécialisées câblées PROGRAM DATA BUS


Primitives simples
„ Gestion d’adressage
complexes
PROGRAM AGU-A MULTIPLIER
ALU
Le tout dans un environnement temps réel CONTROL AGU-B
REGISTERS
Address Generation ACCUMULATORS Processing Unit

ARCHI’05 - 21 ARCHI’05 - 22

Unité de traitement Architecture Harvard (2)


DATA BUS - A

ƒ Bus et mémoires données/instructions séparées


DATA BUS - B
24 24

Operand
X0
X1
ƒ Unité de traitement de type mpy-acc
Registers
ƒ Registres distribués (≠ RISC register file)
Y0
Y1
24 24

Multiplier • Chaque module (ALU) possède ses propres registres


56 56
locaux
Shifter
(-1, 0, +1)
ALU
56
24
ƒ Génération adresses efficaces (AGUs)
Accumulators A (56)
B (56)
• Modes d’adressage spéciaux : auto incr-decr, circular
buffering (delay line) ...
24
56 56
Shifter/Limiter
(-1, 0, +1)
Motorola DSP 5600x 24 24 in@2 in@1 in

ARCHI’05 - 23 ARCHI’05 - 24
FIR sur DSP conventionnel II. Architecture
MAC/Harvard
ƒ Instructions complexes s’exécutant en 1 cycle
T=DM(*r1+);
P=T*PM(*r0+)
T
|| T=DM(*r1+);
loop: 1. Genèse des DSP : MAC/Harvard
acc=acc+P Program
|| P=T*PM(*r0+)
MULT
Memory 2. Modélisation des générations 1 et 2
|| T=DM(*r1+)
jnz loop; P
Data Path
Panorama des DSP
Data
acc=acc+P Memory 3. Performances
|| P=T*PM(*r0+); ALU
acc=acc+P
ACC
Exécution en N+ε cycles

ARCHI’05 - 25

Processeur : modélisation Architecture Harvard de base


ƒ Unité de contrôle (IP : Instruction Processor) ƒ IP : Instruction Processor, DP : Data Processor
• Unité fonctionnelle (UF) qui interprète les instructions et les passe ƒ IM : Instruction Memory, DM : Data Memory
à l’unité de traitement (DP)

ƒ Unité de traitement (DP : Data Processor)


DP IP
• UF qui modifie ou transforme les données

ƒ Unité de mémorisation
• IM : Instruction Memory : stocke les instructions
• DM : Data Memory : stocke les données traitées par le DP
DM IM

ƒ Unité de communication (EIU : External Interface Unit)


• Contrôle les accès aux données ou instructions externes, ou à
d'autres processeurs e.g. TMS320C10

ARCHI’05 - 27
[Flynn72] [Skillicorn88] ARCHI’05 - 28 Classification de E. Lee [Lee89]
Architecture Harvard de base Optimisations des performances
ƒ TMS320C10 (1982) Comment améliorer l’architecture Harvard ?
• 2N+4 cycles
• 2N+4 instructions! ƒ Transformations du diagramme d'états
• réarrangement des états pour augmenter le temps de cycle
• exécution en parallèle d'états (e.g. Store Results et Return State)
ƒ Pipeline de l'exécution des états
• mise en parallèle d'états appartenant à des instructions
successives
ƒ Augmentation du nombre de FU
• plusieurs DP peuvent exécuter des instructions en parallèle sur des
données indépendantes

[Verbauwhede00]
ARCHI’05 - 29 ARCHI’05 - 30

Interconnexions entre FUs Modification 1

ƒ Les interconnexions suivantes sont valables pour ƒ Autorisation de


toutes les FUs précédentes (DP, IP, IM, DM). mémorisation de DP IP

• 1 - vers - 1 données dans l'IM


o une FU est connectée à une autre FU ƒ En un cycle : fetch deux
• n - vers - n opérandes de la 1-vers-2

o une FUi d'un ensemble de FUs est connectée à une autre FUi mémoire, exécute MAC,
• 1 - vers - n écriture du résultat en
o une FU est connectée à n autres FUs d'un ensemble de FUs I/O ou mémoire DM IM/DM
• n - par - n
o toute FUi d'un ensemble est connectée à chaque autre FUj

e.g. AT&T DSP32 et DSP32C

ARCHI’05 - 31 ARCHI’05 - 32
Modification 2 Modification 3

ƒ DM est une mémoire ƒ Cache pour charger


multi-ports, plusieurs DP IP les instructions DP IP
fréquentes
accès aux données par
cycle ƒ Évite les conflits
d'accès données et
ƒ Utilisable pour des instructions de la
1-vers-2 cache

mémoires internes modification 1


DM IM
DM IM/DM

TMS320C25 : cache 1 instruction (boucles)


DSP16 : cache 15 instructions
e.g. Fujitsu MB86232 (3 ports en mémoire interne) ADSP-2100 : cache 16 instructions

ARCHI’05 - 33 ARCHI’05 - 34

FIR sur DSP conventionnel Deuxième génération (Modification 4)

ƒ TMS320C2x (1986) ƒ Deux mémoires


ZAC || LTD;
données DM séparées DP IP
LTD || MPY; ƒ En un cycle : fetch
RPTK N-1
deux opérandes et une
MACD instruction si le cycle 1-vers-2
mémoire est le même
APAC || MPY;
APAC; que le cycle
d'instruction de base DM 1 DM 2 IM

Motorola DSP 56001 et 96002


Exécution en N cycles TMS320C30, C40, C50
ADSP-2100
ARCHI’05 - 35 ARCHI’05 - 36
Architecture Analog Devices SHARC Modification 5
DUAL-PORTED
CORE PROCESSOR SRAM

BLOCK 0
TWO INDEPENDENT

BLOCK 1
TIMER INSTRUCTION

ƒ Bancs mémoire
CACHE DUAL PORT BLOCKS JTAG
PROCESSOR PORT
ADDR DATA DATA ADDR
DP IP
multiples
ADDR DATA DATA ADDR TEST &
EMULATION
DAG 1 DAG 2
ƒ Instruction multi-
PROGRAM EXTERNA
8x4x32 8x4x24 SEQUENCER
L

24
PORT
32
opérandes en parallèle 1-vers-4
2-vers-2
PM ADDRESS BUS
32
ADDR BUS
MUX avec accès I/O
ƒ Problème de partition
DM ADDRESS BUS
MULTIPROCESSOR
48 PM DATA BUS
INTERFACE DM DM DM DM IM
des données sur un
48
BUS DATA BUS
CONNECT 40/32
MUX
(PX) DM DATA BUS
HOST PORT
grand nombre de 1-vers-4
bancs (FFT)
IOP DMA 4
DATA
REGISTER
REGISTERS CONTROLLER EIU IOM
(MEMORY MAPPED) 6
MULTIPLIER FILE BARREL SERIAL PORTS
ALU (2)
SHIFTER CONTROL,
Hitachi DSPi (6 bancs mémoire)
6
STATUS &
LINK PORTS
DATA BUFFERS (6)
I/O PROCESSOR 36

ARCHI’05 - 37 ARCHI’05 - 39

Générations Caractéristiques complémentaires


10000

ƒ Localisation des données


4ème génération
• Modèle registre-mémoire, Load-Store
Performances normalisées (BDTImark)

1000 StareCore(300MHz)
TMS320C62x (300MIPS)
Carmel (300 MHz) ƒ Codage des instructions complexes
• Stationnarité temporelle ou par les données
DSP16210 (100 MIPS)

ƒ Format des instructions


100
DSP56301
TMS320C54x (50-100MIPS)
2ème génération ADSP2183 (50MIPS)
• Type d’encodage, compromis consommation/efficacité
DSP56001 (13MIPS)
10
ADSP21xx (13MIPS)
TMS320C50
3ème génération
ƒ Structures de contrôle
1ère génération • Boucles matérielles, branchement
TMS320C20 (5 MIPS)
TMS320C10 (2.5 MIPS) ƒ Modes d’adressage
1
1980 1982 1984 1986 1988 1990 1992 1994 1996 1998 2000 2002

Année [cf. Annexes]


ARCHI’05 - 40 ARCHI’05 - 41
Résumé (1) Résumé (2)
ƒ Calcul ƒ FUs spécialisées pour les ƒ Accès aux données ƒ Modes d’adressage
fonctions classiques de complexes
TdSI en parallèle, MAC ƒ Localité temporelle ƒ Boucles matérielles (zero-
simple cycles d’exécution overhead), caches
ƒ Précision ƒ Bits de garde, saturation, d’instructions spécifiques
arrondis, multiplication ƒ Flots de données ƒ Pas de cache de données,
16-24 bits, addition 32-40 (streaming) DMA puissants, mémoires
bits SRAM internes
ƒ Bande passante mémoire ƒ Harvard, bancs et bus ƒ Temps réel ƒ Gestion des interruptions
adresses/données
multiples

ARCHI’05 - 42 ARCHI’05 - 43

II. Architecture Puissance de calcul


MAC/Harvard
ƒ MIPS (Millions of instructions per second)
• Mesure facile mais…
• …peu représentatif des performances réelles
o VLIW, génération des adresse
1. Genèse des DSP : MAC/Harvard
ƒ MOPS (Millions of operations per second)
2. Modélisation des générations 1 et 2
ƒ MMACS (Millions of MAC per second)
Panorama des DSP
• Prise en compte de l’aspect traitement du signal
3. Performances • Les autres opérations ne sont pas prises en compte

ƒ MOPS/W : Efficacité énergétique


ARCHI’05 - 45
Métriques de performance Contenu d’un benchmark
ƒ Comparaison précision - effort d’implantation ƒ Différents niveaux
• Applications complète
o Système de vidéo-conférence, émetteur/récepteur radio-
mobile, player MP3 ...
Applications
Précision de la métrique

Taches • Taches d'une application


o Codeur ou décodeur audio ou vidéo, codeur de parole,
Cœurs d’algorithme
décodeur de Viterbi
• Cœurs d'algorithme
Benchmarking
o FIR, IIR, FFT, Control, ..
MMACS/MOPS • Opérations
MIPS o ADD, Mult/MAC, Décalage, Transfert mémoire

Disponibilité … Effort d’implantation


ARCHI’05 - 46 ARCHI’05 - 47

BDTImark2000 http://www.bdti.com BDTIMARK


ƒ Basé sur des cœurs d’algorithme de traitement du signal
o Filtre FIR réel, traitement par blocs
o Filtre FIR réel, traitement par échantillons
o Filtre FIR complexe, traitement par blocs
o Filtre adaptif LMS
o Filtre IIR, 2 cellules d'ordre 2 cascadées
o Produit de vecteurs
o Addition de vecteurs
o Recherche de la valeur maximale d’un vecteur
o Décodeur de Viterbi
o FFT 256 points
o Manipulation de bits
ƒ Code optimisé manuellement

ARCHI’05 - 48 ARCHI’05 - 49
BDTIMARK Temps d’exécution (FFT)
BDTImark
Zoran ZR3800x
Motorola - IBM PowerPC604e 333 MHz 62 Texas Instruments TMS320C80
Intel Pentium 200 MHz 23 Texas Instruments TMS320C541

Analog Device ADSP 2106x 60 MHz 17 Texas Instruments TMS320C52


Texas Instruments TMS320C44
Texas Instruments TMS320C67xx 167 MHz 65
Texas Instruments TMS320C31
Texas Instruments TMS320C3x 80 MHz 9
Texas Instruments TMS320C209
SGS-Thomson D950-CORE
Intel MMX Pentium 266 MHz 56 NEC µPD77015
Motorola DSP56166
Processeurs

ARM7 TDMI/picolo 70 MHz 14


Motorola DSP56002
ARM7 TDMI 80 MHz 7
IBM MDSP2780
Motorola DSP 566xx 60 MHz 15
DSP Group OAK
Motorola DSP 563xx 100 MHz 25 DSP Group PINE
Lucent technologies DSP 16xxx 100MHz 37 Lucent Technologies DSP 3207

Lucent technologies DSP 16xx 120MHz 22 Lucent Technologies DSP32C


Lucent Technologies DSP 1627
Analog device ADSP21xx 75 MHz 19
Analog Devices ADSP-21062
Texas Instruments TMS320C80 60 MHz 26
Analog Devices ADSP-2171
Texas Instruments TMS320C54x 100 MHz 25
0 100 200 300 400 500 600 700 800 900
Texas Instruments TMS320C62x 200 MHz 99

0 20 40 60 80 100 120 Execution Time (µs)


ARCHI’05 - 50 Score ARCHI’05 - 51

Coût Coût – performance (FFT)

ƒ Important pour une production à fort volume Zoran ZR3800x

• Faible coût
Texas Instruments TMS320C541

Texas Instruments TMS320C52

o Les DSPs sont efficaces en MIPS/mW et en MIPS/mm2 Texas Instruments TMS320C44


Texas Instruments TMS320C31
o Cela se paye sur la flexibilité et la programmabilité Texas Instruments TMS320C209
100000 NEC µPD77015

Motorola DSP56166

10000 M68K $200 Motorola DSP56002


mW/MIPS

IBM MDSP2780
I286 $200
1000 I386 $300
Lucent Technologies DSP 3207

DSP1 $150 Pentium $500 Lucent Technologies DSP32C

100 Pentium MMX $700 Lucent Technologies DSP 1627


Analog Devices ADSP-21062
DSP32C $250
Analog Devices ADSP-2171
10 DSP16A $15
0 10000 20000 30000 40000 50000 60000 70000
DSP16210 <$10
1 DSP1600 $10 Cost-Time Product (µs$)
1980 1985 1990 1995 2000
ARCHI’05 - 52 [Ackland ISLPD98] ARCHI’05 - 53
Énergie
III. Évolution des DSP
ƒ Filtrage numérique RIF
ƒ C549
18 • 100 MHz, 2.5V
16 ƒ C6201
1. DSP conventionnels améliorés
Watt-microsecondes

Virgule Fixe
14 • 200 MHz, 1.8V
Virgule Flottante
12 ƒ DSP16210 2. Capacités SIMD
10 • 100 MHz, 3.3V
3. DSP hybride MCU
8 ƒ ZSP16401
6 • 200 MHz, 2.5V 4. VLIW
4 ƒ ADSP-21160
2
5. Superscalaire
• 100 MHz, 2.5V
0 ƒ C6701 6. Comparaison de performances
• 167 MHz, 1.8V
49

1
10

01

60
20

70
C5

62

64

11
C6

C6
P1

-2
P1

SP
DS

ZS

AD

ARCHI’05 - 54

Évolution des DSP Plus d’opérations par instruction


ƒ Améliorer les performances au delà de ƒ Augmenter le nombre d'opérations qui peuvent
l'augmentation liée à la vitesse d'horloge ? être exécutées dans chaque instruction
• Ajouter des unités d'exécution
o multiplieur, additionneur, ...
ƒ Augmenter le parallélisme o jeu d'instruction à enrichir
• Augmentation du nombre d'opérations exécutées o taille de l'instruction à augmenter
dans chaque instruction o bus de transfert mémoire à augmenter

• Augmentation du nombre d'instructions exécutées • Augmenter les capacités SIMD (ou SWP)
par cycle d'horloge ƒ Dans le même ordre d'idées
ƒ Ajouter des unités spécialisées • Utiliser des unités fonctionnelles spécialisées
ƒ Améliorer le contrôle • Utiliser un coprocesseur
• Architectures hybrides DSP/MCU
ARCHI’05 - 56 ARCHI’05 - 57
Plus d’instructions par cycle Générations
10000

ƒ L'objectif est ici de profiter du parallélisme au


niveau instruction (ILP) d'une application 4ème génération

Performances normalisées (BDTImark)


ƒ Deux techniques sont bien connues : 1000 StareCore(300MHz)
TMS320C62x (300MIPS)

• VLIW : empaquetage de plusieurs instructions de Carmel (300 MHz)

type RISC dans une seule "super-instruction" DSP16210 (100 MIPS)

• Superscalaire : exécution parallèle de plusieurs


100
DSP56301
TMS320C54x (50-100MIPS)
instructions sélectionnées dynamiquement par le 2ème génération ADSP2183 (50MIPS)

processeur DSP56001 (13MIPS)


3ème génération
10
ADSP21xx (13MIPS)
TMS320C50
1ère génération

TMS320C20 (5 MIPS)
TMS320C10 (2.5 MIPS)
1
1980 1982 1984 1986 1988 1990 1992 1994 1996 1998 2000 2002

ARCHI’05 - 58 ARCHI’05 - 59 Année

DSP conventionnels améliorés Architecture C54x


ƒ Troisième génération (1995) ƒ C54x
• 40-100-160 MIPS
ƒ Ajout d’unités spécialisés ou utilisation de • 1000-2000-3000 MIPS/W
coprocesseurs • 17x17b multiplier, 40b ALU,
• TMS320C54x 40b adder, ACS unit
• Viterbi, LMS, FIRS, FFT
ƒ Architectures multi-MAC
• Lucent DSP 16xxx • 60% of cellular handsets
ƒ Multiprocesseurs sur une puce • $5 for C5402 100MIPS - $75
• Principalement pour image/vidéo
• Dual cores (C5420)
• TMS320C80, MC68356

ARCHI’05 - 61 ARCHI’05 - 62
CB DB
DB PB DB CB DB CB EB

C54x C54x
ƒ FIR symétrique

x(N-i-1) + x + y
x(i) h(i) y

x(N-i) + x +
x(i+1) h(i+1) y

ARCHI’05 - 63 ARCHI’05 - 64

C54x Architectures multi-MAC


A
A
B
Bus1
T
ƒ FIR sur DSP conventionnel Bus X 16b
Bus1 Mult A
A A • e.g. Lucent DSP 16xx
B Bus I 16b
A Add B Bus4
Bus1 A ALU B
Bus2 B
Bus3 0
MAC DO N TIME:
acc=acc+P MULT
A // P=X*Y
B // Y=*r0++
Bus1
Bus2 // X=*r1++
ALU
ALU ALU
A
B
Exécution en N cycles
Bus1
T 2 ACC
ARCHI’05 - 65 ARCHI’05 - 66
Architectures multi-MAC Architecture C55x
ƒ FIR sur DSP dual-MAC ƒ C55x
Bus X 32b • Jusqu'à 20 MIPS/mW
• e.g. Lucent DSP 16xxx • C54x
Bus I 32b
o 400 MIPS, 380mW o Consommation -85%
o $5 - $80 o Performances 5x
ƒ C5510
DO N/2 TIME:
MULT MULT • 160 MHz, 320 MIPS
acc=acc+P0+P1
// P0=X0*Y0
• 80mW
// P1=X1*Y1 • 4 MIPS/mW
// Y=*r0++ • 160 KW SRAM
// X=*r1++ ALU ADDER ƒ C5502
• 400 MIPS
Exécution en N/2 cycles • 160 mW
8 ACC • 2.5 MIPS/mW
ARCHI’05 - 67 ARCHI’05 - 68

Architecture C55x Capacités SIMD (ou SWP)


ƒ Opérations parallèles sur différentes largeurs de chemins
ƒ FIR symétrique de données (16 bit, 8 bit, ...)
• Split unités d'exécution
• Unités d'exécution multiples
ƒ Exemples
• Lucent DSP16xxx, ADI ADSP-2116x, ADI TigerSHARC, TI C64x

16 bits 16 bits 16 bits 16 bits

x,+,- x,+,-

16 bits 16 bits
ARCHI’05 - 69 ARCHI’05 - 70
Avantages et inconvénients
III. Évolution des DSP
Méthode Avantages Inconvénients
Augmentation limitée de Augmentation importante de la
Augmenter le
la consommation, du
coût et de la densité de
complexité
1. DSP conventionnels améliorés
Difficulté à programmer et à
nombre d'UE code compiler 2. Capacités SIMD
Compatibilité maintenue Perspectives limitées
Gain en performance très Nécessité d'avoir un 3. DSP hybride MCU
Augmenter important pour des
traitements par blocs
parallélisme au niveau des
données important 4. VLIW
les capacités
SIMD Modifications Consommation mémoire 5. Superscalaire
architecturales limitées importante
Matériel Gain en performance Nécessite une bonne
6. Comparaison de performances
dédié important connaissance de l'application

ARCHI’05 - 71

Architecture hybride DSP/MCU Architecture hybride DSP/MCU


ƒ Associer des fonctionnalités MCU… ƒ Méthodes de couplage
• gestion efficace des ITs
Méthode Avantages Inconvénients
• manipulation de bits
2 jeux d'instructions ≠ Duplication de ressources
• exécution conditionnelle Multiprocesseur Les 2 cœurs travaillent en // Deux outils de
Pas de conflits de ressources développement

ƒ à des fonctionnalités DSP, Les 2 cœurs travaillent en //


Modèle de programmation
plus complexe
Coprocesseur
• calcul intensif Transferts de données

Modèle de programmation plus Contraintes imposées par


Extension
ƒ pour obtenir un code performant et efficace simple l'architecture initiale
Développement plus
• limiter la taille du code et donc du circuit Solution Hybride Architecture plus "propre"
risqué

ARCHI’05 - 73 ARCHI’05 - 74
Architecture Hybride DSP/MCU ST 140
ƒ ST100, ST122, ST140 (STMicroelectronics) ƒ Compatible ST100 ƒ ST140-DSP Core in
ƒ Compatible ST122 (dual- 0.13µm process
• 32 bits MCU / 16 bits DSP
MAC) ƒ Frequency up to 600 MHz
• Fonctionnalités DSP
ƒ Intensive Processing
o MAC, architecture Harvard, modes d’adressages complexes 2.4 GMAC/s
ƒ Flexible 16-bit/32-bit
• et microcontrôleur Load/Store architecture ƒ Large Data Bandwidth
o architecture load/store, large espace d’adressage, code ƒ 4-MAC/4-ALU 9.6 Gbytes/s
compact
ƒ Two data clusters ƒ Power Consumption
Contrôleur mémoire instruction
ƒ Double data memory down to 0.180 mW/MHz
@
bandwidth
d
UC
Mémoire ƒ 100 mW, 24 MMAC/mW
UT UA

Contrôleur mémoire donnée


ARCHI’05 - 75 ARCHI’05 - 76

Parallélisme niveau instructions


III. Évolution des DSP
INS 1 ALU MAC MU ...

Time
INS 2 ? INS1 INS2
1. DSP conventionnels améliorés INS3
INS 3
2. Capacités SIMD INS4
. – Ordonnancement ...
3. DSP hybride MCU des instructions INS6 INS5
.
4. VLIW – compilation
– Run-time
5. Superscalaire INS N
– Unité de dispatch
6. Comparaison de performances

ARCHI’05 - 78
Very Long Instruction Word VLIW : C62xx
256

ƒ Caractéristiques
MPY MPY ADD ADD MV STW ADD ADD

MPY SHL ADD SUB STW STW ADDK B


Fetch
ADD SUB LDW LDW B MVK NOP NOP

• Plusieurs instructions par cycle, empaquetées dans MPY MPY ADD ADD STW STW ADDK NOP

une "super-instruction" large 32x8=256 bits

• Architecture plus régulière, plus orthogonale, plus Dispatch Unit


proche du RISC
• Jeu de registres uniforme, plus large
L:ALU
ƒ Exemples
Functional Functional Functional Functional Functional Functional Functional Functional
Unit Unit Unit Unit Unit Unit Unit Unit

S:Shift+ALU .S1 .M1 .D1 .D2 .M2 .S2 .L2


.L1
• TI TMS320 C62x et C64x M:Multplier
D:Address
• ADI TigerSHARC ADS-TS20x Register File A Register File B
• Freescale (Motorola) MSC71xx et MSC81xx
Data Memory Controller
• StarCore SC1400 Agere/Motorola (DSP core) Data Address 1 Data Address 2

ARCHI’05 - 79 ARCHI’05 - 80 Internal Memory

Texas Instruments TMS 320C6x Exploitation du parallélisme


ƒ VLIW CPU with eight functional ƒ CPU ƒ Déroulage des boucles : augmente l'ILP
units (RISC-like code) • Two sets of functional units For(i=0;i<N;i+=3)
ƒ 2400 MIPS @ 300MHz including: For(i=0;i<N;i++) {
o Two multipliers { ACC=ACC + x[i].h[i]
ACC=ACC + x[i].h[i]
o Six arithmetic logic units (ALUs) } ACC=ACC + x[i+1].h[i+1]
ƒ 1M-bit on-chip memory o 32 registers with 32-bit word- ACC=ACC + x[i+2].h[i+2]
ƒ 32-bit ext. mem. interface length each }
ƒ 2 enhanced-buffered serial ports o Data-addressing units .D1 and
.D2 exclusively responsible for
ƒ 16-bit host access port (Host data transfers between memory
LOAD

processor access to on-chip data and the register files


MULT LOAD
memory) • 8-/16-/32-bit data support
ƒ Flexible PLL clock generator • 40-bit arithmetic options ACC MULT LOAD
N/3
(x ext. clock rate for 2 or 4) • Saturation and normalisation
ACC MULT
ƒ Price: $9-$102 • Bit-field manipulation and
instruction: extract, set, clear, bit ACC Taux d’utilisation
counting du processeur

100%

ARCHI’05 - 81 ARCHI’05 - 82
Exploitation du parallélisme C6x Functional
Unit
Functional
Unit
Functional
Unit
Functional
Unit
Functional
Unit
Functional
Unit
Functional
Unit
Functional
Unit

.L1 .S1 .M1 .D1 .D2 .M2 .S2 .L2

ƒ Pipeline logiciel : maximiser l’IPC


• Optimisation du code assembleur Register File A Register File B
Data Memory Controller
Prologue
LOAD
Instruction Description Nombre de Unités .M Unités .L Unités .S Unités .D
cycles
LDH Charge une donnée 5 - - - .D1
MULT LOAD 16 bits venant de la .D2
mémoire dans un
registre
LDW Charge deux données 5 - - - .D1
16 bits consécutives .D2
ACC MULT LOAD
N MPY
venant de la mémoire
Multiplication entre 2 2 .M1 - - -
registres, résultat .M2
dans un troisième
ADD Addition 1 - .L1 .S1 .D1
ACC MULT .L2 .S2 .D2
SUB Soustraction 1 - .L1 .S1 .D1
.L2 .S2 .D2
B Branchement 6 - - .S1 -
ACC .S2
Épilogue NOP aucune opération 1 - - - -
100%
Taux d’utilisation
ARCHI’05 - 83 ARCHI’05 - 84
du processeur

Exploitation du parallélisme Méthodes d’optimisation


ƒ Filtre FIR sur DSP VLIW C6x ƒ Depuis le code “RISC”
Instructions en parallèle
x[0] = input; // Update most recent sample
acc = 0; // Zero accumulator ƒ
for (i=0; i<8; i++) // 8 taps
{
prod = h[i] * x[i]; // perform Q.15 multiplication
ƒ Enlever les NOP
}
acc = acc + prod; // Update 32-bit accumulator
ƒ Déroulage de boucle
output = (short) (acc >> 15); // Cast output to 16 bits
ƒ Pipeline logiciel
Lecture mémoire de paquets de données
1 Start MVKL .S2 8, B0 ; Intialize the loop counter (B0) to 8
2 MVKL .S1 0, A5 ; Intialize the accumulator (A5) to 0 ƒ
2 LDH → 1 LDW
3 Loop LDH .D1 *A8++,A2 ; Load x(i) in A2
4 LDH .D1 *A9++,A3 ; Load h(i) in A3

2 LDW → 1 LDDW
5 NOP 4 ; LDH has a latency of 5 cycles
6 MPY .M1 A2,A3,A4 ; Multiply x(i) and h(i) in A4
7 NOP ; MPY has a latency of 2
8 ADD .L1 A4,A5,A5 ; Add A4 to the accumulator A5
9 [B0] SUB .L2 B0,1,B0 ; Sub 1 to the counter B0
10 [B0] B .S1 loop ; Branch to loop if B0 <> 0

ARCHI’05 - 85 ARCHI’05 - 86
Code non optimisé Instructions parallèles
loop:
loop: ƒ Code RISC loop: ƒ Parallélisme ?
ldh.d1 *A8++,A2 ldh.d1 *A8++,A2
ldh.d1 *A9++,A3 || ldh.d2
ldh.d2 *B9++,B3
nop 4 ƒ 40 itérations nop 4 ƒ 40 itérations
ƒ 16*40 = 640 cycles ƒ 15*40 = 600 cycles
mpy.m1 A2,A3,A4 mpy.m1x
mpy.m1x A2,B3
A2,B3,A4
,A4
nop nop
add.l1 A4,A6,A6 add.l1 A4,A6,A6
sub.l2 B0,1,B0 sub.l2 B0,1,B0
[b0] b.s1 loop [b0] b.s1 loop
nop 5 nop 5

ARCHI’05 - 87 ARCHI’05 - 88

Remplacer les NOP Not Optimized Properly Remplacer les NOP


loop: ƒ Instructions à la loop: ƒ Instructions à la
ldh.d1 *A8++,A2 place des NOP ldh.d1 *A8++,A2 place des NOP
|| ldh.d2
ldh.d2 *B9++,B3 || ldh.d2
ldh.d2 *B9++,B3
nop 4 ƒ Dépendances inter- sub.l2 B0,1,B0
instructions [b0] b.s1 loop ƒ 40 itérations
mpy.m1x
mpy.m1x A2,B3
A2,B3,A4
,A4
LDH LDH nop 2 ƒ 8*40 = 320 cycles
nop
a b
add.l1 A4,A6,A6 mpy.m1x
mpy.m1x A2,B3
A2,B3,A4
,A4
5 5 nop
sub.l2 B0,1,B0
MPY * count SUB add.l1 A4,A6,A6
[b0] b.s1 loop
2 1
nop 5
ADD + loop B
1
6
ARCHI’05 - 89 ARCHI’05 - 90
Déroulage de boucles Pipeline logiciel
ƒ Déroulage + ré-ordonnancement des instructions ƒ Réintroduction de la boucle sur le motif répété
Cycle .D1 .D2 .L1 .L2 .M1 .M2 .S1 .S2 NOP Cycle .D1 .D2 .L1 .L2 .M1 .M2 .S1 .S2 NOP
1 LDH LDH 1 LDH LDH
2 LDH LDH 2 LDH LDH SUB
3 LDH LDH 3 LDH LDH SUB B
4 LDH LDH 4 LDH LDH SUB B
5 LDH LDH 5 LDH LDH SUB B
6 LDH LDH MPY 6 LDH LDH SUB MPY B
7 LDH LDH MPY 7 LDH LDH SUB MPY B
8 LDH LDH ADD MPY 8 LDH LDH ADD SUB MPY B
9 LDH LDH ADD MPY ƒ N=40 itérations 9
10
LDH LDH ADD
ADD
MPY
MPY
10 ADD MPY
11 ADD MPY ƒ 7 + (N-7) +7 = 11 ADD MPY
12 ADD MPY 12 ADD MPY
13 ADD MPY 47 cycles 13 ADD MPY ƒ 47 cycles
14 ADD MPY 14 ADD MPY
15 ADD ƒ 47 instructions 15 ADD ƒ 15 instructions
16 ADD
VLIW! 16 ADD

ARCHI’05 - 91 ARCHI’05 - 92

Accès mémoire multiples Accès mémoire multiples


ƒ Lecture de 4 données + 2 MAC en parallèle
a1 a0 A0 LDW.D1 *A5++,A0
Cycle .D1 .D2 .L1 .L2 .M1 .M2 .S1 .S2 NOP
x 1
2
LDW
LDW
LDW
LDW
3 LDW LDW
x1 x0 A1 LDW.D1 *A6++,A1 4 LDW LDW
5 LDW LDW
6 LDW LDW MPY MPYH

A7 = A3
7
8
LDW
LDW
LDW
LDW ADD ADD
MPY
MPY
MPYH
MPYH
MPY.M1 A0, A1, A3 9 ADD ADD MPY MPYH
a1 * x1 a0 * x0 10 ADD ADD MPY MPYH
MPYH.M1 A0, A1, A7 11 ADD ADD MPY MPYH
12 ADD ADD MPY MPYH

+ 13 ADD ADD MPY MPYH ƒ N=40 itérations


14 ADD ADD
15 ADD ADD ƒ 7 + (N/2-7) +8
= 28 cycles
16 ADD
a1x1 + a0x0 A4 ADD.L1 A3, A7, A4

ARCHI’05 - 93 ARCHI’05 - 94
StarCore SC1400 core VLIW combiné au SIMD
ƒ Processeur VLIW 16 bits développé en commun ƒ ADI TigerSHARC
par Agere (Lucent) et Freescale (Motorola) • Combine le VLIW au SIMD afin d'atteindre un
ƒ 300 MHz, faible tension parallélisme massif
• SIMD hiérarchique
ƒ Optimisé pour faible consommation o Le TigerSHARC peut exécuter 8 multiplications 16x16 en
• Meilleure densité de code (16 bits) que C6x virgule fixe par cycle (4x le C62xx)
• Pipeline plus simple (5 étages contre 11) Instruction SIMD

MAC MAC MAC MAC


BMU ALU ALU ALU ALU ALU MAC Shift ALU MAC Shift
Shift Shift Shift Shift

4 MAC 16 bits 4 MAC 16 bits


ARCHI’05 - 95 ARCHI’05 - 96

VLIW combiné au SIMD C64x

ƒ C64x
• Jusqu’à 1.1 GHz, ~9 GOPS
• Six ALUs (32/40-Bit)
o une 32/40-Bit, deux 16-Bit, ou quatre 8-Bit opérations
arithmétiques par cycle et par ALU
• Deux multiplieurs, quatre 16x16-Bit ou huit 8x8-Bit
multiplications par cycle
• Coprocesseurs VCP (Viterbi) et TCP (Turbo)

ƒ 'C6411: 300 MHz, $39, 1.0 V, 250mW, 2400


MIPS, 1200 MMACS

ARCHI’05 - 97 ARCHI’05 - 98
Superscalaire Avantages et inconvénients
ƒ Techniques dérivées des processeurs généraux
Méthode Avantages Inconvénients
hautes-performances
Grand bon dans les Bande passante vers la
• Prédiction de branchement performances
mémoire importante
Forte consommation
• Cache dynamique VLIW Architectures plus orthogonales Séquencement délicat
⇒ meilleures cibles pour les
ƒ Plusieurs (2-4) instructions par cycle compilateurs
Augmentation de la taille du
code importante
ƒ Jeu d'instructions de type RISC Grand bon dans les
performances Bande passante vers la
ƒ Parallélisme important LOOP // FIR on LSI40x Architectures plus orthogonales mémoire importante
Superscalaire ⇒ meilleures cibles pour les Plus forte consommation
ƒ Exemple LDDU R4, R14, 2
compilateurs Temps d'exécution
LDDU R8, R15, 2
• LSI Logic LSI40x (ZSP400 core) MAC2.A R4,R8 Pas de problèmes de difficilement prédictible
séquencement
o 4-way, 260MHz AGN0 LOOP

ARCHI’05 - 99 ARCHI’05 - 100

Générations : bilan

ARCHI’05 - 101 ARCHI’05 - 102


Processeurs récents (2005)
ƒ DSP
• Analog Devices BF53x (Blackfin)
• Analog Devices TS20x (TigerSHARC)
• Freescale MC1xx/81xx
• Texas Instruments C55x
• Texas Instruments C64x
ƒ Processeurs applicatifs
• Intel PXA255/26x (XScale)
• Intel PXA27x (XScale + Wireless MMX)
• Samsung S3C24xx (ARM9)
• Texas Instruments OMAP591x (ARM9 + C55x)

ARCHI’05 - 103 ARCHI’05 - 105

Vitesse (BDTImark2000) Coût – performance (mark/$)

ARCHI’05 - 106 ARCHI’05 - 107


Efficacité énergétique (mark/mW) Efficacité mémoire (memmark)

ARCHI’05 - 108 ARCHI’05 - 109

BDTIMark
III. Flot de développement

1. Flot général de développement


2. Compilation pour DSP
3. Arithmétique virgule fixe

ARCHI’05 - 110
Flot de développement général Flot général (suite)
ƒ Développement (actuel) d'applications (signal) – Compilateur C pour DSP
Algorithme 1 Implantation – Simulation assembleur
Code C logicielle
– Matlab/Simulink
Mise au point – SPW, Ptolemy, CoCentric
Algorithme 1
de l'algorithme – VCC
Système d'Exploitation
Temps Réel – Traduction en VHDL
Génération manuelle ou automatique Implantation – Synthèse du circuit
– Compilateur C, debugger Matérielle – Simulation VHDL
Code C Algorithme 2
– Utilisation de vecteurs de
"flottant" test issus de la simulation Code C
système

Génération manuelle Algorithme N


– Compilateur C, debugger Code C
Code C – Utilisation de vecteurs de
test issus de la simulation
"fixe" système
ARCHI’05 - 112 ARCHI’05 - 113

Compilation Inefficacité des compilateurs C


ƒ Compilation C vs optimisation assembleur ƒ Surcoût Sur coût temps d'execution

associé au 1200

compilateur
ƒ Conception de code enfoui dans l'industrie
1000

• e.g. STMicrolectronics
ƒ Facteur 4 à 10
800 ANSI C

Sur coût (%)


C modifié

(virgule fixe)
Code C
Assembl Code C Assembler MCU 600
er MCU DSP MCU 5%
28% 8% 25% ƒ Facteur 2 à 4
Code C
Assembler
(flottants) 400

µCtrl
Assembl
er DSP
9% DSP
25%
Code C
DSP
ƒ Orthogonalité 200
55% 45%
• VLIW
0
ADSP21xx/ DSP56002/ TMS320C51/ TMS320C54/ TMS320C62/

[Paulin97] [Paulin00] ADI Motorola TI


Processeurs
TI TI

ARCHI’05 - 115 ARCHI’05 - 116


Inefficacité des compilateurs C Raisons de l’inefficacité
ƒ Surcoût associé Sur coût taille du code ƒ Absence de support de l’arithmétique virgule fixe
ƒ Inefficacité des techniques classiques de
400

au compilateur
développement des compilateurs
350
ANSI C
• Taille du code 300

o développement de l'architecture puis du compilateur


C modifié

250

¿ compilateurs reciblables
200

Sur coût (%)


150 ƒ Inefficacité des techniques classiques de
100 compilation
50 o architecture non orthogonale, unités spécialisées, instructions
0
complexes
-50 ƒ Absence de support des spécificités des DSP
-100 o registres d’état, modes d’adressage (modulo, bit inversé)...
ADSP21xx/ DSP56002/ TMS320C51/ TMS320C54/ TMS320C62/

¾Extensions du langage C : e.g. Embedded C


ADI Motorola TI TI TI
Processeurs

ARCHI’05 - 117 ARCHI’05 - 118

Formats de codage
III. Flot de développement
ƒ Virgule fixe
• Représentation : signe - partie entière - partie fractionnaire
mx nx m−1
x = (−2)m S + ∑bi 2i CA2
1. Flot général de développement S bm-1 bm-1 b1 b0 b-1 b-2 bn-2 bn-1 bn i =− n

2. Compilation pour DSP o bx = mx + nx + 1


o le format d’une donnée ne varie pas au cours du temps
3. Arithmétique virgule fixe
ƒ Virgule flottante
• Représentation : exposant - mantisse ⎛1 M ⎞
Exposant e bits Mantisse M+1 bits
x = 2u (−1)SE ⎜ + ∑Ci 2i −1 ⎟
⎝ 2 i =1 ⎠
SE d1 d2 de-1 SE C1 C2 C3 Cm-2 Cm-1 Cm
E −1
avec u = (−1)SE ∑ di 2i
i =1
ARCHI’05 - 120
Comparaison fixe - flottant Comparaison fixe - flottant
Dynamique virgule fixe/flottante

ƒ Virgule fixe (>90% des ventes des DSP)


1500

• Précision importante mais problèmes de débordement


ƒ Dynamique

D ynamique en dB
1000
o nécessité de recadrer les données
⎛ max(x ) ⎞ • Temps de développement plus long
DN (dB) = 20. log⎜⎜ ⎟= 500 flottant
⎟ • Efficacité énergétique plus importante, plus rapide et moins cher
⎝ min( x ) ⎠ fixe
• Consommation moins importante
0
10 15 20
Nombre de bits
25 30
• Marché : applications grand public
• C5x > $5
ƒ Rapport signal à bruit
Rapport Signal à Bruit virgule fixe/flottante
100
ƒ Virgule flottante
• Temps de développement plus rapide, compilateurs plus efficaces
de quantification (SQNR)
80 flottant

• Plus grande portabilité, pas de recadrage

RSB en dB
60

• Pas de débordements : dynamique de 1500dB (32 bits)


⎛P ⎞
40

ρdB = 10. log⎜⎜ s ⎟⎟ = 20


(16 bits) • Plus cher, consomme plus
• C67x > $30
⎝ Pe ⎠ 0
fixe

-50 0 50
ARCHI’05 - 121 Dynamique du signal d entré e en dB ARCHI’05 - 122

Eléments de l’UT Règles de l’arithmétique virgule fixe


mA nA

ƒ Multiplieur câblé ƒ Addition: a+b SA bmA b1 b0 b-1 b-2 bnA

AA BB + mB mBnB nB
ƒ Additionneur (1 Op/cycle) N N • Format de a et b identique SB SB SB bmB Sb0 bb-1 bb-2 bbnB b0 b0
B mB 0 -1 -2 nB

ƒ U.A.L. × • Choix d’un format commun


2N o Alignement de la virgule SR bmR b1 b0 b-1 b-2 bnA

MAC o Extension de bits m R = max(m A , m B ) + 1 n R = max(n A , n B )

ƒ Registres à décalage + mA nA
Ö recadrage des données ƒ Multiplication: a × b
2N+bg
Accumulateur
Accumulateur SA bmA b1 b0 b-1 b-2 bnA

ƒ Gestion des débordements • Représentation identique × mB nB


Sat SB bmB b0 b-1 bnB

ƒ Bits de garde /Arr


• Doublement du bit de signe
SR SR bmR b1 b0 b-1 b-2 bnR
ƒ Registres d’accumulation mR = m A + mB nR = nA + nB
Ö stockage des données en double précision
ARCHI’05 - 123 ARCHI’05 - 124
Codage en virgule fixe : objectifs Codage en virgule fixe : étapes
ƒ Objectifs pour le codage en virgule fixe 1. Détermination de la dynamique des données
• Garantir l’absence de débordements ƒ Méthodes statistiques ou analytiques
o Connaissance du domaine de définition des données
2. Détermination de la position de la virgule
• Maximiser la précision

Minimiser le nombre
3. Détermination de la largeur des données
de bits de poids fort
Minimiser le pas de ƒ Opérateurs SIMD, précision multiple
non utilisés
quantification
4. Evaluation de la précision des calculs
ƒ Méthodes par simulation ou analytiques
S bm-1 bm-1 b1 b0 b-1 b-2 bn-2 bn-1 bn

PMSB PLSB

ARCHI’05 - 125 ARCHI’05 - 126

Filtre récursifs (IIR) Filtre IIR d’ordre 2 (cellule i)


ADD0
ƒ Cascade de cellules d’ordre 2 (entrée) x(n)
+ +

ADD 0
ADD 1
yi-1(n) a2,i × a1,i ×
xn +
wn
× + +yn
wn
× + … yn sortie cellule
b0 b0
précédente
z-1 z-1 wi(n-2) wi(n-1) wi(n)
× × × ×

a1 z-1 b1 a1 z-1 b1 b2,i ×


× × × × b1,i ×
b0,i ×
a2 b2 a2 b2 + ADD1
+
y (n) (sortie)

yi(n) (entrée cellule suivante)

ARCHI’05 - 127 ARCHI’05 - 128


Dynamique des données Dynamique des données (IIR)
ƒ Normes utilisées en TS ƒ Sources de débordements : additionneurs
ƒ Norme L1 • IIR : 2 sources ADD0 et ADD1

z max1 = max n ( x(n) ). ∑ h(m)
¾ Méthode garantissant
l’absence de débordements ADD 1
m = −∞ ADD 0 wn
xn + × + yn
ƒ Norme Chebychev z-1
b0
¾ Méthode garantissant l’absence
z max 2 = max n ,ω ( x(n) ) max ( H (ω ) ) de débordements pour un signal
d’entrée à bande étroite e.g. ∞
× ×

wmax1 = xmax . ∑ hD (m) a1 z-1 b1 ymax1 = xmax . ∑ h(m)
x(n)=cos(wt) m = −∞ m = −∞
× ×
H D ( z) =
1 b0 + b1 z −1 + b2 z − 2
1 + a1 z −1 + a2 z − 2 H ( z) =
1 + a1 z −1 + a2 z − 2
ƒ Arithmétique d’intervalle (non récursifs) a2 b2

ARCHI’05 - 129 ARCHI’05 - 130

Dynamique des données (IIR) Position de la virgule (IIR)


ƒ Exemple
Filtre1 Num (z )/Den(z ) mx = ⎡log 2 (max n ( x(n) ))⎤ = 0
mwi = ⎡log 2 (max n ( wi (n) ))⎤ = 4
2
x ∈ [−1,1] 1.5

0.5 − 0.2428 z −1 + 0.5 H(jw)


H ( z) =
m yi = ⎡log 2 (max n ( yi (n) ))⎤ = 2
1

1 − 0.85 z −1 + 0.8417 z − 2 0.5

∑ h(m) = 2.5645 ⎯⎯→ m


maij = ⎡log 2 (max j ( ai ))⎤ = 0
0

xmax y =2 0 0.5 1 1.5 2 2.5 3 3.5

Filtre 1/Den(z )
m = −∞ 8

∑h ( m) = 9 ⎯
⎯→ mw = 4 → k1 = 4
mbij = ⎡log 2 max j bij ( ( ))⎤ = 0
6
xmax D
m = −∞
4
HD(jw)
2

Codage des coefficients 0


0 0.5 1 1.5 2 2.5 3 3.5 m ADD 0 = MAX (mx , mai + mwi + 1, mwi ) = 5
a1 = -27951

m ADD1 = MAX (mbi + mwi + 1, m yi ) = 5


a2 = 27581 Fonction de transfert des filtres H(z) et HD(z)
b2 = 16384
b0 = 16384
b1 = -7956
ARCHI’05 - 131 ARCHI’05 - 133
Codage des données (IIR) Conversion flottant-fixe (IRISA)
(16,mx,,nx) ADD0 (32, madd0 , nadd0) #define pi 3.1416
#define pi 3.1416
main()
{
float x,h,z
#define pi 3.1416
#define pi 3.1416
main()

C source Floating-point
for(i=1;i<n;i++) {
{ float x,h,z
}
*z= *y++ + *h++ #define pi 3.1416 for(i=1;i<n;i++)
#define pi 3.1416 {
*z= *y++ + *h++

x(n)
main()

+ +
for(i=1;i<n;i++) }
{

code specification
{

(16,0,15) (32,5,16)
float x,h,z
*z= *y++ + *h++ for(i=1;i<n;i++)
for(i=1;i<n;i++)
} {
{
*z= *y++ + *h++ *z= *y++ + *h++
Correlator.C }
}

for(i=1;i<n;i++) Correlator.C
{
*z= *y++ + *h++
}

Correlator.C

a2,i × a1,i ×
(16,mw,nw) Fixed-point conversion
AA BB
(16,4,11) Binary-point
16 16 wi(n-2) wi(n-1) wi(n) position
determination

32
b2,i ×
High level Code generation
b1,i × synthesis tool tool
b0,i × BSS Fixed-point
specification
Accuracy
Fixed-point
specification
CALIFE
+ ADD1 evaluation
Selection optimization optimization Selection
32 Scheduling Scheduling
Acc
Acc + Allocation Allocation

(32, madd1, nadd1) (16,my,ny)

(32,5,16) (16,2,13) Precision


constraint
y (n)

ARCHI’05 - 134 ARCHI’05 - 135 [Ménard02, Ménard04]

Conclusions Conclusions
ƒ Processeurs spécialisés garantissent : ƒ Les processeurs généraux ont maintenant des
• efficacité énergétique, rapport performances/coût performances qui concurrencent les DSPs
• autres exemples probants • Mais le prix ... et la consommation ne sont pas
o Processeurs multimédia applicables aux applications embarquées grand public
o Network Processor NPU

ƒ Les performances des processeurs DSPs ont augmenté


ƒ La facilité de compilation est un facteur
de 150x sur 15 ans (40% par an) important
• time-to-market...
ƒ Les nouvelles architectures sont nombreuses
• Mais les DSPs conventionnels dominent toujours le volume ƒ Choisir un DSP requiert une analyse fine
• qui dépend de l'application...

ARCHI’05 - 136 ARCHI’05 - 137


Perspectives Piste 1 : DSP conventionnel
ƒ Quelle sera l’architecture ƒ DSP conventionnel multi-MAC
pour le traitement du Programmation ?
signal et de l’image de
ƒ Unités spécialisés
demain (ou d’après
demain) ? Viterbi

Turbo MULT MULT MULT MULT

FFT
ALU ALU ALU ALU
CDMA

ACC ACC

ARCHI’05 - 138 ARCHI’05 - 139

Piste 2 : ULIW Piste 3 : multiprocesseur


ƒ Ultra Large Instruction Word ƒ PicoArray (picoChip)
Compilation ? • ~320 PE (VLIW 3-way)
• e.g. Silicon Hive AVISPA+
• 160 MHz
ƒSMT ? • 190 GIPS

ARCHI’05 - 140 ARCHI’05 - 141


PicoArray Piste 4 : FPGA
ƒ Static Interconnect ƒ PE: 16-bit 3-way VLIW ƒ e.g. Altera Stratix
• Multiplieurs 9x9 – 18x18, 2
GMAC/s par bloc, 250 MHz

ƒ VHDL: structure
ƒ C/Assembly: PE

ARCHI’05 - 142 ARCHI’05 - 143

Piste 5 : processeur reconfigurable Bibliographie


RDP1 ƒ Architecture DART ƒ DSP Processor Fundamentals :
• 3G/UMTS Mobile Terminal Architectures and Features
Segmented Network

RDP2
Ctrl • 802.11a (Channel Est.)
RDP3
Data. (IEEE Press Series on Signal
Mem.
Ctrl
RDP4 Processing)
DMA

Config
RDP5
• IRISA/R2D2 by Phil Lapsley, Jeff Bier, Amit
Mem.
FPGA
RDP6
• STMicroelectronics Shoham, Edward A. Lee,
Wiley-IEEE Press, 1997
• CEA LIST/LETI
Loop Managment

AG1 AG2 AG3 AG4 ƒ Performances ƒ Digital Signal Processors :


Data Data Data Data Architectures,
mem1 mem2 mem3 mem4 • 5-10 GOPS/cluster@0.13m
Implementations, and
Fully Connected Network • 200MHz, 11mm2 Applications
• 300 mW @ 5 GOPS by Sen M. Kuo, Woon-Seng S.
reg reg
FU1 FU2 FU3 FU4 • 16 MOPS/mW @ 5 GOPS Gan, Prentice Hall, 2004
• Circuit en juin 2005
ARCHI’05 - 144 ARCHI’05 - 145
Bibliographie Bibliographie
ƒ Programmable Digital Signal ƒ Digital Signal Processing
Processors Applications With Motorola's
by Yu Hen Hu (Editor), Marcel DSP56002 Processor
Dekker, 2001 by Mohammed El-Sharkawy,
Prentice Hall, 1996

ƒ VLSI Digital Signal Processors: ƒ Digital Signal Processing


An Introduction to Rapid Implementation Using the
Prototyping and Design TMS320C6000 DSP Platform
Synthesis (With CD-ROM) by Naim
by Vijay Madisetti, Dahnoun, Prentice Hall, 2000
Butterworth-Heinemann, 1995
ƒ DSP Applications Using C and
the TMS320C6x DSK by Rulph
ƒ Méthodes et architectures pour Chassaing, Wiley-Interscience,
le TSI en temps réel, de Didier 2002
Demigny, Hermès, 2002

ARCHI’05 - 146 ARCHI’05 - 147

Références Webographie
ƒ [David00] R. David, Etat de l'art des cœurs de DSP, Rapport DEA, ENSSAT, 2000.
ƒ [Sentieys00] O. Sentieys, Etat de l'art des DSP, École thématique du CNRS - Conception de
systèmes enfouis, Seix (Ariège), 20-23 novembre 2000.
ƒ http://www.bdti.com
ƒ [Sentieys01] O. Sentieys, DSP et processeur superscalaire : la convergence ?, Symposium en
Architectures Nouvelles de Machines, Paris, 2001. ƒ http://dsprelated.com/
ƒ [Ménard04] D. Ménard, Processeur de traitement du signal, ENSSAT/EII, 2004.
ƒ [ICE97] B. McClean, “Status 1997: A Report on the Integrated Circuit Industry”, Integrated Circuit ƒ http://www.ti-training.com/courses
Engineering Corporation (ICE), Scottsdale, 1997
ƒ [Bhaskaran95] V. Bhaskaran & K. Konstantinides, “Image and Video Compression Standards -
Algorithms and Architectures”, Kluwer Academic Publishers, Boston, 1995.
ƒ http://www.eg3.com/dsp/index.htm
ƒ [Bier97] J. Bier, P. Lapsley & G. Blalock, “Choosing a DSP Processor”, Berkeley Design Technology
(BDT), 1997.
ƒ [DeMan97] H. De Man and al., “Language Based Design of Digital Systems”, AI Course, KU
Leuven/IMEC, april 1997.
ƒ [Lapsley96] P. Lapsley and G. Blalock, “How to Estimate DSP Processor Performance”, IEEE
Spectrum, July 1996.
ƒ [Pirsch97] P. Pirsch: “Video and Image Processing Architectures - Dedicated and Programmable
Solutions”, NFWO Symposium on Video Processing Architectures, January 1997.
ƒ [Ackland98] B. Ackland and C. Nicol, "High Performance DSPs - What's Hot and What's Not?", IEEE
Int. Symposium on Low Power Electronic Design ISLPED, 1998.
ƒ [Ropers99] A. Ropers and al., "DSPstone : TI C54x" Report IISPS AAchen University of Technology,
1999.

ARCHI’05 - 148 ARCHI’05 - 149