| 1 | {{{ |
| 2 | #!html |
| 3 | <h1>TP6: Exploration architecturale complète</h1> |
| 4 | }}} |
| 5 | [[PageOutline]] |
| 6 | |
| 7 | TP Précédent: MjpegCourse/Coproc |
| 8 | |
| 9 | = 0. Objectif = |
| 10 | |
| 11 | Au cours des TP précédents, vous avez eu l'occasion de prendre en mains les |
| 12 | méthodes suivantes de paramétrage: |
| 13 | * Placement des ressources logicielles |
| 14 | * Modification des tailles de caches |
| 15 | * Dédoublement du flot de traitement |
| 16 | * Architecture multi-cluster |
| 17 | * Introduction de coprocesseurs matériels |
| 18 | |
| 19 | Dans ce TP, on vous laisse libre de faire une exploration architecturale avec |
| 20 | tous ces paramètres. La contrainte sera une contrainte de coût: |
| 21 | * En surface de circuit |
| 22 | * En fréquence de travail |
| 23 | * En consommation |
| 24 | |
| 25 | Pour faire un test plus réaliste que ceux mis en oeuvre aux TP précédents, on |
| 26 | utilisera une vidéo de 160x120 pixels. Elle est fournie dans `~pouillon/mjpeg_160x120.raw`. |
| 27 | |
| 28 | '''Attention, la taille nécessaire en pile pour la fonction `Libu` dépend de la largeur de l'image, |
| 29 | redimentionnez votre pile en fonction de ce paramètre !''' |
| 30 | |
| 31 | La seule contrainte finale sur le SoC est la fréquence de la vidéo décompressée. |
| 32 | On cherche à lire cette vidéo à 25 fps. |
| 33 | |
| 34 | Une fréquence raisonnable pour votre SoC sera entre 100 Mhz et 300 Mhz. |
| 35 | |
| 36 | = 1. Première implémentation = |
| 37 | |
| 38 | [[Image(MjpegCourse:q.gif)]] Que proposez-vous à priori comme architecture ? Combien de |
| 39 | clusters (si architecture clusterisée), combien de processeurs, quelles tailles de caches, |
| 40 | quelle occupation en mémoire ? ... |
| 41 | |
| 42 | = 2. Prise en compte du coût = |
| 43 | |
| 44 | On donne les fonctions de coût suivantes (surface): |
| 45 | * Cache: XXXX + YYYY * (dcache_lines*dcache_words+icache_lines*icache_words) |
| 46 | * !MultiRam: XXXX + YYYY * size (en octets) |
| 47 | * Mips: XXXX |
| 48 | * Contrôleur Mwmr: XXXX |
| 49 | * Vgmn |
| 50 | * sans clusters: XXXX * nb_initiateur + YYYY * nb_cible |
| 51 | * avec clusters: XXXX * nb_cluster |
| 52 | * !LocalCrossbar: XXXX * nb_initiateur + YYYY * nb_cible |
| 53 | * Coprocesseur IDCT matériel: XXXX + YYYY / latence |
| 54 | * Tg: XXXX |
| 55 | * Ramdac: XXXX |
| 56 | |
| 57 | [[Image(MjpegCourse:q.gif)]] Evaluez le coût de votre SoC en surface. |
| 58 | |
| 59 | [[Image(MjpegCourse:q.gif)]] On veut finalement évaluer la consommation du SoC, on utilise la |
| 60 | fonction de coût suivante: `Conso = (Qstat + fréquence) * surface` avec Qstat = XXXX. |
| 61 | Donnez la consommation de votre circuit. |
| 62 | |
| 63 | = 3. Exploration architecturale = |
| 64 | |
| 65 | [[Image(MjpegCourse:q.gif)]] Essayez de modifier votre design pour minimiser la consommation |
| 66 | tout en remplissant la contrainte temporelle de 25 fps. |
| 67 | |
| 68 | [[Image(MjpegCourse:q.gif)]] Créez une feuille de calcul dans !OpenOffice reprenant toutes |
| 69 | ces contraintes et les fonctions de coût. Insérez dans chaque ligne les caractéristiques des |
| 70 | SoC que vous simulez. |
| 71 | |
| 72 | [[Image(MjpegCourse:q.gif)]] Choisissez le meilleur SoC. |
| 73 | |
| 74 | = 4. Compte-Rendu = |
| 75 | |
| 76 | Vous rendrez deux fichiers (pas une archive tar): |
| 77 | * Un rapport nommé `binome0_binome1.pdf` |
| 78 | * La feuille de calcul nommée `binome0_binome1.ods` |
| 79 | |
| 80 | Ces fichiers devront être livrés avant le mardi 20 mars 2007, 18h00 à [MailAsim:nipo Nicolas Pouillon] |