1.3. Problématique :
Les années passant, les circuits sont devenus de plus
en plus complexes. Alors que dans le passé un additionneur constituait
un composant de base pour concevoir un circuit plus complexe, un circuit ou
système actuel peut avoir pour composant de base un ... processeur !
Autant dire que la complexité des systèmes a
nécessité de nouvelles méthodes de conception (on parle
aujourd'hui de compilation de silicium) associant l'usage intensif de
l'informatique, de la théorie des graphes, de la recherche
opérationnelle, .... La complexité des systèmes est
évidemment liée aux composants que nous utilisons actuellement
dans notre vie quotidienne (téléphones portables, PDAs,
systèmes embarqués - véhicules, satellites, ..-).
Ces systèmes aussi divers que variés ont des
caractéristiques différentes. Certains nécessitent une
faible consommation d'énergie (téléphones portables,
circuits embarqués sur des satellites -l'énergie solaire
emmagasinée le jour doit suffire pour faire fonctionner le circuit la
nuit-, ...). D'autres, par contre, nécessitent un temps de traitement
adéquat (systèmes fonctionnant en temps réel). Ces
nombreuses applications qui nécessitent des caractéristiques
électriques différentes amènent à opter pour des
méthodes de conception adéquates afin de répondre
à leurs contraintes, tout en satisfaisant,
rapidement, la demande du marché. Une solution
partielle est d'opter pour une méthode de conception
conjointe Hardware - Software de circuits. L'idée est
d'implémenter en software toutes les parties qui sont censées
changer d'une application à une autre, et en Hardware (donc une fois
pour toutes) celles qui sont communes aux applications visées par la
compagnie. Ainsi, la circuiterie Hardware déjà prête,
l'écriture rapide de nouveaux codes et leur intégration avec le
Hardware permettraient, en partie, produire rapidement un nouveau
système à partir d'un ancien (?Design reuse?). Toutefois,
produire rapidement un système ne suffit pas. Il faut aussi qu'il
satisfasse les différentes contraintes (principalement la surface, la
vitesse et la consommation d'énergie). De ce fait, cette
méthodologie de conception (conception conjointe) ne suffit pas à
elle seule. Il faut l'accompagner par des techniques supplémentaires de
conception.
Le travail décrit dans ce mémoire est une
contribution pour répondre favorablement à cette
problématique, c'est-à-dire comment concevoir, rapidement, un
système répondant à un certain cahier de charges. Les
méthodes de conception décrites précédemment,
notamment l'utilisation d'une bibliothèque de cellules, ne suffisent pas
à elles-seules et il s'agit alors de les améliorer. Par
définition, les instances d'un circuit donné, sont des circuits
réalisant la même fonction, mais
possédant des caractéristiques électriques
différentes. Afin de répondre à la
problématique donnée, l'idée serait de constituer une
bibliothèque de circuits ayant chacun plusieurs instances
(réalisant la même fonction) mais présentant des
caractéristiques différentes. Ainsi, pour constituer
rapidement le système désiré, il suffit
de puiser de cette bibliothèque les composants qui sont
nécessaires pour l'application. Pour répondre aux
contraintes imposées par cette application, il suffit
de trouver la bonne combinaison. Nous verrons dans la suite de ce
mémoire que la détermination de cette combinaison ne peut se
faire manuellement étant donné le nombre fantastique de
combinaisons.
L'utilisation-même d'un processeur ne peut se faire, sans
l'utilisation d'une méthode adéquate, compte tenu de la taille de
l'espace des solutions.
Nous verrons plus en détails dans le prochain chapitre
que la complexité algorithmique du problème posé n'est pas
polynomiale. De ce fait, une méthode exhaustive est exclue, et il faut
alors recourir à une méthode permettant de générer,
en un temps CPU raisonnable, une solution optimale ou du moins
pré-optimale. Mais comment ?mesurer? la qualité de cette solution
? En général, on a recours à des benchmarks qui
sont des données mises à la disposition des chercheurs et
générées en tenant compte de la réalité (cas
industriel). Ainsi, des méthodes peuvent être comparées sur
les mêmes données. Cette comparaison permettrait
d'opter pour la méthode développée (si elle a
été favorablement comparée, sur plusieurs jeux d'essais,
aux autres méthodes) ou recourir à son amélioration.
Toutefois, ces benchmarks n'existent pas pour toute
problématique, en particulier pour le problème traité dans
ce mémoire. Il ne reste alors qu'une seule alternative, celle de
recourir à la méthode exacte qui consiste à étudier
exhaustivement toutes les combinaisons, puis de sélectionner celle qui
réponde le mieux à l'application concernée. Evidemment,
ceci n'est possible que si l'espace des solutions le permet, et notons que ce
type de comparaison sert beaucoup plus à critiquer la méthode
approchée (repère pour son amélioration) que pour sa
validation. En respectant les règles de base pour développer une
heuristique [5], et en la comparant favorablement à la méthode
exacte, et ce, pour plusieurs jeux d'essais, on pourrait espérer que la
solution obtenue (et incluse dans un espace de solutions très large
interdisant de l'explorer de manière exhaustive) soit fiable.
|