Changes between Version 1 and Version 2 of MjpegCourse/Coproc


Ignore:
Timestamp:
Mar 3, 2007, 12:25:58 AM (17 years ago)
Author:
Nicolas Pouillon
Comment:

Ebauche

Legend:

Unmodified
Added
Removed
Modified
  • MjpegCourse/Coproc

    v1 v2  
    55[[PageOutline]]
    66
    7 TP Précédent: MjpegCourse/Station
     7TP Précédent: MjpegCourse/Multipipe
    88
    99= 0. Objectif =
     
    1212matériel spécialisé dans une architecture matérielle
    1313comportant principalement des processeurs programmables.
    14  
     14
     15Nous allons nous concentrer sur la traduction en matériel de la tâche la plus gourmande
     16en ressources du TCG: la tâche `Idct`.
     17
     18Nous repartirons de la plateforme du [MjpegCourse/Multiproc TP3]: [MjpegCourse/VgmnNoirqMulti VgmnNoirqMulti].
     19Sur la base de cette plateforme à deux processeurs Mips, nous ajouterons un composant dédié au traitement de l'`Idct`.
     20
     21Reprenez les fichiers du TP2:
     22 * La description de la plateforme
     23 * La description de l'application
     24 * Le code des tâches (`Libu` ne gère qu'un seul pipeline et `Split` n'existe pas)
     25
     26[[Image(MjpegCourse:q.gif)]] Pour un déploiement entièrement logiciel, quel est le temps
     27nécessaire pour décoder 25 images ?
     28
     29= 1. Tâche matérielle virtuelle =
     30
     31== 1.1. Déploiement ==
     32
     33Ici, la tâche sera virtuellement matérielle dans le sens où nous utiliserons le code
     34C de notre tâche pour implémenter le comportement matériel de l'`Idct`.
     35
     36Ajoutez une déclaration à la tâche `idct`:
     37{{{
     38idct = TaskModel(
     39                'idct',
     40                infifos = [ 'input' ],
     41                outfifos = [ 'output' ],
     42                impl = [ SwTask( 'idct',
     43                                                 stack_size = 1024,
     44                                                 sources = [ 'src/idct.c' ],
     45                                                 defines = [ 'WIDTH', 'HEIGHT' ] ),
     46                                 Synthetic()
     47                                 ] )
     48}}}
     49L'implémentation `Synthetic()` doit être accompagnée d'une déclaration de tâche logicielle
     50(`SwTask`) et permet la synthèse virtuelle de la tâche. On peut alors déployer la tâche comme si
     51elle était matérielle, son comportement est simulé.
     52
     53[[Image(MjpegCourse:q.gif)]] Avec cette tâche déployée en coprocesseur virtuel, quel est le temps
     54nécessaire pour décoder 25 images ?
     55
     56== 1.2. Précision temporelle ==
     57
     58Pour rendre la tâche matérielle virtuelle plus exacte en temps de simulation, on peut ajouter des directives
     59dans le code source des tâches pour préciser le temps qu'il faudrait pour réaliser la même action en matériel:
     60`srl_busy_cycles` (voir SrlApi).
     61
     62Insérez dans le code de votre `Idct` un temps de traitement de 8 cycles entre la lecture entière d'un bloc et
     63l'écriture du résultat.
     64
     65[[Image(MjpegCourse:q.gif)]] Quel est le temps de simulation nécessaire pour 25 images ?
     66
     67= 2. Tâche matérielle =
     68
     69Maintenant nous allons utiliser un coprocesseur dédié au traitement de l'`Idct`.
     70
     71Remplacez la déclaration `Synthetic()` par une déclaration de coprocesseur matériel `HwTask( IdctCoproc )`.
     72
     73[[Image(MjpegCourse:q.gif)]] Quel est le temps de simulation nécessaire pour 25 images ?
     74
     75[[Image(MjpegCourse:q.gif)]] Qu'en déduisez-vous sur la différence entre les deux possibilités pour tester
     76une implémentation matérielle ?
     77
     78[[Image(MjpegCourse:q.gif)]] Quel intérêt y a-t-il à pouvoir caractériser précisément le temps de traitement
     79d'une tâche matérielle à partir d'un code en C ?
     80
     81= 3. Compte-Rendu =
     82
     83Comme pour les TP précédents, vous rendrez une archive contenant:
     84{{{
     85$ tar tzf binome0_binome1.tar.gz
     86tp5/
     87tp5/rapport.pdf
     88tp5/vgmn_noirq_multi.py
     89tp5/mjpeg/
     90tp5/mjpeg/mjpeg.py
     91tp5/mjpeg/src/
     92tp5/mjpeg/src/iqzz.c
     93tp5/mjpeg/src/idct.c
     94tp5/mjpeg/src/libu.c
     95}}}
     96
     97Cette archive devra être livrée avant le mardi 13 mars 2007, 18h00 à [MailAsim:nipo Nicolas Pouillon]