Réduction de consommation d`énergie en électronique

Transcription

Réduction de consommation d`énergie en électronique
Réduction de consommation d'énergie
en électronique embarquée
Olivier SENTIEYS
ENSSAT - Université de Rennes
LASTI - Groupe Signal Architecture
6 Rue de Kérampont - 22300 - Lannion
Tél: 02-96-46-66-41; Fax: 02-96-46-66-75
[email protected]
http://archi.enssat.fr
Résumé
La consommation des circuits électroniques, dédiés ou programmables, est devenue un
facteur essentiel pour un nombre croissant d'applications industrielles ou grand public pour
lesquelles il s'agit d'embarquer un ensemble de traitements plus ou moins complexes à des
cadences de plus en plus rapides. Le concepteur de systèmes doit maîtriser tout au long de la
démarche, les optimisations architecturales, logiques et technologiques, en vue de satisfaire
les contraintes de cadence de traitement, de consommation et de coût.
L'exposé de la journée scientifique Électronique Embarquée du 24 avril 1997 s'articulera
autour des axes suivants : une présentation rapide des applications nécessitant une
conception spécifique au problème de consommation d'énergie; les évolutions actuelles des
technologies de circuits (DSP, VLSI), et en particulier du produit vitesse-consommation; une
présentation du problème général de la consommation des circuits VLSI CMOS (analogiques
ou numériques) à différents niveaux technologiques; les optimisations architecturales,
logiques et technologiques, en vue de satisfaire les contraintes de cadence de traitement, de
consommation et de coût.
I. Introduction
Depuis quelques années, le problème de la dissipation de puissance est devenu un facteur
limitatif pour la réalisation des systèmes VLSI. Cette limitation intervient au travers de deux
problèmes majeurs. Les systèmes complexes et performants, engendrant donc une
consommation électrique importante, nécessitent des systèmes de refroidissement complexes et
peuvent présenter des problèmes de fiabilité (une forte chaleur augmenterait le risque de
panne). La consommation est donc devenue la limite essentielle de l'augmentation du nombre
de transistors sur une seule puce. Pour les applications portables, la consommation engendre
une réduction de la durée de vie des batteries limitées en poids et en encombrement par le type
d'applications.
De plus, de nouvelles applications émergent telles que les ordinateurs personnels ou portables
(PC, portable desktop, pagers, ...), les télécommunications sans fil (radiomobile, GSM, ...), les
1
assistants de personnes (PDA's), le multimédia. Le marché de ces produits possède la plus
forte croissance du secteur électronique. Les projections dans le futur montrent que cette
croissance doit continuer. Ce type d'applications intègre des fonctionnalités complexes
(annulation d'écho, codage parole ou vidéo, codage canal, traitements type multimédia, ...), qui
demandent des calculs performants, tout en ajoutant une contrainte forte sur la consommation
de ces systèmes. On peut prendre pour exemple un terminal multimédia portable du futur qui
intègre des communications sans fil large bande, de la vidéo bidirectionnelle animée, de l'audio
et de la parole de haute qualité, et une interface homme machine évoluée (entrée stylo,
affichage texte et graphique). Un exemple est le projet InfoPad développé à l'U.C. Berkeley
[http://infopad.berkeley.edu]. Le budget consommation d'un tel terminal sans conception
spécifique serait d'environ 40 Watts, ce qui nécessiterait de trop encombrantes batteries (10
kg) de type Nickel-Cadmium pour une durée de vie acceptable de 10 heures (voir figure 1).
Certaines nouvelles technologies de batteries (Nickel-Metal-Hybride) pourront offrir 60-70
Wattheures/kg, mais les prévisions les plus optimistes ne présentent qu'une amélioration de 30
à 40% dans les 5 prochaines années. Cette évolution est 4 fois moins élevée que celle de la
puissance de calcul des circuits intégrés prédite par la loi de Moore. Il faut donc utiliser des
méthodes de conception spécifiques au problème de basse consommation.
50
40
30
20
10
0
65
69
70
79
80
84
85
89
90
95
Années
Figure 1 : Évolution du rapport autonomie / poids des batteries d'après Sony Inc.
De plus, des applications dites Ultra-Basse-Consommation nécessitent des puissance en
dessous de 1mW. On trouve des applications médicales (pace makers) ou d'horlogerie.
Cette tendance se retrouve également pour les processeurs généraux. Le tableau 1 représente
la consommation de quelques processeurs actuels. L'étude de l'évolution de la puissance
dissipée en fonction de la surface de Silicium montre que l'équation suivante prédit la puissance
avec une assez bonne précision.
P = k . surface . Fclk avec k = 0.063 W/cm2.Mhz
On peut donc extrapoler que, dans le futur, un microprocesseur de 10 cm2, fonctionnant à 500
Mhz consommerait 315 Watts! Cependant, certains constructeurs sortent des versions de leur
microprocesseur optimisées en consommation. On trouve également de plus en plus de produit
(microcontrôleur, processeur de traitement du signal) possédant l'étiquette "BasseConsommation Basse-Tension" [Davis96], [Verbau96], [Cousin97].
2
Processeur
Intel Pentium
Intel P6
DEC Alpha 21064
DEC Alpha 21164
PowerPC 620
MIPS R10000
UltraSparc
PowerPC 603
IBM 486SLC2
MIPS R4200
Horloge
(MHz)
66
200
200
300
133
200
167
80
66
80
Technologie
(µm)
0.8
0.35
0.75
0.5
0.5
0.5
0.45
0.5
0.8
0.64
Alimentation
(V)
5.0
3.3
3.3
3.3
3.3
3.3
3.3
3.3
3.3
3.3
Consommation
maximale (W)
16
35
30
50
30
30
30
2.2
1.8
1.8
Tableau 1 : Consommation de différents processeurs
Le circuit de la figure 2 a été développé à l'ENSSAT en technologie 0,7µm pour l'annulation
d'écho acoustique en bande élargie (16kHz) [Sentieys93]. La taille de la réponse impulsionnelle
est de 1024 points. Les mémoires occupent une place importante du circuit (60%), tendant à
prouver la tendance actuelle des nouvelles applications à nécessiter de plus en plus d'unités
mémoire. Un effort supplémentaire devra être fait afin de réduire la consommation de ces
unités fonctionnelles (cf. §III.2). La consommation de ce circuit est de 86 mW à 5 Volts. Son
utilisation à 3.3 Volts est rendue possible grâce à la présence de multiples unités fonctionnelles,
abaissant ainsi la consommation à 37 mW.
Ram 2
5,92 mm2
Mult 2 2
1,22 mm
Ram 1
2
5,92 mm
Mult 1
1,22 mm 2
Partie du circuit
Conso. (mW)
interconnexions
12.0
cellules
26.0
RAM
48.0
Puissance Totale
86.0
VDD = 5V
Figure 2 : Bilan de consommation d'un ASIC d'annulation d'écho
II. Sources de consommation électrique
Les principales sources de dissipation de puissance dans un circuit numérique sont données
dans l'équation suivante (eq. 1) et illustrées à la figure 3. La puissance statique Ps peut être
directement négligée pour des circuits de type CMOS.
Pmoy = Pd + Pcc + Pf
(1)
où Pmoy est la puissance moyenne dissipée par le circuit, Pd la puissance dynamique causée par
la charge et la décharge de la capacité Cl. Pcc et Pf reflètent la puissance dissipée due aux
courants de court-circuit et de fuite (Icc et If). L'équation 1 peut être développée de la manière
suivante :
3
Pmoy = α . C . Vdd2 . f + Vdd . Icc + Vdd . If
(2)
où Vdd est la tension d'alimentation, f la fréquence d'horloge, C la capacité physique du circuit
et α le facteur d'activité défini comme le nombre moyen de transition (0 → 1) pendant une
période d'horloge. Ces deux derniers paramètres sont souvent regroupés en un terme Ceff, la
capacité effective.
En général, les puissances de court-circuit et de fuite peuvent être réduites, laissant Pd la
composante dominante de la consommation électrique.
Vdd
Idd = Icc + Id
Vin
Icc
Icc
Id
Vout
Id
Cl
Figure 3 : profil typique de consommation d'un circuit CMOS
L'équation de référence est donc donnée ci dessous. Elle ne prend plus en compte que la
composante dynamique qui représente, pour des circuits CMOS, au moins 90% de la puissance
totale dissipée.
Pmoy = α . C . Vdd2 . f
(3)
L'équation 3 fait apparaître plusieurs degrés de liberté permettant de réduire la consommation
d'un système :
• La tension d'alimentation. Son intervention quadratique dans la formule (3) permet
d'envisager un gain important d'optimisation par sa réduction. Il faudra cependant rester
avec Vdd > 2.Vt, la tension de seuil, pour éviter une augmentation exponentielle du
temps de propagation (cf. figure 4) ayant un effet néfaste sur le paramètre f.
• La capacité physique, décomposée en une partie venant des cellules CMOS et une autre
provenant des interconnexions. Dans les nouvelles technologies submicroniques, les
deux parties sont à considérer. Leur réduction doit donc mettre en œ uvre des
techniques principalement au niveau physique de la conception (taille des transistors,
placement / routage).
• La fréquence d'horloge peut être améliorée en mettant en œ uvre des techniques
d'optimisations du chemin critique logique, ou bien des méthodes (parallélisme,
pipeline, ...) aux niveaux algorithmique et architectural. En général ce paramètre est lié
à l'optimisation de Vdd.
• L'activité de commutation du circuit. Ce dernier paramètre montre que même un circuit
très complexe ne consomme que s'il est en activité. Cette réduction peut être effectuée
à plusieurs niveaux. Au niveau logique, différents styles évitant les glitches, donc les
commutations inutiles peuvent être envisagées. Une machine d'état peut également être
optimisée au regard de son activité. Le codage des données, leur multiplexage, des
4
techniques de mise en veille aux niveaux logique, architectural ou même système,
peuvent être utilisées. Une distribution ad-hoc de l'horloge doit enfin être étudiée.
Ces différentes voies d'optimisation seront rapidement explorées dans les chapitres suivants.
III. Méthodologies de réduction de la consommation
Il est possible d’utiliser des techniques de conception basse consommation à différentes étapes
de la conception d’un système. La conception descendante consiste à partir du niveau le plus
abstrait d’atteindre le niveau le plus bas. Pour les systèmes, on distingue quatre niveaux:
- le niveau fonctionnel
- le niveau architectural (RTL: Register Transfert Level)
- le niveau logique
- le niveau électrique et physique
Pour chacun des niveaux, les gains sur la consommation, lors de la mise en place de techniques
de basse consommation, sont approximativement les suivants (après [Rabaey 96]).
Abstraction
Max
Min
Gains espérés
Système
Algorithme
Architecture
Circuit
Technologie
10 à 100 fois
Méthodes employées
Partitionnement Power-down
Complexité, concurrence, Régularité, Localité
10 à 90 %
Parallélisme, pipeline, redondance, codage des données
Routage:20 % Logique :15 %
Taille des transistors
30 %
Bibliothèques spécifiques
On remarque qu’il est plus intéressant de mettre en œ uvre les techniques de basse
consommation au début de la démarche de conception qu’à la fin. A tous les niveaux, la
méthode consiste à estimer la consommation des différentes solutions qui sont offertes pour
choisir la meilleure. La recherche actuelle se concentre sur les algorithmes d’estimation. Il est à
noter que la solution optimale pour la consommation peut être pénalisante du point de vue de
la vitesse de traitement et de la taille du circuit (donc de son prix).
III.1 Niveaux architectural et logique : chemin de données
1 Réduction de la tension d’alimentation
La réduction de la tension d’alimentation résulte en une amélioration quadratique de la
dissipation de puissance. Par contre, l’effet négatif est une perte de performances temporelles.
En effet, diminuer la tension d’alimentation affecte le temps de propagation d’une porte
CMOS. Une approximation du premier ordre de ce temps Td est donnée ci dessous.
Cl.Vdd
Cl.Vdd
Td = I
=
(4)
k(W/L)(Vdd - Vt)2
Cl est la capacité de la cellule, I est le courant de sortie, Vt est la tension de seuil, W et L
dépendent de la taille des transistors, et k est dépendant du processus technologique. Cette
formule devient de plus en plus inexacte avec la tendance submicronique des technologies
actuelles. Cependant, la relation inverse entre Vdd et Td reste valable.
En observant la relation liant le temps de traversée et la consommation à la tension
d’alimentation (voir figure ci-dessous), on peut donc conclure que diminuer cette dernière a un
5
impact important sur la consommation. Il faut faire cependant attention à ne pas trop se
rapprocher de la tension de seuil pour éviter d’augmenter de manière exponentielle le temps de
propagation. Les résultats montrent qu'il existe une tension d'alimentation optimale se situant
autour de 1.5 Volts.
30
1
0.8
Délai normalisé
Consommation
0.7
20
0.6
15
0.5
0.4
10
0.3
0.2
5
0.1
0
Consommation normalisée
0.9
Délai
25
0
1
1.5
2
2.5
3
3.5
4
4.5
5
Vdd
Figure 4 : Effets de la tension d'alimentation
Cette perte de performances peut être compensée par d’autres moyens aux niveaux logiques
ou architecturaux. Par exemple, un additionneur à propagation de retenue (ripple-carry adder)
peut être remplacé par une structure plus rapide comme un additionneur à anticipation de
retenue (carry lookahead adder). Ce dernier possède une surface plus importante qui se traduit
par une augmentation de la capacité physique. Mais ceci est rattrapé par le fait que
l’additionneur le plus rapide peut travailler à une tension d’alimentation plus faible pour des
performances équivalentes.
D’autres optimisations peuvent être mises en œ uvre comme l’utilisation du pipeline ou du
parallélisme [Macii96]. L’exemple suivant montre comment des techniques architecturales
peuvent être utilisées pour réduire la puissance. La figure ci-dessous consiste en une unité de
traitement 16 bits de type addition / comparaison très utilisée dans les systèmes de
communication utilisant des codeurs de type Viterbi. Cette structure est issue de [Chand92], et
a été calculée en utilisant les outils Compass D.A. et powercalc.
La fréquence de fonctionnement est fixée à 25 MHz, soit un chargement des registres A, B et
C avec une période d’horloge de 40ns. On considérera que le chemin critique de ce circuit est
de 40 ns, ce qui interdit tout abaissement de l’alimentation.
6
A
+
Tclk
>
<
B
Tclk
C
Tclk
Surface = 788x555µ2 = 0.44 mm2
3823 Transistors
56 mm d’interconnexions
Fclk = 25 MHz
Vdd = 5V
Pmoy = 14.7 mW
Figure 5 : Chemin de données Version 1 : schéma et plan de masse
La puissance moyenne consommée par cette UT est donnée par :
Pref = Cref . Vref2 . Fref = 14.7 mW
où Cref est la capacité effective commutée à chaque cycle. Cette capacité a été déterminée par
un moyennage de l’activité sur la simulation d’une séquence d’entrée aléatoire de distribution
uniforme. Cref = α . Ctotal, avec Ctotal = 31pF dans notre cas.
Un des moyens de maintenir les performances tout en abaissant la tension d’alimentation est
d’utiliser une architecture parallèle. La figure ci dessous montre deux unités 16 bits de type
addition / comparaison identiques, connectées en parallèle. Chaque unité peut donc travailler à
une vitesse moitié par rapport à l’exemple précédent. Les périodes d’horloge des registres
passent donc de 40ns à 80ns. L’alimentation peut être abaissée de 5V à 2.9V (utilisation des
abaques ou formules de Td en fonction de Vdd) pour que le temps du chemin critique du
datapath double.
A
+
2•Tclk
>
<
B
2•Tclk
C
M
U
X
2•Tclk
A
+
2•Tclk
>
<
B
Tclk
2•Tclk
C
2•Tclk
Vdd = 5V
Pmoy = 15.4 mW
Surface = 1130x768µ2 = 0.87 mm2
7638 Transistors
111 mm d’interconnexions
7
Figure 6 : Chemin de données Version 2 : schéma et plan de masse
La capacité totale de la deuxième version du datapath passe à Ctotal = 64.6pF, soit un peu plus
du double (x2.07). Le bilan de puissance est donc :
Pversion2 = (2.15 Cref) . (0.58 . Vref)2 . (0.5 . Fref) # 0.36 Pref = 5.3 mW
La puissance moyenne a donc été optimisée par un facteur de 2,8. Le produit puissance x
surface a, quant à lui, été divisé par 1,4. Ce type d’optimisation permet donc un gain important
en consommation, mais n’est applicable qu’à un système non contraint par la surface.
Une autre optimisation possible pour cette UT est d’utiliser le pipeline. Un étage de pipeline
peut être introduit entre l’additionneur et le comparateur en diminuant environ le temps du
chemin critique de moitié, tout en augmentant la capacité totale de seulement 15%. La tension
d’alimentation peut être descendue également jusqu’à 2.9V tandis que l’horloge du système
reste identique. Le bilan de puissance devient donc :
Ppipeline = (1.15 Cref) . (0.58 . Vref)2 . Fref # 0.39 Pref
2 Réduction de la capacité effective
Comme la capacité effective est le produit de la capacité physique et de l’activité de
commutation, une minimisation de ces deux facteurs doit être envisagée.
2.1 Style logique
La première approche consiste à utiliser le style de logique minimisant la capacité effective.
Dans [Chand92] à l’U.C. Berkeley, on trouvera l’étude du produit puissance x surface
d’additionneurs 8 bits implémentés dans différents styles logiques : logique CMOS statique ou
dynamique, logique à base de transistors de passage (CPL), logique différentielle (DCVSL).
Une comparaison complète de l’étude des différentes logiques peut être trouvée dans la
littérature [Rabaey96, chap. 7].
2.2 Glitch
Une contribution majeure de consommation de courant est due aux glitch (transitions
dynamiques parasites) dans les structures complexes, telles que les additionneurs ou les
multiplieurs. Les différents chemins logiques qu’elles contiennent génèrent souvent des
transitions parasites sur les signaux internes de ces structures, qui engendrent à leur tour une
dissipation supplémentaire de puissance. Les travaux de [Callaw92] ont montré qu’une
optimisation d’un facteur 5 est possible sur un multiplieur, entre une version carry-save et une
version balanced Wallace-tree.
2.3 Activité de commutation
Le multiplexage de plusieurs opérations sur une même unité peut avoir des effets très néfastes
sur la consommation globale d’un système. En effet, cela augmente l’activité de commutation
de cette ressource, comme le montre l’exemple d’un bus partagé. La figure ci dessous montre
la comparaison de la consommation de deux compteurs fonctionnant en parallèle [Rabaey 962]. Dans le premier cas, les deux compteurs délivrent leurs résultats sur deux unités de type
bus séparées, tandis que dans le second cas, les résultats sont multiplexés sur un seul bus.
L’analyse de l’activité des bus en fonction du décalage entre les états internes des compteurs
8
montre que le premier cas est toujours optimal en consommation si les deux compteurs ne sont
pas totalement synchrones.
Compteur 1
Compteur 2
Bus1
Compteur 1
M
U
X
Bus2
Bus
Compteur 2
a) Implémentation parallèle
b) Multiplexage temporel
Figure 7 : Multiplexage d'une unité fonctionnelle
En conclusion, lorsqu’on cherche a optimiser la consommation électrique, il ne faut pas utiliser
avec excès le partage de ressources. Celui ci tend a rendre aléatoire la séquence des signaux
d’entrée de l’unité fonctionnelle, engendrant ainsi une augmentation de son activité donc de sa
capacité effective.
3 Distribution optimisée de l'horloge
La synchronisation des systèmes numériques nécessite un ou plusieurs signaux pour
coordonner et séquentialiser les opérations. Le plus souvent, un arbre d’horloge (voir figure cidessous) est construit pour fournir le signal d’horloge aux différents modules du système. Ces
quelques considérations soulignent l’importance de l’horloge dans les performances du système
et de sa consommation totale. En effet, l’énergie dissipée dans un circuit CMOS est toujours
dépendante de l’horloge qui gère son activité. Par exemple, le DEC Alpha utilise un générateur
d'horloge d'une capacité totale de 3250 pF, ce qui représente à peu près 40% des 50 Watts
dissipés par cette puce!
La construction d’un arbre d’horloge est un point délicat puisqu’elle résulte d’un compromis
entre différents objectifs:
- Les horloges étant de plus en plus rapides il faudra ajuster au mieux les longueurs et
largeurs des pistes pour réduire les retards (skew), ceci entraîne une augmentation des
interconnexions et donc de la consommation.
1x
1x
1x
4x
16x
1x
•••
1x
Figure 8 : Arbre de distribution d'horloge
-
Une bufferisation de type distribué (figure 8) améliorera la consommation.
Diminuer la tension d’alimentation nécessite par exemple d’augmenter la taille des
pistes d’horloge pour assurer la même vitesse de transitions des signaux.
Une distribution au niveau système de l'horloge en evitant de sortir de la puce en
passant par un classique PCB, c'est à dire en utilisant les technologies flip-chip ou
MCM.
9
Lorsque l’horloge est envoyée sur un bloc fonctionnel ,des transitions y sont effectuées même
si ce bloc est inutilisé à ce moment: il en résulte une consommation d’énergie abusive. Il est
donc intéressant d’inhiber l’horloge des modules inactifs en insérant un module de déconnexion
sur le chemin de l’horloge. La figure 9 présente ce principe sur un contrôleur de type DSP. Le
bloc superviseur de l’arrêt des horloges n’est jamais déconnecté.
cpt
@ ROM instr
prog
instructions
ctrl
stop_clock
commande de boucles
horloge
déconnexion
des horloges
horloges
vers UTs
Figure 9 : Principe de la déconnexion d’horloge
Un problème se pose alors. En effet, la traversée du module de déconnexion de l’horloge ne se
fait pas en un temps nul. Donc, lorsque le module est passant, elle arrive avec un temps de
retard sur le module de calcul. Ce retard (Skew) peut entraîner des transitions inopportunes
(phénomène de Glitch) qui consomment de l’énergie.
D’une façon générale, les circuits asynchrones (c’est à dire sans horloge globale unique)
consomment moins à priori. Par contre, leur conception et leur validation est plus difficile
[Renaudin96], [Dedou97]. Il parait difficile de concevoir des circuits totalement asynchrones,
cependant des techniques mixtes, localement asynchrones [Abnous96] sont utilisées.
III.2 L'unité de stockage des données : la mémoire
La conception d'un système ne s'appuie pas uniquement sur la réalisation de la partie opérative,
mais elle doit aussi s'intéresser à la partie mémorisation de celui-ci.
Dans le cadre de la maîtrise de la consommation du système, il est important de ne pas négliger
l'unité de stockage. En effet, des études récentes ont montré que cette unité représente, en
général, un pourcentage important du coût de l'application [Vanoos 95]. Ceci est une
conséquence de l'évolution de la densité d'intégration qui permet à l'heure actuelle
d'implémenter de grande capacité mémoire directement sur le composant réalisant les calculs.
Le coût de la mémorisation peut être répertorié selon différents paramètres qui sont la surface,
la consommation, etc. ... Comme pour l'unité opérative, les paramètres surface et
consommation ne sont pas forcément corrélés : l'augmentation de surface ne signifie pas de
façon systématique l'augmentation de consommation.
1 Causes de la consommation des mémoires
10
De même que l'activité de la partie opérative engendre une consommation d'énergie, l'activité
de la mémoire est à la source de la consommation de cette unité. La cause principale de
l'activité d'une mémoire découle du nombre d'accès qui sont réalisé avec ce composant. Il s'agit
alors d'une consommation dynamique.
Notons que cette consommation ne dépend pas seulement du nombre d'accès réalisé. En effet,
la position de la mémoire a une importance non négligeable. Placer une mémoire sur le même
substrat silicium que la partie opérative (on chip) limite de façon importante le courant à
fournir pour réaliser cet accès. Par contre, si la mémoire est située hors du boîtier (off chip)
l'accès devra alors être réalisé au travers d'un buffer de sortie, dans ce cas une amplification
devra être réalisée et la consommation deviendra importante.
Datapath
Mémoire
Mémoire
Mémoire
Figure 10 : Architecture mémoire générale
2 Détail des consommations mises en jeu lors d'un d'accès
Nous représentons ici, la modélisation des consommations mises en jeu lors d'un accès à une
mémoire externe au processeur. Ce cas peut être simplifié lorsque l'accès est réalisé en interne
au processeur (c'est à dire avec une mémoire on chip).
PA
TA
BSP
TA
BEM
RD
TD
destination
TD
BEP
BSM
Figure 11 : Modélisation de la consommation lors d'un accès mémoire
1) production de l'adresse (PA) de la données à accéder, la consommation qui découle de cette
phase dépend beaucoup du générateur d'adresse mis en place ;
2) transport de l'adresse jusqu'au buffer de sortie du processeur ;
3) passage au travers du buffer de sortie du processeur, la puissance du buffer dépend du
nombre des caractéristiques du bus d'adresses (notamment sa longueur) ;
11
4) transport de l'adresse sur le bus d'adresses ;
5) passage au travers du buffer d’entrée de la mémoire, la taille de la mémoire définit de
manière logarithmique la complexité du circuit de décodage et donc sa consommation ;
6) recherche de la donnée, décodage ;
7) passage au travers du buffer de sortie de la mémoire ;
8) transport de la donnée sur le bus de données ;
9) passage au travers du buffer d'entrée du processeur ;
10) transport de la donnée vers sa destination ;
11) utilisation de la donnée ;
Évidemment, la consommation d'un accès mémoire dépend largement des tailles des différents
bus mis en jeu : bus de données et bus d'adresses.
3 Les voies de recherche pour diminuer la consommation des mémoires
De nombreuses études se sont penchées sur la minimisation de la consommation des mémoires
[Farrahi95], [Panda 96] [Wuytack94]. Les principaux axes de recherche concernent les points
suivants :
- réduction du nombre d'opérations de lecture et d'écriture aux mémoires : ceci peut être
réalisé par des transformations algorithmiques. Il s'agit alors d'un travail réalisé très tôt
dans le cycle de conception. Un exemple de transformation est donné en figure 12. Sur
la figure 12.a, on remarque qu'il est nécessaire de mémoriser le tableau B, de plus il est
fort probable que le nombre de registres de la partie opérative ne permettra pas de
conserver l'ensemble du vecteur B dans le processeur, le nombre d'accès à réaliser sera
alors très important. Après transformation (voir figure 12.b), il sera alors simple de
supprimer à la fois la mémorisation du vecteur B et les transferts qui lui étaient
associés. Le gain de la transformation est double : il concerne à la fois la taille de la
mémoire nécessaire mais aussi le nombre de transferts total à assurer ;
FOR i:= 1 TO N DO
B[i] := f(A[i]) ;
FOR i:= 1 TO N DO
C[i] := g(B[i]) ;
FOR i:= 1 TO N DO BEGIN
B[i] := f(A[i]) ;
C[i] := g(B[i]) ;
END ;
a) Code avant transformation
b) Code après transformation
Figure 12 : Exemple de transformation algorithmique
-
-
-
mise en place de buffers pour limiter les accès aux mémoires. Lorsque ces buffers sont
de petites tailles, ils sont placés directement sur le substrat de la partie opérative
(concept proche du cache mais en plus simple) ;
placement des données les plus souvent accédées dans des petites mémoires et
localisation de ces mémoires sur le substrat de la partie opérative. Une analyse des
durées des fréquences d'accès est alors nécessaire afin de répartir judicieusement les
données dans les différents niveaux de mémoires ;
minimisation de la taille mémoire totale par réutilisation des points mémoires lorsque
les données qui y sont stockées ont des durées de vies disjointes.
12
III.3 Représentation des nombres
La modélisation des signaux influe sur la consommation interne. Une représentation qui
minimise les transitions de bits permettra par exemple de réduire la consommation (si les
données successives sont fortement corrélées). Plusieurs alternatives sont possibles :
nombre en virgule fixe / nombre en virgule flottante
signe + valeur absolue / complément à deux
nombre non codé / nombre codé
Le choix d’une de ces représentations se fera selon des critères de précision, de facilité de
conception d’architecture ou de performance (surface, vitesse ou consommation).
Le marchandage le plus évident est celui sur la représentation en virgule fixe ou flottante des
nombres. En effet, une représentation en virgule fixe nécessite le minimum au niveau
architectural et permettra donc une consommation plus basse. Malheureusement des problèmes
de dépassement sont, dès lors, à prévoir. Même si une conversion des données (basée sur des
décalages) permet d’éviter ces problèmes, le traitement algorithmique mis en place entraînera
une perte de performance en vitesse. A l’inverse, une représentation flottante permet d’éviter
ces problèmes de dépassement au dépend d’une architecture plus élaborée qui consommera
donc plus.
Le choix de la longueur du mot du chemin de données est également primordial car il influe
directement sur la consommation qui dépend de la capacité du bus et de la probabilité de
transitions des bits.
La représentation arithmétique des données est aussi un facteur intervenant dans la
consommation. Dans une représentation en virgule fixe et complément à deux les bits de poids
faibles (LSB) sont des bits de précision alors que ceux de poids forts (MSB) sont des bits
représentant la partie entière et le signe.
Les bits de poids forts contiennent donc une redondance d’informations qui peut conduire à
une activité et une consommation inutiles pour les données qui changent souvent de signe
(exemple du format Q14 : nombre en virgule fixe cadrée à gauche sur 16 bits avec deux bits de
signe). Par contre, une représentation « signe valeur » n’utilise qu’un seul bit pour le codage
du signe de la donnée et réduit donc les transitions dues à un changement de signe.
Figure 13 : Probabilités de transition des bits pour deux représentations différentes
Les graphiques ci-dessus montrent que l’activité dans les bits de poids forts dépend de la
corrélation temporelle entre les données tandis que les bits de poids faibles sont assimilés à du
13
bruit. Ils décrivent l’activité des bits pour chacune des représentations citées ci-dessus pour
une suite de données gaussienne ayant un facteur de corrélation ρ. Ils démontrent que la
représentation « signe valeur » réduit l’activité dans la région des bits de poids forts. Cette
représentation est toutefois plus sensible au problème de débordement et les mécanismes mis
en jeu pour résoudre ce problème annihilent les gains en consommation possibles !
Le problème posé est donc d’éviter une perte d’informations due à la représentation choisie.
Ainsi il est possible de différencier les grands nombres des petits, ce que ne fait pas le codage
en complément à deux qui utilise une quantification linéaire. Le codage en virgule flottante
permet cette différentiation.
Une autre solution est un codage logarithmique mais de nombreux calculs n’ont pas
d’implémentation aisée dans ce domaine (exemple de l’addition).
Un adressage en code Gray (des valeurs successives ne diffèrent dans leurs codages que par un
bit) permet également de réduire le nombre de transitions de bits et donc de diminuer la
consommation (intéressant sur un adressage séquentiel).
En conclusion plusieurs représentations permettent de réduire la consommation, le choix entre
l’une d’elles résultera d’une concession dans un autre domaine (surface ou temps).
III.4 Transformations algorithmiques : premiers pas
Au niveau algorithmique, on peut sauver une part importante de la consommation d’un
système. Les approches se basent sur des modifications de la structure des calculs de
l’algorithme tout en conservant son comportement. Deux voies sont possibles :
• Permettre la réduction de la tension d’alimentation en utilisant des transformations
améliorant les performances de calcul (speed-up), et augmentant le temps des chemins
critiques limitant la fréquence maximale d'utilisation.
• La réduction de la capacité effective au travers de l’application de transformations plus
génériques, permettant de réduire le nombre total d’opérations, le remplacement
d'opérations par d'autres plus adéquates (e.g. multiplications par additions/décalages),
l'optimisation de l'utilisation des ressources, ou encore la réduction de la taille des
chemins de données.
x(n)
+
+
y(n)
D
+
x
x
+
D
x
x
Retiming 1
Retiming 2
x(n) +
+
y(n)
x(n) +
+
y(n)
D
+
D
x
D
x
D
x
D
x
D
+
+
D
D
x
x
D
D
x
x
+
D
Figure 14 : Exemple de transformation sur un filtre IIR : retiming
14
Filtre IIR
Chemin critique = 4
2 multiplieurs
2 additionneurs
Énergie / ech. = 10.28 nJ
Retiming 1
Chemin critique = 3
4 multiplieurs
2 additionneurs
Énergie / ech. = 11.92 nJ
Retiming 2
Chemin critique = 3
2 multiplieurs
2 additionneurs
Énergie / ech. = 9.85 nJ
(Réduction de 20%)
Tableau 2 : Résultats de synthèse après retiming
On pourra trouver un état de l'art de ces techniques très récentes dans [Chand95].
IV Conclusions
La consommation des circuits intégrés est devenue la contrainte de conception la plus
importante. En effet, aussi bien dans les applications portables (durée de vie des batteries,
encombrement), que dans les applications hautes performances (coût du système,
environnement), il est nécessaire de mettre en œ uvre des méthodes de conception spécifiques
au problème de la basse consommation.
Les fondeurs de circuits ont bien sûr pris conscience de cette évolution et de ce nouveau
marché. Les vendeurs de CAO commencent à peine à pouvoir proposer des outils d'estimation
et de diminution de la consommation. Les principaux fournisseurs (Synopsys, Mentor
Graphics, Compass) proposent déjà ce type d'outils : estimateurs probabilistes au niveau
logique de la consommation d'un circuit; optimisation, toujours au niveau logique, d'un circuit
selon le critère de consommation. Des études démarrent sur la synthèse architecturale.
Cet article n'a bien sûr pas adressé toutes les voies de minimisation de la puissance. En
particulier, les problèmes au niveau système n'ont pu être abordés. Il existe un grand nombre
de techniques, en particulier l'utilisation de différents modes de veille. Par exemple, l'IBM
thinkpad possède plusieurs modes de fonctionnement qui lui permettent d'optimiser la gestion
de l'alimentation (Off, Full On, Normal On, Stand-by, Suspend, Hibernation), les trois derniers
modes permettant une réduction de 70 à 99% de la puissance consommée.
De nouvelles innovations sur les autres composants d'un système embarqué sont à l'étude :
• Batteries rechargeables Lithium ou Polymères
• Convertisseurs DC-DC
• Nouvelles technologies d'écran basse consommation
• Technologies de disques durs
Les optimisations sur les circuits analogiques n'ont malheureusement pas été abordées, en
particulier parce qu'elles découlent d'études propriétaires, situées principalement au niveau
technologique. On peut par exemple citer µem Marin qui propose des technologies et des
bibliothèques optimisées basse-tension basse-consommation.
Les principales techniques sont une réduction de la tension d'alimentation ou l'évaluation de
compromis entre linéarité et consommation. On peut également citer en analogique des
techniques de veille, en particulier en réception HF, où des blocs fonctionnels de différents
compromis qualité / consommation se réveillent mutuellement en fonction du mode système.
15
L'utilisation de différentes techniques de modulation et d'émission HF ont également permis de
réduire le courant moyen circulant dans les émetteurs radio [Halchin97].
Un dernier concept de grande importance est de ne pas oublier qu'il n'y a pas que le matériel
qui consomme, mais également le logiciel qui utilise ce matériel. Tout au moins dans les
microprocesseurs, microcontrôleurs, et processeurs de traitement du signal, c'est le logiciel qui
dirige l'activité des transistors, donc la consommation du système.
Une analyse de la consommation des instructions d'un µp [Tiwari94], puis un modèle
d'estimation de la puissance dissipée par le code d'une application implantée sur celui ci permet
d'envisager des optimisations au niveau système de très grande efficacité [Roy96].
Bibliographie
[Abnous96]
A. Abnous, and J. Rabaey, “Ultra Low-Power Domain Specific Multimédia
Proceessors”, IEEE Workshop on VLSI Signal Processing, IEEE Press, pp.
461-470, Oct 1997.
[Callaw92]
T. Callaway, and E. Swartzlander, “Optimizing Arithmetic Elements for Signal
Processing”, IEEE Workshop on VLSI SP, IEEE Press, pp. 91-100, Oct 1992.
[Chand92]
A. Chandrakasan, S. Sheng, and R. Brodersen, “Low Power CMOS Digital
Design”, IEEE Journal of Solid State Circuits, vol. SC27, no. 4, pp. 10821087, April 1992.
[Chand95]
A. Chandrakasan, M. Potkonjak, R. Mehra, J. Rabaey and R. Brodersen,
“Optimizing Power Using Transformations”, IEEE Transactions on Computer
Aided Design of Integrated Circuits and Systems, vol. 14, no. 1, pp. 12-31,
1995.
[Cousin97]
J-G. Cousin, D. Chillet and O. Sentieys, “Power Estimation and Optimisation
for ASIPs”, Submited to 1997 International Symposium on Low-Power Design,
Monterey CA, August 1997.
[Davis96]
W. Davis, “Semiconductor key issue : Power and Communication”, Keynote
Speaker at IEEE International ASIC Conference, Rochester NY, Sept. 1996.
[Dedou97]
J. Dedou and O. Sentieys, “Synthèse d’Architectures Asynchrones en
Traitement Numériques du Signal”, Colloque CAO de circuits intégrés et
systèmes, Grenoble, Janvier 1997.
[Farrahi95]
A. H. Farrahi, G. E. Téllez, M. Sarrafzadeh, “Memory segmentation to exploit
sleep mode operation”, Design Automation Conference DAC, pp. 36-41, 1995.
[Halchin97]
D. Halchin, and M. Golio, “Trends in Portable Wireless Applications”,
Microwave Journal, pp. 62-78, jan 1997.
[Macii96]
E. Macii, “High Level Design and Optimization for Low Power”, NATO
Advance Study : Low Power in Deep Submicron Electronics, Aug 1996.
16
[Panda 96]
P. R. Panda, N. D. Dutt, “Reducing adress bus transitions for low power
memory mapping”, EDAC, pp. 63-67, 1996.
[Rabaey96]
J. Rabaey and M. Pedram, “Low Power Design Methodologies”, Kluwer
Academics, 1996.
[Rabaey96-2] J. Rabaey, “Digital Integrated Circuits, a design perspective”, Prentice Hall,
1996.
[Renaudin96] M. Renaudin, “Asynchronisme et Adéquation Algorithme Architecture”,
Journées AAA, janvier 1996.
[Roy96]
K. Roy and M. Johnson, “Software Power Optimization”, NATO Advance
Study : Low Power in Deep Submicron Electronics, Aug 1996.
[Sentieys93]
O. Sentieys, E. Martin and J-L. Philippe, “VLSI Architectural Synthesis for an
Acoustic Echo Cancellation Application”, IEEE Workshop on VLSI Signal
Processing, IEEE Press, pp. 84-92, Oct 1993.
[Tiwari94]
V. Tiwari, S. Malik and A. Wolfe, “Power Analysis of Embedded Software : A
First Step towards Software Power Minimization”, IEEE Transactions on VLSI
Systems, vol.2 no. 4, pp. 437-445, Dec. 1994.
[Vanoos 95]
P. Vanoostende, G.V. Wauve, “Issues in lom-power design for telecom”,
IEEE, pp. 591-593, 1995.
[Verbau96]
I. Verbauwhede, and al, “A Low-Power DSP Engine for Wireless
Communications”, IEEE Workshop on VLSI Signal Processing, IEEE Press,
pp. 471-480, Oct 1997.
[Wuytack 94] S. Wuytack, F. Catthoor, F. Franssen, L. Nachtergaele and H. De Man, “Global
Communication and Memory Optimizing Transformations for Low-Power
Systems”, 1995 International Symposium on Low-Power Design, Napa Valley
CA, pp. 203-208, April 1994.
17