}}}
[[PageOutline]]
TP Précédent: MjpegCourse/Coproc
= 0. Objectif =
Au cours des TP précédents, vous avez eu l'occasion de prendre en mains les
méthodes suivantes de paramétrage:
* Placement des ressources logicielles
* Modification des tailles de caches
* Dédoublement du flot de traitement
* Architecture multi-cluster
* Introduction de coprocesseurs matériels
Dans ce TP, on vous laisse libre de faire une exploration architecturale avec
tous ces paramètres. La contrainte sera une contrainte de coût:
* En surface de circuit
* En fréquence de travail
* En consommation
Pour faire un test plus réaliste que ceux mis en oeuvre aux TP précédents, on
utilisera une vidéo de 160x120 pixels. Elle est fournie dans `~pouillon/mjpeg_160x120.raw`.
'''Attention, la taille nécessaire en pile pour la fonction `Libu` dépend de la largeur de l'image,
redimentionnez votre pile en fonction de ce paramètre ! '''
La seule contrainte finale sur le SoC est la fréquence de la vidéo décompressée.
On cherche à lire cette vidéo à 25 fps.
Une fréquence raisonnable pour votre SoC sera entre 100 Mhz et 300 Mhz.
= 1. Première implémentation =
[[Image(MjpegCourse:q.gif)]] Que proposez-vous à priori comme architecture ? Combien de
clusters (si architecture clusterisée), combien de processeurs, quelles tailles de caches,
quelle occupation en mémoire ? ...
= 2. Prise en compte du coût =
On donne les estimateurs suivants pour l'évaluation de la surface (procédé de fabrication 90 nm):
* Cache: 0.008mm^2^ + 0.05mm^2^ * size (en Ko)
* !MultiRam: 0.05mm^2^ * size (en Ko)
* Mips: 0.16mm^2^
* Contrôleur Mwmr: 0.013mm^2^ par canal MWMR
* !LocalCrossbar: 0.005mm^2^ * nb_initiateur * nb_cible
* Vgmn: 0.01mm^2^ * nb_initiateur * nb_cible (si archi clusterisée, nb_initiateur = nb_cible = nb_clusters)
* Coprocesseur IDCT matériel: 0.01mm^2^ + 70mm^2^ / latence (en cycles)
* Tg: 0.3mm^2^
* Ramdac: 0.01mm^2^ + 0.05mm^2^ * size ram video (en Ko, 1 pixel = 1 octet)
''Ces valeurs sont données à titre indicatif, pour une technologie fictive. Elle devraient être redéfinies
pour le procédé de fabrication visé.''
[[Image(MjpegCourse:q.gif)]] Evaluez le coût de votre SoC en surface.
[[Image(MjpegCourse:q.gif)]] On veut finalement évaluer la consommation du SoC, on utilise la
fonction de coût donnant `conso` ''proportionnel à'' `fréquence * surface`.
Donnez la consommation de votre circuit.
= 3. Exploration architecturale =
[[Image(MjpegCourse:q.gif)]] Essayez de modifier votre design pour minimiser la consommation
tout en remplissant la contrainte temporelle de 25 fps.
[[Image(MjpegCourse:q.gif)]] Créez une feuille de calcul dans !OpenOffice reprenant toutes
ces contraintes et les fonctions de coût. Insérez dans chaque ligne les caractéristiques des
SoC que vous simulez.
[[Image(MjpegCourse:q.gif)]] Choisissez le meilleur SoC.
= 4. Compte-Rendu =
Vous rendrez deux fichiers (pas une archive tar):
* Un rapport nommé `binome0_binome1.pdf`
* La feuille de calcul nommée `binome0_binome1.ods`
Ces fichiers devront être livrés avant le mardi 20 mars 2007, 18h00 à [MailAsim:nipo Nicolas Pouillon]